【matlab 项目工期优化】基于NSGA2/3的项目工期多目标优化(时间-成本-质量-安全)
一 背景介绍
本文分享了一个通用的项目工期优化的案例,决策变量是每个子项目的工期,优化目标是项目的完成时间最小,项目的总成本现值最小,项目的总安全水平最高,项目的总质量水平最高。采用的算法是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博主:蓝色洛特完成
均是个人不成熟的想法及建议,我说的不一定对。
出现任何学术不端行为与本人无关,分享的模型和代码仅供参考学习,如有侵权请后台私信
相关文章:
【matlab 项目工期优化】基于NSGA2/3的项目工期多目标优化(时间-成本-质量-安全)
一 背景介绍 本文分享了一个通用的项目工期优化的案例,决策变量是每个子项目的工期,优化目标是项目的完成时间最小,项目的总成本现值最小,项目的总安全水平最高,项目的总质量水平最高。采用的算法是NSGA2和NSGA3算法。…...
Python考前复习
选择题易错: python3不能完全兼容python2内置函数是python的内置对象之一,无需导入其他模块python中汉字变量合法,如“小李123”合法;但T-C不合法,因为有“-”集合无顺序,不能索引;range(5)[2]…...
虚拟机交叉编译基于ARM平台的opencv(ffmpeg/x264)
背景: 由于手上有一块rk3568的开发板,需要运行yolov5跑深度学习模型,但是原有的opencv不能对x264格式的视频进行解码,这里就需要将ffmpegx264编译进opencv。 但是开发板算力有限,所以这里采用在windows下,安…...
react之错误边界
错误边界实质是指什么 实际上是组件 错误边界捕获什么时候的错误 在渲染阶段的错误 错误边界捕获的是谁的错误 捕获的是子组件的错误 错误边界不能捕获什么错误 1、不能捕获异步代码 2、不能捕获事件处理函数 3、不能捕获服务端渲染 4、不能捕获自身抛出的错误 错误…...
openEuler系统之使用Keepalived+Nginx部署高可用Web集群
Linux系统之使用Keepalived+Nginx部署高可用Web集群 一、本次实践介绍1.1 本次实践简介1.2 本次实践环境规划二、keepalived介绍2.1 keepalived简介2.2 keepalived主要特点和功能2.3 使用场景三、Keepalived和Nginx介绍3.1 Nginx简介3.2 Nginx特点四、master节点安装nginx4.1 安…...
基于图像处理的滑块验证码匹配技术
滑块验证码是一种常见的验证码形式,通过拖动滑块与背景图像中的缺口进行匹配,验证用户是否为真人。本文将详细介绍基于图像处理的滑块验证码匹配技术,并提供优化代码以提高滑块位置偏移量的准确度,尤其是在背景图滑块阴影较浅的情…...
【JavaEE精炼宝库】文件操作(1)——基本知识 | 操作文件——打开实用性编程的大门
目录 一、文件的基本知识1.1 文件的基本概念:1.2 树型结构组织和目录:1.3 文件路径(Path):1.4 二进制文件 VS 文本文件:1.5 其它: 二、Java 操作文件2.1 方法说明:2.2 使用演示&…...
常用排序算法_06_归并排序
1、基本思想 归并排序采用分治法 (Divide and Conquer) 的一个非常典型的应。归并排序的思想就是先递归分解数组,再合并数组。归并排序是一种稳定的排序方法。 将数组分解最小之后(数组中只有一个元素,数组有序);然后…...
14-8 小型语言模型的兴起
过去几年,我们看到人工智能能力呈爆炸式增长,其中很大一部分是由大型语言模型 (LLM) 的进步推动的。GPT-3 等模型包含 1750 亿个参数,已经展示了生成类似人类的文本、回答问题、总结文档等能力。然而,虽然 LLM 的能力令人印象深刻…...
【Linux】:进程创建与终止
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从…...
横截面交易策略:概念与示例
数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…...
4.2 投影
一、投影和投影矩阵 我们以下面两个问题开始,问题一是为了展示投影是很容易视觉化的,问题二是关于 “投影矩阵”(projection matrices)—— 对称矩阵且 P 2 P P^2P P2P。 b \boldsymbol b b 的投影是 P b P\boldsymbol b Pb。…...
23种设计模式之装饰者模式
深入理解装饰者模式 一、装饰者模式简介1.1 定义1.2 模式类型1.3 主要作用1.4 优点1.5 缺点 二、模式动机三、模式结构四、 装饰者模式的实现4.1 组件接口4.2 具体组件4.3 装饰者抽象类4.4 具体装饰者4.5 使用装饰者模式4.6 输出结果: 五、 应用场景5.1 图形用户界面…...
数据结构--单链表实现
欢迎光顾我的homepage 前言 链表和顺序表都是线性表的一种,但是顺序表在物理结构和逻辑结构上都是连续的,但链表在逻辑结构上是连续的,而在物理结构上不一定连续;来看以下图片来认识链表与顺序表的差别 这里以动态顺序表…...
2024攻防演练:亚信安全推出MSS/SaaS短期定制服务
随着2024年攻防演练周期延长的消息不断传出,各参与方将面临前所未有的挑战。面对强大的攻击队伍和日益严格的监管压力,防守单位必须提前进行全面而周密的准备和部署。为应对这一形势,亚信安全特别推出了为期三个月的MSS/SaaS短期订阅方案。该…...
基于java+springboot+vue实现的在线课程管理系统(文末源码+Lw)236
摘要 本文首先介绍了在线课程管理系统的现状及开发背景,然后论述了系统的设计目标、系统需求、总体设计方案以及系统的详细设计和实现,最后对在线课程管理系统进行了系统检测并提出了还需要改进的问题。本系统能够实现教师管理,科目管理&…...
每日一更 EFK日志分析系统
需要docker和docker-compose环境 下面时docker-compose.yaml文件 [rootnode1 docker-EFK]# cat docker-compose.yaml version: 3.3services:elasticsearch:image: "docker.elastic.co/elasticsearch/elasticsearch:7.17.5"container_name: elasticsearchrestart: …...
python类继承和类变量
Python一些类继承和实例变量的使用 定义基类 class APIException:code 500msg "Sorry, error"error_code 999def __init__(self, msgNone):print("APIException init ...")def error_400(self):pass复用基类的属性值 class ClientTypeError(APIExcept…...
js 随机生成整数
随机生成一个唯一的整数 id export const randomId () > { return Date.now() Math.floor(Math.random() * 10000) } 生成随机ID的方法 // 随机生成0 - 9999 export const randomId ()> { return Math.floor(Math.random() * 10000).toString() } // 随机生成0-999之…...
深入Django(七)
Django的数据库迁移系统 引言 在前六天的教程中,我们介绍了Django的基本概念、模型、视图、模板、URL路由和表单系统。今天,我们将讨论Django的数据库迁移系统,它是管理和跟踪数据库变化的关键组件。 Django数据库迁移概述 Django的数据库…...
服务器日志分析实战:用Python追踪HTTP 404错误并可视化异常频率
作为一名爬虫开发者或网站运维人员,服务器日志就像飞机的“黑匣子”——它记录了每个请求的来龙去脉。而404错误(页面未找到)尤其值得关注:它可能是用户输错了网址,可能是你爬虫的URL构造逻辑有漏洞,也可能是网站改版后旧的链接失效了。更严重的是,大量突然涌出的404请求…...
ThinkPad开机报错0183/0253?别慌,手把手教你搞定EFI变量错误(附BIOS重置教程)
ThinkPad开机报错0183/0253?EFI变量错误全面解决方案当你按下ThinkPad的电源键,期待熟悉的开机画面时,屏幕上却突然跳出一串神秘代码——"0183: Bad CRC of Security Settings in EFI Variable"或"0253: EFI Variable Block D…...
量子软件测试的挑战与优化策略
1. 量子软件测试的挑战与机遇量子计算正在从实验室走向实际应用,随之而来的是对可靠量子软件的需求激增。与传统软件不同,量子程序面临三大独特挑战:首先,量子态的叠加性和纠缠性使得测试变得异常复杂。一个n量子比特系统可以同时…...
6款高效降AI率工具 改写实力出众
写论文时反复检测出的AI痕迹总让你提心吊胆?别担心,这里整理了6款真正好用的论文降AI率工具,堪称应对AI生成特征的“得力助手”。它们能有效识别并消除AI生成的痕迹,改写能力出众,帮你快速降低查重率,顺利通…...
武汉国电华美16875kVA串联谐振试验装置,这手活儿细
在超高压变电站和长距离电缆的现场,交流耐压试验是检验设备绝缘的“最后一关”。这位老师傅经手过不少大工程,他说,面对GIS、大型变压器这些“大块头”电容性试品,能不能顺利“过关”,往往就看串联谐振装置顶不顶得住。…...
INT8量化下TVA注意力对齐精度保障方案
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
如何用HsMod解锁炉石传说60+项隐藏功能:终极优化指南
如何用HsMod解锁炉石传说60项隐藏功能:终极优化指南 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx开发的炉石传说功能增强插件,为玩家提供…...
PvZ Toolkit终极指南:三步掌握植物大战僵尸最强修改器
PvZ Toolkit终极指南:三步掌握植物大战僵尸最强修改器 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit是一款专为植物大战僵尸PC版设计的综合修改器工具,能够让你…...
树莓派工业GPIO接口板:电气隔离与电平转换实战指南
1. 项目概述:为什么需要一块工业级GPIO接口板?如果你用树莓派做过一些硬件项目,尤其是涉及到控制继电器、电机或者连接工业设备(比如PLC、变频器)时,大概率踩过这样的坑:直接用树莓派的GPIO引脚…...
Taotoken的稳定性与低延迟在实时对话应用中的实际体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的稳定性与低延迟在实时对话应用中的实际体验 在开发需要快速响应的AI聊天应用时,后端API的稳定性和延迟表现是…...
