【matlab 项目工期优化】基于NSGA2/3的项目工期多目标优化(时间-成本-质量-安全)

news2024/11/27 5:35:15

一 背景介绍

本文分享了一个通用的项目工期优化的案例,决策变量是每个子项目的工期,优化目标是项目的完成时间最小,项目的总成本现值最小,项目的总安全水平最高,项目的总质量水平最高。采用的算法是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算法的主要步骤如下:

  1. 初始化种群:生成初始的候选解种群。

  2. 评估适应度:使用目标函数计算每个候选解的适应度。

  3. 非支配排序:将种群中的候选解按照非支配排序进行排序。非支配排序是根据候选解之间的支配关系将它们分成不同的等级。

  4. 计算拥挤度距离:为了保持种群的多样性,NSGA2使用拥挤度距离来度量解的稀疏程度。拥挤度距离是指解周围的密度,较远的解有较高的拥挤度距离。

  5. 选择操作:根据非支配排序和拥挤度距离,选择一部分候选解作为父代解。

  6. 交叉操作:使用交叉算子对父代解进行交叉操作,生成子代解。

  7. 变异操作:使用变异算子对子代解进行变异操作,引入新的解。

  8. 合并种群:将父代解和子代解合并为一个新的种群。

  9. 重复步骤2-8直到满足终止条件。

  10. 输出结果:选择最优的候选解作为最终的解集。

NSGA2算法通过使用非支配排序和拥挤度距离来维护解的多样性,可以找到一系列非支配解,这些解构成了帕累托前沿。这使得NSGA2算法在多目标优化问题中能够提供多个高质量的解供决策者选择。

3.1.2 NSGA3

NSGA-III(Non-dominated Sorting Genetic Algorithm III)是一种多目标优化算法,它是对经典的NSGA-II算法的改进和扩展。

NSGA-III算法的主要思想是将解空间划分为多个参考解集,每个参考解集中都包含了离散化的目标空间上的一组参考解。NSGA-III算法通过借助参考解集来引导种群的演化,从而在多目标优化过程中维持一定的多样性和收敛性。

NSGA-III算法的核心步骤如下:

  1. 初始化种群:随机生成一组初始解,并计算每个解的目标函数值。
  2. 快速非支配排序:根据每个解的目标函数值对种群进行非支配排序,将解划分为多个等级。
  3. 计算拥挤度:为每个等级中的解计算拥挤度,用于评估解的多样性。
  4. 环境选择:根据非支配排序和拥挤度,选择一组优质的解作为父代。
  5. 创建子代:通过交叉和变异操作生成一组新的子代解。
  6. 更新参考解集:将子代解与当前参考解集进行比较,更新参考解集,并筛选出非支配解作为下一代的参考解。
  7. 终止条件判断:检查是否满足终止条件,如果满足则终止算法,否则返回步骤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博主:蓝色洛特完成
均是个人不成熟的想法及建议,我说的不一定对。
出现任何学术不端行为与本人无关,分享的模型和代码仅供参考学习,如有侵权请后台私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1897459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOV++ 详解 | 网络结构、代码解析、YOLOV 论文阅读、初识 VID

前言 代码地址:https://github.com/YuHengsss/YOLOV 本文网络结构按 YOLOV SwinTiny 绘制,不同的模型主要差异在于 Backbone,VID 相关的部分基本相同。 Predict Input 代码基于 vid_demo。首先会读取视频中的所有帧(只能用短视频…

kafka系列之消费后不提交offset情况的分析总结

概述 每当我们调用Kafka的poll()方法或者使用KafkaListener(其实底层也是poll()方法)时,它都会返回之前被写入Kafka的记录,即我们组中的消费者还没有读过的记录。 这意味着我们有一种方法可以跟踪该组消费者读取过的记录。 如前所述,Kafka的一…

自闭症儿童的治疗方法有哪些?

身为星贝育园自闭症儿童康复学校的资深教育者,我深知自闭症谱系障碍(ASD)儿童的教育与治疗需要一个全面、个性化的方案。在星贝育园,我们致力于为孩子们提供一个充满爱与理解的环境,采用多种科学验证的教育方法&#x…

【Linux】动态库的制作与使用

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

asp.net公交司机管理系统-计算机毕业设计源码96696

摘 要 公交司机是公交运输系统中的重要组成部分,他们的管理和运营对于公交运输的正常运行和服务质量起着至关重要的作用。本文提出了一种基于C#(asp.net)的公交司机管理系统。该系统利用计算机技术和网络通信技术,实现了公交司机信…

Ollama:本地大模型运行指南_ollama运行本地模型

Ollama 简介 Ollama 是一个基于 Go 语言开发的可以本地运行大模型的开源框架。 官网:ollama.com/ GitHub 地址:github.com/ollama/olla… Ollama 安装 【一一AGI大模型学习 所有资源获取处一一】 ①人工智能/大模型学习路线 ②AI产品经理入门指南 ③…

【 香橙派 AIpro评测】大语言模型实战教程:香橙派 AIpro部署LLMS大模型实站(保姆级教学)

引言 OrangePi AIpro 这块板子作为业界首款基于昇腾深度研发的AI开发板,一经发布本博主就火速去关注了,其配备的 8/20TOPS澎湃算力是目前开发板市场中所具备的最大算力,可谓是让我非常眼馋啊!这么好的板子那必须拿来用用&#xff…

Java面试八股之如何提高MySQL的insert性能

如何提高MySQL的insert性能 提高MySQL的INSERT性能可以通过多种策略实现,以下是一些常见的优化技巧: 批量插入: 而不是逐条插入,可以使用单个INSERT语句插入多行数据。例如: INSERT INTO table_name (col1, col2) V…

用Python轻松转换PDF为CSV

数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性,在文档分享和打印方面表现出色,尤其适用于报表、调查结果等数据的存储。然而,PDF的非结构化特性限制了其在数据分析领域的应用。相比之下,CS…

AI时代下 AI搜索成“兵家必争之地”

当下,海量信息爆发性增长,用户的搜索需求也从找不到信息转变成找不到“需要的”信息。不过随着AI技术的迅速发展,这个需求将会得到解决,AI搜索也将成为“兵家必争之地”。 在全球范围内,谷歌作为全球最大的搜索引擎公司…

国衍科技——梅雨季节文物保护专家

尊敬的文物保护者们 随着梅雨季节的脚步渐近,湿润的空气和连绵的雨水不仅为我们的生活带来了不便,更为文物保护工作带来了严峻的挑战。在这个季节,文物发霉的风险急剧上升,每一件珍贵的文化遗产都面临着被时间侵蚀的威胁。然而&am…

使用Mybatis批量插入大量数据的实践

前言 在项目开发过程中,我们经常会有批量插入的需求,例如:定时统计任务 但是受限于MySQL中 max_allowed_packet 参数限制,5.7版本默认值为4M,这显然不太符合我们的需求,当然我们也可以通过修改此值来适应…

ChatGPT如何提升论文写作(附指令集合)

先讲前提: ChatGPT无论是3.5还是4.0都存在非常严重的幻觉问题,目前ChatGPT无法替代搜索引擎。 如果你希望得到更加优质的体验,请用GPT-4.0,幻觉问题上比3.5大幅降低 ChatGPT中文版,一站式AI创作平台​aibox365.com …

昇思MindSpore学习笔记4-01生成式--CycleGAN图像风格迁移互换

摘要: 记录了昇思MindSpore AI框架用循环对抗生成网络模型CycleGAN实现图像匹配的方法、步骤。包括环境准备、数据集下载、数据加载和预处理、构建生成器和判别器、优化、模型训练和推理等。 1.模型介绍 1.1模型简介 CycleGAN(Cycle Generative Adversarial Netwo…

Yolo系列——动态卷积

一、为什么要提出动态卷积? 为了更好的将模型部署在边端设备上,需要设计轻量级网络模型。轻量级卷积网络因其较低的运算而限制了CNN的深度(卷积层层数)和宽度(通道数),限制了模型的表达能力&am…

3dmax全景图用什么渲染软件好?渲染100邀请码1a12

全景图是常见的效果图类型,常用于展示大型空间,如展厅、会议室等。全景图的制作需要渲染,下面我介绍几个常用的渲染软件分享给大家。 1、V-Ray:十分流行的渲染引擎,功能强大,它提供了高质量的光线追踪技术…

gitee代码初次上传步骤

ps. 前提是已经下载安装gitee 一、在本地项目目录下空白处右击,选择“Git Bash Here” 二、初始化 git init 三、添加、提交代码(注意add与点之间的空格) git add . git commit -m 添加注释 四、连接、推送到gitee仓库 git remote add …

计算机网络——数据链路层(以太网)

目录 局域网的数据链路层 局域网可按照网络拓扑分类 局域网与共享信道 以太网的两个主要标准 适配器与mac地址 适配器的组成与运作 MAC地址 MAC地址的详细介绍 局域网的mac地址格式 mac地址的发送顺序 单播、多播,广播mac地址 mac帧 如何取用…

C++基石:掌握高效编程的艺术

C 关于命名空间:namespace 上述文档详细介绍了C标准库(Standard C Library)的一些关键约定,这些约定不仅帮助开发者理解如何正确使用库中的功能,也明确了实现者在设计库时的灵活性和限制。下面是对文档中提到的几个要点…

2024-07-05 base SAS programming学习笔记9(variables)

1.在数据集增加累加变量值(SUM) 求和语句(SUM STATEMENT):variableexpression variable是累积求和的变量名,为数值型,默认初始值为0;该variable值则会保留到一个观测 当expression有缺失值,在求…