鉴于大家对VC与C++类别十分关注,我们编辑小组在此为大家搜集整理了“基于VC研究物流配送车辆优化调度问题”一文,供大家参考学习
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
4.3 算法设计4.3.1 算法流程图 算法流程图如图4-1示。 4.3.2 染色体结构为提高效率,对VSP采用自然数编码方式,即序数编码。 单车场车辆优化调度问题的一条可行线路可编成长度为 子路径1: 配送中心0 →需求点2 →需求点1→需求点3→配送中心0 子路径2: 配送中心0 →需求点4 →需求点6→配送中心0 子路径3: 配送中心0 →需求点5→需求点8→需求点7→配送中心0 4.3.3 约束处理对于VSP这类约束较复杂的优化问题,用遗传算法求解时,需要对约束进行处理。一般有下面几种方法: 1、问题的约束在染色体中表现出来,设计专门的遗传算子,使染色体所表示的解在遗传算法的求解过程中始终保持为可行解。 2、在编码的过程中不考虑约束,而在遗传算法的计算过程中检测得到的染色体相应的解是否可行,若可行,则放入下一代群体中,否则将其舍弃。 3、采用惩罚的方法来处理约束。如果一个染色体对应的解违反了某个约束,试其违反程度给予一定惩罚,使其具有较小的适应度。这样,一些不可行解也有可能进入群体,以保证群体中染色体的数目,使遗传算法得以继续运行。若干代后,不可行解在群体中所占的比例应越来越小,可行解逐渐占据主导地位,并逐渐趋于最优解[5][6]。 1、 载重量的约束处理 上述第一种方法是直接的处理约束的方法,但适用领域有限,而且设计专门的染色体和遗传算子较为困难,能否采用这一方法与问题的特征关系很大;第二种方法只适用于约束简单、可行解易于得到的优化问题,使用价值不高。在此采用罚函数的方法处理约束。 对于一般VSP,使用如下变换将承载量约束式变为目标函数式的一部分: 其中 2、时间窗的约束处理 本文采用软时间窗约束处理,以d表示车辆在任务点处等待损失的单位时间机会成本,e表示车辆在要求时间之后到达单位时间所处以的罚值。 若车辆在之前 4.3.4 适应度函数在有时间窗的车辆优化调度问题中,目标函数值越小越好(即在满足载重量和时间约束的基础上,行车线路的总运距越小越好),而在遗传算法中,个体适应度越大,表示个体的性能越好,因此需要将目标函数转化为适应度函数。本算法采用了如式4-10所示的变换将目标函数转化为适应度函数。 式4-10中 4.3.5 初始种群本算法采用随机生成的方法产生初试种群。 4.3.6 遗传算子本算法采用了最佳保留的轮盘赌复制法进行染色体的复制。 本算法采用最优保留顺序交叉算子行染色体的交叉。 本算法采用改进的反转变异算子进行变异操作。按照概率 1、当随机选取的两点均为0点时,反转变异操作无效,因为此时只是将子路径倒转。 2、当随机选取的两点中有一点是0,而另一点的邻位是0时进行反转操作会产生非法的染色体,在染色体中出现两个0相邻的情况,如图4-2示。
因此在变异操作前先进行判断,以杜绝以上两种情况的发生,改进的反转变异算子执行流程如图4-3示。 4.3.7 控制参数和终止条件1、 群体规模popsize、交叉率 控制参数(包括群体规模popsize、交叉率 2、 终止条件 由于遗传算法具有较大的随机性,这里根据几条启发式的终止条件,给定参数A、X、Y,只要有一条满足就认为算法收敛了。 (1)计算每代群体适应度均值,当均值与最佳染色体适应度的比值大于 (2)记录每代最佳染色体,若染色体连续最佳保持到X代,可终止算法; (3)由于计算时间和机器容量都是有限的,代数不能无限长,故迭代达到规定Y时,可停止计算。 4.4 算法实现在VC环境下采用c++语言依据算法编写了程序,并调试通过 |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |