多目标规划概念

线性规划只能解决一组线性约束条件下,一个目标的最大或最小值的问题。在实际决策中,衡量方案优劣要考虑多个目标,这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的,也有定性;有相互补充的,也有相互对立的,线性规划则无能为力。

求解思路

加权系数法——为每一目标赋一个权系数, 把多目标模型转化成单一目标的模型。但困难是要确定合理的权系数,以反映不同目标之间的重要程度。
优先等级法—— 将各目标按其重要程度不同的优先等级,转化为单目标模型。
此外,主要目标法常用。
在目标规划中不提最优解的概念, 只提满意解的概念, 即寻求能够照顾到各个目标, 并使决策者感到满意的解, 由决策者来确定选取哪一个解。缺点是满意解的数目太多而难以将其一一求出。

有关数学概念

正、负偏差变量

绝对(刚性)约束和目标约束

绝对约束是指必须严格满足的等式约束和不等式约束,例如线性规划问题的所有约束条件。不能满足这些约束条件的解称为非可行解,所以它们是硬约束,钢性约束。

目标约束是目标规划特有的,可把约束右端项看作要追求的目标值。在达到此目标值时允许发生正或负偏差,因此在这些约束中加入正、负偏差变量,它们是软约束,柔性约束。

正负偏差变量的作用:可将绝对约束通过添加正、负偏差变量的方式转化为柔性约束。

例:
条件1:产品I的产量不大于产品II;
条件2:应尽可能充分利用设备, 但不希望加班;
条件3:应尽可能达到并超过计划利润指标56万元;

硬性约束:
x1<=x2;
x1+2x2<=10;
z=8
x1+10*x2;

通过添加正负偏差变量转化为柔性约束:


优先因子(优先等级)与权系数

一般而言,要求排在前面的优先考虑,优先级更高,优先因子更大。

目标规划的目标函数

与线性规划的目标函数构造不同,目标规划方法的目标函数(准则函数)是按各目标约束的正、负偏差变量,并赋于相应的优先因子和权系数而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值。因此目标规划的目标函数只能是所有偏差变量的加权和。其基本形式有三种。

(1)第i个目标要求恰好达到目标值,即正、负偏差变量都要尽可能地小

(2)第i个目标要求不超过(不大于)目标值, 即允许达不到目标值,就是正偏差变量要尽可能地小

(3)第i个目标要求超过(不小于)目标值, 即超过量不限, 但必须是负偏差变量要尽可能地小

目标规划的一般数学模型



建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它们都具有一定的主观性和模糊性,可以用专家评定法给以量化。

目标规划的续贯算法

根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题, 然后再依次求解。
注意:求下一级目标, 之前的目标规划全部作为约束条件。

所有目标一个一个的求,求出前面的目标后,在后面目标的求解中将前面目标的结果作为刚性约束。

例:某企业生产甲、乙两种产品,需要用到A,B,C三种设备,关于产品的赢利与使用设备的工时及限制如表2 所示。问该企业应如何安排生产,才能达到下列目标。
(1)力求使利润指标不低于1500 元;
(2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持1:2;
(3)设备A为贵重设备,严格禁止超时使用;
(4)设备C可以适当加班,但要控制;设备B既要求充分利用,又尽可能不加班。在重要性上,设备B是设备C的3 倍。

解:由条件分析,得:
设备A是刚性约束, 其余是柔性约束;
首先, 最重要的指标是企业的利润, 因此将它的优先级列为第一级;
其次, 甲、乙两种产品的产量保持1:2的比例, 列为第二级;
再次, 设备B,C的工作时间要有所控制, 列为第三级;在第三级中, 设备B的重要性是设备C的三倍, 因此它们的权重不一样, 设备B前的系数是设备C前系数的3倍。

多目标规划的Lingo解法

序贯算法中每个单目标问题都是一个线性规划问题, 可以使用
Lingo软件进行求解。

以上例为例,利用lingo求解如下:

第一级:

model:
sets:
variable/1,2/:x;
s_con_num/1..4/:g,dplus,dminus; !目标约束项数;
s_con(s_con_num,variable):c;
!dplus=d+,dminus=d-,目标约束系数c=c(i,j);
endsets
data:
g=1500 0 16 15;c=200 300 2 -1 4 0 0 5; !默认按行赋值;
enddata
min=dminus(1); !一级目标函数;
2*x(1)+2*x(2)<=12;
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j)+dminus(i)-dplus(i))=g(i););
@for(variable:@gin(x)); !变量取整约束;
end

第二级:

model:
sets:
variable/1,2/:x;
s_con_num/1..4/:g,dplus,dminus;
s_con(s_con_num,variable):c;
endsets
data:
g=1500 0 16 15;c=200 300 2 -1 4 0 0 5;
enddata
min=dplus(2)+dminus(2); !二级目标函数;
2*x(1)+2*x(2)<=12;
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j)+dminus(i)-dplus(i))=g(i););
dminus(1)=0; !一级目标约束;
@for(variable:@gin(x));
end

第三级:

model:
sets:
variable/1,2/:x;
s_con_num/1..4/:g,dplus,dminus;
s_con(s_con_num,variable):c;
endsets
data:
g=1500 0 16 15;c=200 300 2 -1 4 0 0 5;
enddata
min=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数;
2*x(1)+2*x(2)<=12;
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i););
dminus(1)=0;dplus(2)+dminus(2)=0; !一、二级目标约束;
@for(variable:@gin(x));
end

若三个阶段在一起求:

model:
sets:
level/1..3/:p,z,goal; !三个目标;
variable/1,2/:x;
s_con_num/1..4/:g,dplus,dminus;
s_con(s_con_num,variable):c;
h_con_num/1/:b;
h_con(h_con_num,variable):a;
obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; !权重;
endsets
data:
ctr=?;
goal=? ? 0;
b=12;
a=2 2;
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
wplus=0 1 3 1;
wminus=1 1 3 0;
enddata
min=@sum(level:p*z);
@for(level(i)|i#ne#ctr:p(i)=0);
@for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)*dminus(j)););
@for(h_con_num(i):@sum(variable(j):a(i,j)*x(j))<=b(i););
@for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i););
@for(level(i)|i#lt#@size(level):@bnd(0,z(i),goal(i)));
@for(variable:@gin(x));
end

多目标规划的matlab解法

通式总结:


fgoalattain()函数的用法:
x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fgoalattain(problem)
[x,fval] = fgoalattain(___)
[x,fval,attainfactor,exitflag,output] = fgoalattain(___)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(___)

例:求解多目标线性规划问题

(1)定义目标函数:

function F=Fun16_5(x)
F=[-100*x(1)-90*x(2)-80*x(3)-70*x(4);3*x(2)+2*x(4)];
end

(2)goal由两个目标函数分别求出目标值合并而成;weight由abs(goal)取定

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,goal1]=linprog(c1,a,b,[],[],zeros(4,1))
[x2,goal2]=linprog(c2,a,b,[],[],zeros(4,1))
goal=[goal1;goal2]
[x,fval]=fgoalattain('Fun16_5',rand(4,1),goal,abs(goal),a,b,[],[],zeros(4,1))

【数学建模】多目标规划相关推荐

  1. 数学建模——多目标规划模型(智能优化算法NSGA-II)

    摘要 本篇笔记对数学建模中常见的多目标规划问题提供了解法:在建立传统的多目标规划的常用模型的基础上,使用智能优化算法对多目标规划问题进行求解,通过Pareto Front直观展现非劣解的分布情况,以解 ...

  2. 数学建模(3.9)多目标规划

    数学建模(3.9)多目标规划 理解 多目标规划跟一般的规划问题有所不同,多目标规划通常是要求学生做出满足各个优先度要求的最佳抉择.衡量出尽量满足所有需求而得出使得目标最优(如收益最大)的方案. 由于多 ...

  3. 数学建模——lingo实现多目标规划

    数学建模--lingo实现多目标规划 某单位领导在考虑本单位职工的升级调资方案时,要求相关部门遵守以下的规定: (1)年工资总额不超过1500000元: (2)每级的人数不超过定编规定的人数: (3) ...

  4. [数学建模]最大最小化模型多目标规划问题

    目录 一.最大最小化模型 1.一般数学模型 2.典型例题 3.模型的求解 二.多目标规划问题 1.多目标规划问题概述 2.典型例题 3.代码块 一.最大最小化模型 1.一般数学模型 2.典型例题 %% ...

  5. 袁新生《LINGO和Excel在数学建模中的应用》

    内容介绍 本书深入浅出地介绍了LINGO的基础知识.用LINGO语言描述现实问题的方法和用Excel处理数据的方法,重点是这两种软件在解决各种优化问题以及在数学建模中的应用,通过丰富的实例介绍了把实际 ...

  6. 【数学建模】线性规划模型MATLAB求解(最优化)

    文章目录 一.算法介绍 二.适用问题 三.算法总结 1.可以转化为线性规划的问题 四.应用场景举例 1. 例1.1: 2. 解: 2. 例1.2: 2. 解: 五.MATLAB操作 六.实际案例(投资 ...

  7. 数学建模及其算法概述

    一.数学模型的分类 1. 按模型的数学方法分: 几何模型.图论模型.微分方程模型.概率模型.最优控制模型.规划论模型.马氏链模型等. 2. 按模型的特征分: 静态模型和动态模型,确定性模型和随机模型, ...

  8. 数学建模中常用的方法

    数学建模中常用的方法:类比法.二分法.差分法.变分法.图论法.层次分析法.数据拟合法.回归分析法.数学规划(线性规划,非线性规划,整数规划,动态规划,目标规划).机理分析.排队方法.对策方法.决策方法 ...

  9. 数学建模1(历年问题与模型)

    数学问题 数学模型 程序情况 求解工厂生产总费用最小 LP模型 谢金鑫优化建模与LINGO\program\新建文件夹\ch03 分组匹配效率最高问题   同上 分组匹配效率最高问题   同上 二次规 ...

  10. 2021年高教社杯全国大学生数学建模竞赛赛题C题 生产企业原材料的订购与运输 分析、思路与参考文献!!(关注持续更新!!)

    2021 年高教社杯全国大学生数学建模竞赛题目 C 题 生产企业原材料的订购与运输 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料, 总体可分为 A,B,C 三种类型.该企业每 ...

最新文章

  1. Linux C编程--进程介绍7--综合应用实例
  2. python3数据类型:Tuple(元组)
  3. Faster RCNN代码理解(Python) ---训练过程
  4. input发送a.jax_JAX-RS 2.0:自定义内容处理
  5. Java的@Serial批注
  6. [react] React Intl是什么原理?
  7. 报错,o.h.engine.jdbc.spi.SqlExceptionHelper : Data truncation: Data too long for column ‘verify_msg‘
  8. 斯威夫特山地车_斯威夫特枚举
  9. win10自带快速截图方法
  10. 查看VS2017编译器 cl.exe 位置
  11. 计算机应用基础实践试题,计算机应用基础实践环节考试试题(一)
  12. python做鼠标自动移动_Python实现鼠标自动在屏幕上随机移动功能
  13. 君康人寿2019年排名_2019中国保险公司竞争力报告出炉 君康人寿盈利能力排名第二...
  14. 数据分析案例-航空公司客户价值分析(聚类)
  15. 关于soundfile写音频是报错raise RuntimeError(prefix + _ffi.string(err_str).decode(‘utf-8‘, ‘replace‘))
  16. fedora安装 设置基础软件仓库时出错
  17. 什么是多尺度密集网络 - MSDNet ?
  18. pythonnamedtuple定义类型_python namedtuple的使用
  19. 虚拟机开启及简单的系统命令
  20. 电脑突然断电蓝屏导致Git错误的一种解决办法

热门文章

  1. Fastdata极数:2020年央视《新闻联播》数据报告
  2. 算法学习(九):回溯算法
  3. Python查询12306车次信息
  4. python + selenium 爬取12306所有车站车次数据
  5. Python遥感图像处理应用篇(十)(续):使用EVI指数批量计算叶面积指数LAI
  6. WinForm(十五)窗体间通信
  7. 【C++Primer5】第一章的练习题及答案
  8. 微信小程序 nodejs+vue网上购物商城系统
  9. win10域用户安装程序时总是弹出用户账户控制
  10. 通宵熬夜不伤身体的技巧和注意事项