>>Drew的主页-->个人兴趣

主页

VxWorks

ARM

PowerPC

硬件驱动

网络协议

程序示例

下载

个人兴趣

 

             
个人兴趣: 路径寻优算法

非均匀有理B样条NURBS算法

ARCGIS学习

MapInfo学习

旅游照片

短诗摘录 英文歌 Midi

 

个人兴趣

Drew主要的工作是以嵌入式软件开发为主,这里是除工作以外下班后的兴趣。Drew尽管工作上和算法没有任何联系,不过毕竟研究生时做过曲面造型算法,并独立从底层实实在在(傻乎乎)做了一个曲面造型软件,在数据结构、数据存储和计算机图形学等方面有一些实力,工作后又有数据库开发的经验,再加上多年的嵌入式硬软件开发,这些给了自己很大的优势。当然最重要的是当时对一些算法的兴趣。另外在做算法的过程中也给了自己快乐和自信。

很高兴自己业余时间通过兴趣开发的嵌入式GIS导航、路径诱导算法、GIS信息查询规划等已经在一些科研项目和智能交通方面得到应用。

个人开发部分程序:

公交信息查询系统   自主研发GIS平台TRANS-GIS简介  GIS地图测试程序   K条路算法测试程序

         GPS数据采集及电子地图制作  栅格地图转矢量地图  拼车搭乘动态匹配算法及拼车介绍

曾经接触的几个算法,且都为之痴迷过,有些已经丢掉了,实在可惜,简单整理了一些经验放在这里,与有同好的朋友共享。

路径寻优算法:参与发表的论文、专利和软件著作权列表

     过程记录:

2004.10.12: 最短路径算法是 Drew 最近才开始接触的,起因是在前几个月英国伦敦为德国宝马(BMW)公司的动态路径诱导研究项目做算法测试程序,从而对路径搜索算法产生了极大的兴趣。在此程序的基础上、同时得到北京工业大学交通研究中心陈艳艳老师在专业和算法方面的指导,目前正在逐步扩展针对于交通路网的分析和规划功能。好在软件编程是本人的强项和 读研时积累了一定的算法基础,从几个月前的一点不懂开始做起,到现在已经有声有色了。有时候做的非常辛苦,达到费寝忘餐的程度,编程中经常是兴奋和绝望交织在一起, 经常为一个bug折腾得一夜不睡,绝望得想跳楼;也会为一个问题的解决,兴奋得在屋子里来回绕圈。不过进展很快,也很快乐,纯快乐,没有功利的那种快乐。目前常用的最短 路径算法(Dijkstra, A*,D*,K条路,不交化等)都已程序实现,并加入了许多我们自己的一些想法在里面,效果相当好。下一步是继续测试一些我们新的想法,读入 GIS 地图数据,加入流量分配,遗传算法...,很多东西等着去做呀。真的很希望能这样一直做下去。可是在兴趣和工作之间,换句话说兴趣和生存之间,经常不得不放弃兴趣了,没办法。

2005.7.13: 转眼大半年过去了,尽管中间停了几个月,还是陆续做了MIF文件格式读取接口和邻接关系建立,增加了数据库信息动态实时读取,不交路可靠性分析及系统可靠性计算,最短路径中加入考虑直行、左右转弯方面的内容。程序中的主要算法部分是在实现一些基本算法的基础上,结合各个算法的优点,对算法进行了有效的改进和优化,加入了一些新的计算参数和评价指标,主要来自朋友的算法思路,效果非常好。同时在算法编程实现的过程也会发现算法和想法中存在的问题并加以解决,例如 K条路算法中权重系数的等值下降导致计算迭代次数增加等问题,经过比较、试验最后找出好的解决办法,大大提高了算法的计算效率。

  算法编程不同于其它的程序编程,首先,必须对算法中具体的细节完全理解,设计合理的数据结构,然后是编程调试和测试。如路径诱导中的拐弯的问题,在路径计算中非常重要,都知道通常在交叉口花费的时间比路段上的更多,而右转比直行和左转花费的时间短。 我的数据结构采用了扩展的前向关联结构(extended forward star structure),这一部分是编程中最头痛的部分, 数据结构非常复杂,常常被自己的数据结构搞蒙,比如一个十字路口,一个边到前面左中右三个方向的信息和上一个路口的三个方向信息都要考虑,一个边倒没什么,问题是十字路口的四条边,每条边及相关的三条边和上一个节点都要存储,整个路网就有大量的信息要处理。一旦处理出现问题,搞不清时程序出错还是算法本身有缺陷。查找问题的方式只能是,一张纸一只笔手工计算出每一步的数值,和程序单步执行的结果对比,痛苦不堪。好在这部分完成了,不过感觉实用价值不大,很小的路网,计算量非常大。

2006.1.2:与某计算机公司合作开发手持GPS定位导航仪产品。

2006.8.7: 我的兴趣依然继续,这一段时间因私事请假出国,难得这段时间静下心来做自己感兴趣的东西,尽管一个人在外,没什么收入,可是过的非常充实,每天疯狂的写程序,疯狂的在网上看电影,周末疯狂的出去玩,部分内容可参见我的 博客:编程以外   http://wangdrew.blogcn.com/

2006.12.23:前几个月与某科研单位合作研发了两个交通GIS查询规划软件,通过测试和验收,并获得了两个软件著作权。

2007.5.20: 为某单位做的最优路径搜索算法终于通过了他们的测试,在这个算法中必须考虑道路单向禁行、限行,道路禁止左、右转弯、禁止掉头等实际道路行驶中常见的情况。过去一直想做,只是苦于没有真实的道路数据,所以没有进行下去。这次由于这件事的推动得以 继续。开始时想的非常复杂,程序特别是数据结构改动较大,不过最后其实并没有想象的那样复杂,因为只要转弯延误不考虑和参与计算, 数据结构就不会太复杂,计算量也会大大降低。 最后对最短路径搜索算法进行了部分优化,搜索速度并没有明显的降低,基本达到对方的技术要求,当然如果进一步优化还可以提高搜索速度,不过对于某一区域的路网来说目前的搜索速度基本上足够用了。

GIS程序开发

   由于当时自己做的算法测试程序只能显示地图路段,没有其它的地图显示功能,所以试图采用通常的做法,把算法移植在 MapInfo 或 ARCGIS上,这样可以漂亮一些。花了一些时间进行MapInfo和ARCGIS的二次开发,用VC和Mapbasic编程,尽管算法部分移植到了MapInfo上面成功了,显示和计算都没有问题,不过感觉效果很不理想。第一,运行程序时,系统上必须安装有MapInfo. MapX即使不需安装MapInfo,可是需要带有一些库文件。第二,程序过于笨重,算法速度慢,不如我自己的程序快,且程序修改麻烦,第三,同样要花时间和精力阅读那些接口函数定义。第四,使用不灵活,由于只能通过函数接口进行操作,难于实现自己需要的一些功能,如数据图形动态显示等等。最后,决定放弃使用这些商用GIS工具,自己从底层完全开发自己的GIS程序。

曲面造型(NURBS)算法

曲面造型(NURBS)算法非均匀有理B样条NURBS算法是Drew在学校读研究生时做的,记得当时学《计算机图形学》时,觉得这个算法很难,非常难懂,估计讲这门课的老师也不太懂,所以我们也不问,不想难为他,只要考试让及格就行了。后来做程序时才逐渐清楚起来,主要问题是那些图形算法方面的好书太少了,有些书不但写的或翻译的不好,还有误导作用 ,比如某位清华教授写的书,前后的表达方式的自相矛盾。如果找到一本好的算法书能避免走很多的弯路,Drew 当时就走了不少弯路。觉得北航施法中教授的《计算机辅助几何设计与非均匀有理B样条( CAGD & NURBS )》是最好的。到毕业的时候,曲面造型算法基本上是很清楚了,而且进行了算法的程序实现。曾经很想考博,继续这方面的学习,可是最终不得不放弃。工作以后,也再没有机会做这个算法了,觉得很可惜。

ARC GIS 和MapInfo

ARC GIS 和MapInfo是 Drew 一时兴趣,玩过几天,只能算初学,懂得不多。当时自己纪录的一些笔记,供初学者参考。

 

算法:

路径寻优(最短路算法)

曲面造型(非均匀有理B样条NURBS算法)

地理信息系统 GIS学习笔记 

MapInfo学习笔记

其它:

旅游照片      短诗摘录   英文歌 Midi

 

返回首页