优化模型:matlab多目标规划

news2025/1/23 17:48:39

一、多目标规划

1.1 多目标规划的定义

  多目标规划(Multi-Objective Programming,MOP) 是数学优化中的一类问题。与单目标规划不同,多目标规划有多个目标函数需要优化,这些目标函数通常是相互矛盾的。多目标规划的目标是通过找到一组解,使得各个目标函数在约束条件下都能取得最优值。

1.2 多目标规划的数学模型

对于多个目标函数的情况,向量目标函数表示为
F ( x ) = ( f 1 ( x ) , f 2 ( x ) , ⋯   , f m ( x ) ) T F\left( \boldsymbol{x} \right) =\left( f_1\left( \boldsymbol{x} \right) ,f_2\left( \boldsymbol{x} \right) ,\cdots ,f_m\left( \boldsymbol{x} \right) \right) ^T F(x)=(f1(x),f2(x),,fm(x))T
带有多个约束条件和有界约束的多目标规划的一般形式为
min ⁡ F ( x ) \min F\left( \boldsymbol{x} \right) minF(x)
s . t . { g i ( x ) ⩽ 0 , i = 1 , ⋯   , q h j ( x ) = 0 , j = 1 , ⋯   , p l b ⩽ x ⩽ u b s.t.\left\{ \begin{array}{c} g_i\left( x \right) \leqslant 0, i=1,\cdots ,q\\ h_j\left( x \right) =0, j=1,\cdots ,p\\ lb\leqslant x\leqslant ub\\ \end{array} \right. s.t.gi(x)0,i=1,,qhj(x)=0,j=1,,plbxub

1.3 多目标规划的求解

求解多目标规划的方法通常有:化多目标为单目标、序贯法、NSGA—II等,本文主要介绍最普遍常用的一种方法——把多目标加权合成单目标。此时,多目标规划化成单目标规划的数学模型的形式如下:
min ⁡ x , γ    γ \underset{\boldsymbol{x},\gamma}{\min}\,\,\gamma x,γminγ

s . t . { F ( x ) − w e i g h t ⋅ γ ⩽ g o a l A ⋅ x ⩽ b A e q ⋅ x = b e q c ( x ) ⩽ 0 c e q ( x ) = 0 l b ⩽ x ⩽ u b s.t.\left\{ \begin{array}{c} F\left( \boldsymbol{x} \right) -\boldsymbol{weight}\cdot \gamma \leqslant \boldsymbol{goal}\\ A\cdot \boldsymbol{x}\leqslant b\\ Aeq\cdot \boldsymbol{x}=beq\\ c\left( \boldsymbol{x} \right) \leqslant 0\\ ceq\left( \boldsymbol{x} \right) =0\\ lb\leqslant \boldsymbol{x}\leqslant ub\\ \end{array} \right. s.t.F(x)weightγgoalAxbAeqx=beqc(x)0ceq(x)=0lbxub
其中: F ( x ) F(\boldsymbol{x}) F(x)为目标函数向量; w e i g h t \boldsymbol{weight} weight为各目标相对重要程度的权向量; g o a l \boldsymbol{goal} goal为各个单目标函数值构成的向量。
MATLAB中求解该模型的命令为

[x,fval]=fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlicon)

其中:nonlicon为定义的非线性约束函数。

二、案例分析

利用MALTAB求解如下多目标线性规划问题:
max ⁡ Z 1 = 100 x 1 + 90 x 2 + 80 x 3 + 70 x 4 \max Z_1=100x_1+90x_2+80x_3+70x_4 maxZ1=100x1+90x2+80x3+70x4
min ⁡ Z 2 = 3 x 2 + 2 x 4 \min Z_2=3x_2+2x_4 minZ2=3x2+2x4
s . t . { x 1 + x 2 ⩾ 30 x 3 + x 4 ⩾ 30 3 x 1 + 2 x 3 ⩽ 120 3 x 2 + 2 x 4 ⩽ 48 x i ⩾ 0 , i = 1 , ⋯   , 4 s.t.\left\{ \begin{array}{c} x_1+x_2\geqslant 30\\ x_3+x_4\geqslant 30\\ 3x_1+2x_3\leqslant 120\\ 3x_2+2x_4\leqslant 48\\ x_i\geqslant 0,i=1,\cdots ,4\\ \end{array} \right. s.t.x1+x230x3+x4303x1+2x31203x2+2x448xi0,i=1,,4
MATLAB代码:

clc,clear
A=[-1 -1 0 0
    0 0 -1 -1
    3 0 2 0
    0 3 0 2];
b=[-30 -30 120 48];
c1=[-100 -90 -80 -70];
c2=[0 3 0 2];
%求第一个目标函数值
[x1,g1]=linprog(c1,A,b,[],[],zeros(4,1))
disp("第一个目标函数的最优值:"+(-g1))
%求第二个目标函数值
[x2,g2]=linprog(c2,A,b,[],[],zeros(4,1))
disp("第一个目标函数的最优值:"+(g2))
g3=[g1;g2];%目标goal的值
fun=@(x) [c1;c2]*x;
weight=[1,1];%设置两个目标同样重要
[x,fval]=fgoalattain(fun,rand(4,1),g3,weight,A,b,[],[],zeros(4,1))

求解结果:

在约束条件下,只考虑第一个目标函数时,最优解如下:


在约束条件下,只考虑第二个目标函数时,最优解如下:


若考虑两个目标同样重要,则求得多目标规划的最优解和最优值分别为:

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

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

相关文章

边界判断缺失

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

android开发调用百度地图api实现加载地图和定位

目录 一.踩的一些坑以及解决方法 1.权限声明不要少 2.地图初始化 3.定位问题 (1)监听器注册 (2)定位监听器类MyLocationListener的实现 (3)定位功能的调用 4.android studio连接真机调试问题 二.…

C语言函数篇——strcat()函数

strcat()函数介绍: strcat()函数是C语言中用于连接两个字符串的函数。它将第二个字符串连接到第一个字符串的末尾,并返回第一个字符串的地址。 strcat()函数的语法: char *strcat(char *dest, const char *src); 其中,dest是目标…

pytorch03:transforms常见数据增强操作

目录 一、数据增强二、transforms--Crop裁剪2.1 transforms.CenterCrop2.2 transforms.RandomCrop2.3 RandomResizedCrop2.4 FiveCrop和TenCrop 三、transforms—Flip翻转、旋转3.1RandomHorizontalFlip和RandomVerticalFlip3.2 RandomRotation 四、transforms —图像变换4.1 t…

【JavaScript】浮点数精度问题

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

【MySQL表的增删查改】

文章目录 前言1 Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 2 Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 英语不及格的同学及英语成绩 ( &…

vue 基础学习 一

1. vue 使用快速入门三步走 (1) 新建 HTML 页面&#xff0c;引入 Vue.js文件 1 2 3 4 5 6 7 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Vue.js 入门示例</title> <script src"https://cdn.j…

设计模式:抽象工厂模式(讲故事易懂)

抽象工厂模式 定义&#xff1a;将有关联关系的系列产品放到一个工厂里&#xff0c;通过该工厂生产一系列产品。 设计模式有三大分类&#xff1a;创建型模式、结构型模式、行为型模式 抽象工厂模式属于创建型模式 上篇 工厂方法模式 提到工厂方法模式中每个工厂只生产一种特定…

12.29_黑马数据结构与算法笔记Java

目录 305 旅行商问题 动态规划 实现2 306 旅行商问题 动态规划 实现3 307 分治 概述 308 快速选择算法 分治 309 快速选择算法 数组第k大数 Leetcode215 310 快速选择算法 数组中位数 311 快速幂 分治 312 快速幂 Leetcode50 313 平方根整数部分 Leetcode69-1 314 平方…

从实际工作情况,介绍嵌入式(MCU)软件开发常用(通用)工具

目录 前言 1、代码阅读及编辑工具&#xff08;VSCode、Understand&#xff09; 2、代码对比工具&#xff08;Beyond Compare&#xff09; 3、代码仓库相关工具&#xff08;Git、SVN、Tortoise&#xff09; 4、文本编辑器&#xff08;Notepad&#xff09; 5、电脑文件搜索工…

arkts状态管理使用(@State、@Prop、@Link、@Provide、@Consume、@objectLink和@observed)

一、状态管理 1.在声明式UI中&#xff0c;是以状态驱动视图更新&#xff1a; ①状态&#xff08;State&#xff09;:指驱动视图更新的数据&#xff08;被装饰器标记的变量&#xff09; ②视图&#xff08;View&#xff09;:基于UI描述渲染得到用户界面 注意&#xff1a; ①…

Radar System Pro - Plug Play Solution

Radar System Pro是一款功能多样且可定制的资源,旨在通过功能齐全且易于使用的雷达系统增强您的Unity项目。无论您是在开发第一人称射击游戏、策略游戏还是太空探索模拟器,我们的雷达系统都将为您提供所需的工具,以创建引人入胜且身临其境的体验。 雷达系统是一个模块化资产…

mysql间隙锁demo分析

概述 通常用的mysql都是innodb引擎&#xff1b; 一般在update的时候用id都会认为是给行记录加锁&#xff1b; 在使用非唯一索引更新时&#xff0c;会遇到临键锁&#xff08;范围锁&#xff09;&#xff1b; 临键锁和表中的数据有关&#xff1b; mysq版本:8 隔离级别&#xf…

雨课堂作业整理

第一次作业 1.下列序列是图序列的是&#xff08; &#xff09; A.1&#xff0c;2&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;4&#xff0c;5 B.1&#xff0c;1&#xff0c;2&#xff0c;2&#xff0c;4&#xff0c;6&#xff0c;6 C.0&#xff0c;0&#xff0c;2&am…

解决基于VectorGrid的矢量瓦片Y轴偏移的问题

目录 前言 一、GeoServer的瓦片 1、GeoWebcache缓存配置 2、矢量瓦片本地缓存 3、瓦片访问 二、VectorGrid加载本地瓦片 1、加载关键代码 2、默认模式的问题 3、问题分析 4、tms参数修改 总结 前言 在前面的博文介绍中&#xff0c;在线连接如下&#xff1a;浅谈前端自定义…

AI与数字化映像:颜值开端,功能至上_光点科技

在人工智能的浪潮中&#xff0c;AI数字人的兴起正成为一个不可忽视的现象。随着ChatGPT等生成式AI算法的进步&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;的应用呈现出爆发性增长&#xff0c;不仅在技术圈引起广泛关注&#xff0c;也为元宇宙及其相关产业链带来了…

C++每日一练(8):图像相似度

题目描述 给出两幅相同大小的黑白图像&#xff08;用0-1矩阵&#xff09;表示&#xff0c;求它们的相似度。 说明&#xff1a;若两幅图像在相同位置上的像素点颜色相同&#xff0c;则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。…

非科班,培训出身,怎么进大厂?

今天分享一下我是怎么进大厂的经历&#xff0c;希望能给大家带来一点点启发&#xff01; 阿七毕业于上海一所大学的管理学院&#xff0c;在读期间没写过一行 Java 代码。毕业之后二战考研失利。 回过头来看&#xff0c;也很庆幸这次考研失利&#xff0c;因为这个时候对社会一…

精品Nodejs实现的在线菜谱食谱美食学习系统的设计与实现

《[含文档PPT源码等]精品Nodejs实现的在线菜谱学习系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows…

2023第三届中国高校大数据挑战赛B题代码

任务已完成&#xff0c;聚类效果很好&#xff08;主要在于数据的处理以及特征工程&#xff09;, 需代码si&#xff0c;yuer有限先到先得。