一 背景介绍
本文分享了一个通用的项目工期优化的案例,决策变量是每个子项目的工期,优化目标是项目的完成时间最小,项目的总成本现值最小,项目的总安全水平最高,项目的总质量水平最高。采用的算法是NSGA2和NSGA3算法。并设计了GUI界面。最后对比两个算法的优化结果,计算IGD,HV等多目标优化的指标来评估不同算法的优化效果,并通过熵权法,TOPSIS等算法从pareto解集中选择合适的方案进行展示。
二 模型介绍
2.1目标函数
本文主要是考虑:①项目的完成时间,②项目的总成本现值,③项目的质量水平和④项目的安全水平,四个目标函数的表达式分别为:
2.1.1目标函数1:项目的完成时间
2.1.2目标函数2:项目的总成本现值
2.1.3 目标函数3:项目的总质量水平
2.1.4目标函数4:项目的总安全水平
2.2约束条件
三 算法介绍
3.1 多目标优化问题
首先本文是一个多目标优化的问题,所谓多目标优化是指在优化问题中同时考虑多个目标函数的最优解。在多目标优化问题中,存在多个冲突的目标函数,而不是只有一个单一的目标函数。多目标优化的目标是找到一组解,使得这组解在所有目标函数上都能达到最优值,而不是只在其中一个目标函数上达到最优值。
多目标优化问题常见于现实生活中的复杂系统中,例如工程设计、经济规划、交通调度等领域。在这些问题中,往往需要综合考虑多个因素,如成本、效率、可行性等,以便找到一个平衡的解。
多目标优化通常涉及到多个决策变量和约束条件,因此相比于单目标优化问题,多目标优化问题更加困难和复杂。解决多目标优化问题的方法包括多目标遗传算法、多目标粒子群优化算法、多目标蚁群算法等。这些方法旨在通过迭代搜索和评估解的集合,逐步逼近真正的最优解集合,从而求解多目标优化问题。
3.2 多目标优化算法
常见的多目标优化算法有NSGA2/3 MOEAD MOPSO 等等,本文使用NSGA2/3对问题进行求解,并使用IGD,HV,等指标来评估算法的性能。
3.2.1 NSGA2
NSGA2(Non-dominated Sorting Genetic Algorithm II)是一种用于多目标优化问题的进化算法。它是基于遗传算法的一种改进,旨在解决多目标优化问题中非支配排序和多样性维持的问题。
NSGA2算法的主要步骤如下:
初始化种群:生成初始的候选解种群。
评估适应度:使用目标函数计算每个候选解的适应度。
非支配排序:将种群中的候选解按照非支配排序进行排序。非支配排序是根据候选解之间的支配关系将它们分成不同的等级。
计算拥挤度距离:为了保持种群的多样性,NSGA2使用拥挤度距离来度量解的稀疏程度。拥挤度距离是指解周围的密度,较远的解有较高的拥挤度距离。
选择操作:根据非支配排序和拥挤度距离,选择一部分候选解作为父代解。
交叉操作:使用交叉算子对父代解进行交叉操作,生成子代解。
变异操作:使用变异算子对子代解进行变异操作,引入新的解。
合并种群:将父代解和子代解合并为一个新的种群。
重复步骤2-8直到满足终止条件。
输出结果:选择最优的候选解作为最终的解集。
NSGA2算法通过使用非支配排序和拥挤度距离来维护解的多样性,可以找到一系列非支配解,这些解构成了帕累托前沿。这使得NSGA2算法在多目标优化问题中能够提供多个高质量的解供决策者选择。
3.1.2 NSGA3
NSGA-III(Non-dominated Sorting Genetic Algorithm III)是一种多目标优化算法,它是对经典的NSGA-II算法的改进和扩展。
NSGA-III算法的主要思想是将解空间划分为多个参考解集,每个参考解集中都包含了离散化的目标空间上的一组参考解。NSGA-III算法通过借助参考解集来引导种群的演化,从而在多目标优化过程中维持一定的多样性和收敛性。
NSGA-III算法的核心步骤如下:
- 初始化种群:随机生成一组初始解,并计算每个解的目标函数值。
- 快速非支配排序:根据每个解的目标函数值对种群进行非支配排序,将解划分为多个等级。
- 计算拥挤度:为每个等级中的解计算拥挤度,用于评估解的多样性。
- 环境选择:根据非支配排序和拥挤度,选择一组优质的解作为父代。
- 创建子代:通过交叉和变异操作生成一组新的子代解。
- 更新参考解集:将子代解与当前参考解集进行比较,更新参考解集,并筛选出非支配解作为下一代的参考解。
- 终止条件判断:检查是否满足终止条件,如果满足则终止算法,否则返回步骤2。
NSGA-III算法的特点是可以在多目标优化问题中保持较好的收敛性和多样性。通过引入参考解集来指导种群的演化,NSGA-III算法可以保证种群在不同的目标空间区域都有合适的覆盖,从而有效平衡了收敛性和多样性之间的冲突。
总的来说,NSGA-III算法是一种强大的多目标优化算法,它在实际应用中已被广泛使用,并取得了良好的效果。
3.3 pareto最优
多目标优化对比单目标优化的最大差别体现在,单目标优化得到的是一个确定的解,而多目标优化得到的互不支配的pareto最优解集合。
Pareto解是多目标优化问题中的一种解决方案,它是指在多个冲突的目标函数下无法再进行优化的解。在多目标优化中,常常存在冲突的目标函数,即某个目标函数的优化会导致其他目标函数的劣化。Pareto解就是无法在同时优化多个目标函数的情况下找到更好的解决方案。Pareto解也被称为非支配解,因为它在所有目标函数中都是最优的,无法被其他解所支配。在多目标优化问题中,我们常常希望找到尽可能多的Pareto解,从中选择最合适的解决方案。
四 算例分析
4.1 项目流程
本文研究的项目的流程如下图:
4.2项目数据
项目数据通过excel直接读取
4.3 参数设置
五 结果演示
5.1 NSGA2优化结果
5.2 NSGA3优化结果
5.3 GUI界面
5.3.1 登录界面
5.3.2 数据读取和参数设置界面
5.3.3 结果显示界面
5.3.4 查看方案界面
六 项目分享
提供①项目源码分享,②项目辅导答疑和③项目代码定制,欢迎各位朋友咨询。
> =免责声明=
感谢知识付费 建模编程不易 整理资料不易!
相关代码撰写、优化、封装、原创由CSDN博主:蓝色洛特完成
均是个人不成熟的想法及建议,我说的不一定对。
出现任何学术不端行为与本人无关,分享的模型和代码仅供参考学习,如有侵权请后台私信