预备知识:

单目标规划

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实现相关推荐

  1. 分层目标规划matlab,多目标规划问题Matlab示例_fgoalattain.doc

    多目标规划问题Matlab示例_fgoalattain 多目标规划问题: x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,.. ...

  2. 令人头疼的优化问题——多目标规划问题matlab求解

  3. 多目标规划和最大最小化问题(含lingo解决

    理想点法,线性加权和法(多目标规划) matlab函数fminimax(这个是最大最小化问题) fminimax %% 最大最小化模型 : min{max[f1,f2,···,fm]} x0 = [6 ...

  4. 【数学建模】多目标规划

    多目标规划概念 线性规划只能解决一组线性约束条件下,一个目标的最大或最小值的问题.在实际决策中,衡量方案优劣要考虑多个目标,这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的,也有定 ...

  5. matlab的lb ub,多目标规划matlab程序实现

    以下为<多目标规划matlab程序实现>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 优化与决策 --多目标线性 ...

  6. 数学建模暑期集训15:matlab求解多目标规划模型

    多目标规划模型的求解方法 1.传统优化算法 1.1主要目标法 1.2分层序列法 1.3加权法 1.4理想点法 2.智能优化算法 遗传算法等- 例题实战:MATLAB中多目标遗传算法求解法 通用形式 例 ...

  7. matlab 多目标规划

    多目标规划 clc,clear,prob=optimproblem; x=optimvar('x',2,'LowerBound',0); c1=[-2,-3];c2=[1,2]; a=[0.5,0.2 ...

  8. matlab求解多目标规划问题

    一.多目标优化 有多个目标的最优化问题. 需要衡量每个目标的完成情况,并主观上区分多个目标的正确性,使得整体的完成情况尽量好. 多目标优化问题的数学模型: 多目标规划适用赛题:使xxx最少/多/利润最 ...

  9. 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 ...

最新文章

  1. python numpy数组转换成列表方法 object.tolist()函数
  2. CVPR 2020 《Local-Global Video-Text Interactions for Temporal Grounding》论文笔记
  3. VUE 中 使用 iview Form组件 enter键防止页面刷新
  4. 835 由于安全层无法对远程计算机进行身份验证_vscode 插件Remote-ssh远程wsl调试python
  5. 大数据之_数据采集Flume_架构---Flume工作笔记004
  6. python制作二维码_教你使用Python制作酷炫二维码
  7. 网络是怎样连接的pdf
  8. 学习笔记——激励函数activation func、损失函数loss func
  9. 数字电视复用器中的PCR矫正技术
  10. java数字转换成大写字母
  11. 计算机论文摘要200字模板,设计论文摘要万能模板_论文摘要万能模板_论文摘要200字模板...
  12. codevs2822 爱在心中(tarjan求缩点的度)
  13. 简要分析网络三层架构(核心层、汇聚层、接入层)
  14. 多测师肖sir_高级金牌讲师_面试题
  15. 浙大翁恺老师C语言教程自学笔录-计算机和编程语言
  16. Graphviz绘制链表
  17. word转换成pdf,包括导航目录和图片不变黑
  18. centos7下面php5.6添加postgresql相关扩展【试行】
  19. Android环境配置时遇到问题及解决方案
  20. Skype 2.0.0.63 for Linux

热门文章

  1. 了解苹果自动驾驶“窃密”事件始末,嫌疑人或将面临10年监禁、 25 万美元罚款...
  2. Python如何生成词云(详解)
  3. 2,Java语言基础-Java语言基本程序设计知识
  4. VS中Debug和Realease、及静态库和动态库的区别整理
  5. 云python编译时间短_(第1天)1.2 在线云编辑器:有网络,就能学Python
  6. 格式化或删除的文件 恢复
  7. BZOJ3252 攻略
  8. Nacos如何实现服务自动注册
  9. 移动端页面如何兼容iphone底部的安全区域
  10. 自学python能做哪些副业?我一般不告诉别人