zoukankan      html  css  js  c++  java
  • 【项目】优化算法设计(三):程序的改进的设想

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

    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文件结构插件做法要慢。
         我已经把他的第一个算例按我的方法做了,等到有空在把另为两个也做,到时就可以用了。
  • 相关阅读:
    [hive]case 语句中字符串匹配
    shell-删除指定时间前的文件
    tensorflow expand_dims和squeeze
    nexus建立maven仓库私服及Snapshots、release的版本管理
    FileChannel指南
    java8关于时间的新特性
    java程序加到系统托盘的方法
    java程序 避免重复启动的方法
    httpClient 进行get请求
    springboot 多线程的使用
  • 原文地址:https://www.cnblogs.com/alonecat06/p/1096000.html
Copyright © 2011-2022 走看看