我原来的想法是把这个程序嵌入到Project中,在Project的菜单“工具”下面加一个菜单栏“优化计划”,然后就弹出我做的窗体。这样做我们的程序就跟Project紧密的链接起来,就像Project本身的功能一样。我之前在网上找到一个范例可以很容易完成这个任务。于是我也以为很容易,就跟着做。但做起来才知道没有这么容易。这个范例用到了VSTO技术,在网上看资料后,我知道这个是微软推出的用于更替VBA的技术(李东南老师的好像是用VBA来做的)。但从网上下载的VSTO程序说明只可以做Excel 2003、Outlook 2003、PowerPoint 2003、Visio 2003 以及Word 2003的外接程序,没有Project2003的。在网上找了很久,又说Project2003是可以修改UI的(见UI功能比较的菜单和工具栏列)。这样搞到我自己都很糊涂了,而在Project的问题上我已经花了很多时间了,现在就有个问题了:是先把Project插件这个任务完成一劳永逸,再专心投入到优化算法的设计上;还是先做好优化算法的设计,这项项目核心的工作,再回过头来再做Project的插件问题呢?
李老师在QQ上回复了我的问题,他回复的要点如下:1.遗传算法不是一个固定的算法,是一个不断调整才能达到理想效果的算法。也就是说要处理一个问题可能要经过很多次调试。如果表面工作都做好了(例如插件),那么每次调试改变算法的参数能好很方便,那么自然计算起来比较好。插件中应有一些选项,那么选项的设计应该考虑到算法的需要,例如采用怎样的算子、参数的设置(例如种群大小、交叉率、变异率等等)。
2.现阶段,遗传算法参数的设置还存在很大的问题,也就是说不是一个统一的参数设置就能解决所有的问题,而参数的取值实际上还是需要经验,人工设定。有时候参数设置不同,最后的结果差异很大!
3.即使是书本上的遗传算法其中的某一个算子,也不是一定的。他建议在程序中编制好几种交叉算子,在正式进行计算前让用户采用哪一种交叉算子进行计算。
4.我想我们这个项目的一个目标是用实际工程作为算例,通过遗传算法得到一套优化结果,然后再用其它算法(例如PROJECT)也得到结果,进行比较。当然遗传算法计算是也可以进一步考虑参数的设置对计算结果的影响。
5.插件部分可以制作成为一个安装文件那样,别人通过安装后可以应用,也可以借助这个软件进行进一步的研究!同时软件要有使用说明和原理说明噢!
基于以上几点,他建议我们可以这样考虑,先编制了一个能运行通的算法,能就算了,然后就可以进行插件的设计了,那么在设计插件的时候可以进一步考虑如何改进算法。
他告诉我,有问题再联系他,他希望能先出个初步的成果出来,先看看。