多目标规划以及Matlab实现
预备知识:
单目标规划
Matlab优化工具箱的的相关函数(linprog,fmincon)
线性规划:
linprog
常用调用格式:
x = linprog(f,A,b)
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
[x,fval] = linprog(___)
x = linprog(f,A,b,Aeq,beq,lb,ub) 定义设计变量 x 的一组下界和上界,使解始终在 lb ≤ x ≤ ub 范围内。如果不存在等式,请设置 Aeq = [] 和 beq = []。
[x,fval] = linprog(___) 返回目标函数 fun 在解 x 处的值:fval = f'*x。
上面的调用格式是基于线性规划的标准型来的,任何线性规划都可以转化为标准型
线性规划标准型
例1
% linprog
A=[-2 5 -1;1 3 1];
Aeq=[1 1 1];
lb=[0;0;0];
b=[-10;12];
beq=[7];
f=[-2;-3;5];
[x,fval]=linprog(f,A,b,Aeq,beq,lb,[]);
x,fval=-fval
x_1=6.4286,x_2=0.5714,x_3=0是最优解
最优解的值为f=14.5714
非线性规划:
fmincon
x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
[x,fval] = fmincon(___)
执行最小化时,满足 nonlcon 所定义的非线性不等式 c(x) 或等式 ceq(x)。fmincon 进行优化,以满足 c(x) ≤ 0 和 ceq(x) = 0。如果不存在边界,请设置 lb = [] 和/或 ub = []。
fun:目标函数
x0:自变量的初始值
A,b,Aeq,beq:线性规划标准型的参数,若没有线性约束条件,这里填写[].
lb,ub是列向量,是自变量x的下界和上界,若没有上下界,填写[].
nonlcon:非线性约束条件,是一个含有自变量x的分量的列向量:
创建一个m文件,命名为fun,m
function f=fun(x)
f=x(1)^2+x(2)^2+x(3)^2+8
fun2.m
function [c,ceq]=fun2(x)
c=[-x(1)^2+x(2)-x(3)^2;x(1)+x(2)^2+x(3)^3-20];
ceq=[-x(1)-x(2)^2+2;x(2)+2*x(3)^2-3];
main.m
[X,fval]=fmincon('fun',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')
运行结果
多目标规划:
理论部分:
传统的多目标规划有多种方法,下面我列举3个常用的方法
1.序贯法
序贯法是确定目标函数的重要性次序,根据次序,先求解第一个目标函数最优解对应的解空间,缩小定义域,使得第一个目标函数在当前定义域下的最优解不变差,反复这个过程,在依次求解后续目标函数的解空间,在这里我们保证,前面的目标函数解的最优性不被后面的目标函数影响,这就体现了重要性次序。
目标函数:这里设第i次求解时,定义域为D_i,,第i次求解时,f_i的最优解为f_i^*
第1次求解:
第2次求解:
第k次求解:
直到定义域变为空集
这是一个客观的算法
2.加权法
加权法是对每个目标函数加权处理
这里的约束条件是
线性加权的权重通常需要专家来判定,主观性较强,但是这个模型比较直观,求解也相对简单,确定了权重后,就转化为单目标规划问题,利用前面单目标规划的代码即可解决问题
3.理想点法
多目标规划的每个目标函数都有最优解,我们记录每个目标函数的最优解,每个目标函数的最优解构成的向量称为理想解,重新构造一个目标函数,这个目标函数的目的是使自变量的取值在可行解的范围内,距离理想解最近。
常见的距离是欧氏距离
例题:
fx1=[3;-2];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
[x1,fav1]=linprog(fx1,a,b,[],[],lb,ub);
fx2=[-4;-3];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
[x2,fav2]=linprog(fx2,a,b,[],[],lb,ub);
x0=[1;1];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
ub=[];
x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,a,b,[],[],lb,ub)
f1=-3*x(1)+2*x(2)
f2=4*x(1)+3*x(2)
求解结果:
x =
0.5268
5.6488
f1 =
9.7171
f2 =
19.0537
多目标规划以及Matlab实现相关推荐
- 分层目标规划matlab,多目标规划问题Matlab示例_fgoalattain.doc
多目标规划问题Matlab示例_fgoalattain 多目标规划问题: x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,.. ...
- 令人头疼的优化问题——多目标规划问题matlab求解
- 多目标规划和最大最小化问题(含lingo解决
理想点法,线性加权和法(多目标规划) matlab函数fminimax(这个是最大最小化问题) fminimax %% 最大最小化模型 : min{max[f1,f2,···,fm]} x0 = [6 ...
- 【数学建模】多目标规划
多目标规划概念 线性规划只能解决一组线性约束条件下,一个目标的最大或最小值的问题.在实际决策中,衡量方案优劣要考虑多个目标,这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的,也有定 ...
- matlab的lb ub,多目标规划matlab程序实现
以下为<多目标规划matlab程序实现>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 优化与决策 --多目标线性 ...
- 数学建模暑期集训15:matlab求解多目标规划模型
多目标规划模型的求解方法 1.传统优化算法 1.1主要目标法 1.2分层序列法 1.3加权法 1.4理想点法 2.智能优化算法 遗传算法等- 例题实战:MATLAB中多目标遗传算法求解法 通用形式 例 ...
- matlab 多目标规划
多目标规划 clc,clear,prob=optimproblem; x=optimvar('x',2,'LowerBound',0); c1=[-2,-3];c2=[1,2]; a=[0.5,0.2 ...
- matlab求解多目标规划问题
一.多目标优化 有多个目标的最优化问题. 需要衡量每个目标的完成情况,并主观上区分多个目标的正确性,使得整体的完成情况尽量好. 多目标优化问题的数学模型: 多目标规划适用赛题:使xxx最少/多/利润最 ...
- matlab 求解多目标规划
求解多目标规划 1.理想点法 clc,clear; close all; f=[3,-2];A=[2,3;2,1];b=[18;10];lb=[0;0]; [x,fval]=linprog(f,A,b ...
最新文章
- python numpy数组转换成列表方法 object.tolist()函数
- CVPR 2020 《Local-Global Video-Text Interactions for Temporal Grounding》论文笔记
- VUE 中 使用 iview Form组件 enter键防止页面刷新
- 835 由于安全层无法对远程计算机进行身份验证_vscode 插件Remote-ssh远程wsl调试python
- 大数据之_数据采集Flume_架构---Flume工作笔记004
- python制作二维码_教你使用Python制作酷炫二维码
- 网络是怎样连接的pdf
- 学习笔记——激励函数activation func、损失函数loss func
- 数字电视复用器中的PCR矫正技术
- java数字转换成大写字母
- 计算机论文摘要200字模板,设计论文摘要万能模板_论文摘要万能模板_论文摘要200字模板...
- codevs2822 爱在心中(tarjan求缩点的度)
- 简要分析网络三层架构(核心层、汇聚层、接入层)
- 多测师肖sir_高级金牌讲师_面试题
- 浙大翁恺老师C语言教程自学笔录-计算机和编程语言
- Graphviz绘制链表
- word转换成pdf,包括导航目录和图片不变黑
- centos7下面php5.6添加postgresql相关扩展【试行】
- Android环境配置时遇到问题及解决方案
- Skype 2.0.0.63 for Linux
热门文章
- 了解苹果自动驾驶“窃密”事件始末,嫌疑人或将面临10年监禁、 25 万美元罚款...
- Python如何生成词云(详解)
- 2,Java语言基础-Java语言基本程序设计知识
- VS中Debug和Realease、及静态库和动态库的区别整理
- 云python编译时间短_(第1天)1.2 在线云编辑器:有网络,就能学Python
- 格式化或删除的文件 恢复
- BZOJ3252 攻略
- Nacos如何实现服务自动注册
- 移动端页面如何兼容iphone底部的安全区域
- 自学python能做哪些副业?我一般不告诉别人