【项目】优化算法设计(三):程序的改进的设想

项目程序需要改进的地方:

1.程序模块化:
     想法是把程序分为3个模块,就是3个dll咯,分别是用户界面,数据处理和优化计算。通过使程序模块化不仅可以实现用户升级,还可以给出接口让后人继续做的时候能够接上继续开发。
     程序分模块还要想到使用设计模式,这样才能使程序能够应对变化,保持稳定。变化点主要是在数据处理和优化计算之间。我考虑了一下,在装配好数据后,使用Creational Patterns创建优化计算的对象(GAOperator),具体是Factory Method 还是Builder,还没具体定下。而优化对象的结构也要进行设计来应对自身的变化,这会使用到Structural Patterns。如果还是像现在那样,选择交叉变异三算子合一的话,可以使用Bridge,它可以实现接口和具体实现的各种衍化。而李文雄老师也提出了给用户选择。他说,现在那个界面只有一个下拉菜单,可以做多几个,例如 交叉算子做一个、变异算子做一个、选择算子做一个,可以让用户组合。如果真的是这样的话,就要用到Facade,使得变化的组成对客户程序是隐藏的。

2.优化算法的改进:
     改进遗传算法的问题上,李文雄老师提出要发挥遗传算法的全局搜索能力,关键就是要保持种群的多样性。要设计好一些机制,使得多样性得以维持。这就要在遗传算法的选择交叉变异三算子上下功夫。他提议可以每当新老种群交替,不要一下子就全都改变,可以在新种群中选择几个适应度低的替换旧种群,或换成随机产生的新个体。
     另为李老师还提出遗传算法运算后的结果展示有可能也改进一下。现在是用表格来显示,他希望用坐标图形来显示,做到能在优化过程中显示适应度的变化过程,就是横坐标是遗传代数,纵坐标是适应度值。这个实现起来可能很容易。我之前在vs2005使用过一个一个商业控件,给他一个DataSet设一下参数就可以出各种各样的图,包括直方图,曲线图,圈图... 我已经把各代的运算结果做成DataSet了,但现在转到vs2008来开发,不知道那个控件还能不能用。也可以是尝试自己写这样的图形控件,不过很有难度,而且时间不多了。

3.商业化的Project插件:
      就是要做好安装包,还有帮助文件的编制。安装包除了我们的程序,还要包括Office PIA和.Net Framework 3.5的打包的。帮助文件要说明一下软件原理和具体的操作。

4.使用算例显示算法优势:
      就想李东南老师的论文那样的。但他的所谓“Project有资源均衡”的优化也是有些勉强。他的做法就是把资源设置为工时类型,并设为累积计算。然后资源强度是使用一个人为100%资源使用率。当一项任务一天需要17人时,就是1700%了。而那些双代号图,资源用量图是他从Project得到结果后再用另一个软件(梦龙网络计划编制系统)一步步画出来的。早知道Project对建筑工程计划编制的支持不是很好,我就不做成Project的插件,而直接做整个软件了。我也有甘特图等那些图形控件,做起来不一定比研究Project文件结构插件做法要慢。
     我已经把他的第一个算例按我的方法做了,等到有空在把另为两个也做,到时就可以用了。
原文地址:https://www.cnblogs.com/alonecat06/p/1096000.html