数学规划模型.docx
《数学规划模型.docx》由会员分享,可在线阅读,更多相关《数学规划模型.docx(47页珍藏版)》请在冰豆网上搜索。
![数学规划模型.docx](https://file1.bdocx.com/fileroot1/2022-10/7/13256b15-f230-4a3b-8cee-f0953b1a25c5/13256b15-f230-4a3b-8cee-f0953b1a25c51.gif)
数学规划模型
数学规划模型
现实世界中广泛存在着一类所谓的优化问题,在一系列既定条件的限制下,如何使所关注的预定目标达到最优,这就是数学规划模型。
本章介绍数学规划中的线性规划、整数规划和非线性规划。
另外介绍多目标规划的序贯解法。
6.1线性规划
线性规划(LinearProgramming简记LP)是运筹学的一个重要分支。
自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实际中的应用日益广泛。
6.1.1线性规划的基本概念
1.线性规划的一般模型
线性规划模型的一般形式为
;
也可以表示为矩阵形式
;
向量形式
;
上面的表达式中,式称为目标函数,式称为约束条件;其中,称其为价值向量(或目标向量);,称其为决策向量;,称其为资源向量;,称其为约束条件的系数矩阵;(),称其为约束条件的系数向量。
从上面的模型可以看出,线性规划的目标函数可以是最大化问题,也可以是最小化问题;约束条件有的是“”,有的是“”,也可以是“”。
在一些实际问题中决策变量可以是非负的,也可以是非正的,甚至可以是无约束(即可以取任何值)。
为了便于研究,在此规定线性规划模型的标准型为
;
2.线性规划解的概念
线性规划所研究的内容是线性代数的应用和发展,属于线性不等式组理论,或者说是高维空间中凸多面体理论。
其基本点就是在满足一定的约束条件下,使预定目标达到最优。
定义6.1对于线性规划模型
(1)满足全部约束条件的决策向量称为可行解;
(2)全部可行解构成的集合(它是维欧氏空间中的点集,而且是一个“凸多面体”)称为可行域;
(3)使目标函数达到最优值(最大值或最小值,并且有界)的可行解称为最优解。
定理6.1当线性规划问题有最优解时,一定可以在可行域的某个顶点上取到。
当有唯一解时,最优解就是可行域的某个顶点。
当有无穷多个最优解时,其中至少有一个解是可行域的一个顶点。
根据定理6.1,线性规划模型的最优解有以下几种情况:
(1)有最优解时,可能有唯一最优解,也可能有无穷多个最优解。
如果最优解不唯一,则最优解一定有无穷多个,不可能为有限个。
最优解对应的目标函数值(最优值)均相等。
(2)没有最优解时,也有两种情形。
一是可行域为空集,即无可行解;二是可行域非空,但目标函数值无界(求最大时无上界,求最小时无下界)。
美国数学家G.B.Dantzig于1947年提出了求解线性规划的单纯形法,给出了一个在凸多面体的顶点中有效地寻求最优解的迭代策略。
如果将凸多面体顶点所对应的可行解称为基本可行解,单纯形法的基本思想就是:
先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。
因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。
即使问题无最优解也可用此法判别。
单纯形的详细计算步骤我们这里就不赘述了,有兴趣的读者可以参阅运筹学的有关书籍。
6.1.2MATLAB求解线性规划
MATLAB优化工具箱中提供了一个求解线性规划的基本函数linprog。
这个函数集中了求解线性规划的常用算法,如单纯形法和内点法等,会根据问题的规模或用户的指定选择算法进行求解。
MATLAB中线性规划模型的标准型为
,
函数linprog的调用格式为
[x,z]=linprog(c,A,b,Aeq,beq,LB,UB)
其中,c对应于上述标准型中的目标向量,A、b对应于不等号约束,Aeq、beq对应于等号约束,LB、UB是决策向量的下界向量和上界向量;返回值x是求得的最优解,z是目标函数的最优值。
例6.1加工一种食用油需要精炼若干种原料油并把它们混合起来。
原料油的来源有两类共5种:
植物油VEG1,植物油VEG2,非植物油OIL1,非植物油OIL2,非植物油OIL3。
购买每种原料油的价格(英镑/吨)如表6.1所示,最终产品以150英镑/吨的价格出售。
植物油和非植物油需要在不同的生产线上进行精炼。
每月能够精炼的植物油不超过200吨,非植物油不超过250吨;在精炼过程中,重量没有损失,精炼费用可忽略不计。
最终产品要符合硬度的技术条件。
按照硬度计量单位,它必须在3~6之间。
假定硬度的混合是线性的,而原材料的硬度如表6.2所示。
为使利润最大,应该怎样指定它的月采购和加工计划。
表6.1原料油价格(单位:
英镑/吨)
原料油
VEG1
VEG2
OIL1
OIL2
OIL3
价格
110
120
130
110
115
表6.2原料油硬度表
原料油
VEG1
VEG2
OIL1
OIL2
OIL3
硬度值
8.8
6.1
2.0
4.2
5.0
解设为每月需要采购的5种原料油吨数,为每月加工的成品油吨数。
(1)目标函数是使净利润
达到最大值。
(2)约束条件分为如下4类:
精炼能力限制
植物油的精炼能力限制:
;
非植物油的精炼能力限制:
。
硬度限制
硬度上限的限制:
;
硬度下限的限制:
。
均衡性限制
.
非负性限制
.
综上所述,建立如下的线性规划模型
,
利用MATLAB软件求解上述线性规划模型时,需要将其改写为MATLAB的标准型:
,
调用linprog函数可求得月采购与生产计划如表6.3所示。
表6.3月采购与生产计划
原料油
VEG1
VEG2
OIL1
OIL2
OIL3
采购量
159.2593吨
40.7407吨
0吨
250吨
0吨
生产量
450吨
利润
英镑
计算的MATLAB程序如下:
clc,clear
c=[110;120;130;110;115;-150];%目标向量
A=[1,1,0,0,0,0;0,0,1,1,1,0;8.8,6.1,2.0,4.2,5.0,-6;-8.8,-6.1,-2.0,-4.2,-5.0,3];
b=[200;250;0;0];Aeq=[ones(1,5),-1];
[x,z]=linprog(c,A,b,Aeq,0,zeros(6,1))%求目标函数的最小值
z=-z%恢复到原问题的最大值
6.1.3LINGO求解线性规划
当线性规划模型中的决策变量是两维或三维时,如果使用MATLAB软件求解,需要做变量替换把决策变量化成一维的,很不方便,而使用LINGO软件直接求解就很方便。
例6.2某基金公司未来5年有四个投资项目可供选择。
项目A:
于每年年初可进行投资,于次年年末完成,投资收益为6%。
项目B:
于第三年年初进行投资,于第五年年末完成,投资收益为16.5%,投资额不超过35万元。
项目C:
于第二年年初进行投资,于第五年年末完成投资,投资收益为21.5%,投资额不超过40万元。
项目D:
于每年的年初可进行投资,并于当年末完成,投资收益为2.35%。
解以代表年份,分别表示四个项目,表示在第年对项目的投资额。
根据给定的条件,对于项目存在变量:
;对于项目存在变量:
;对于项目存在的变量:
;对于项目存在变量:
。
每年可行的投资金额为:
第一年:
;
第二年:
;
第三年:
;
第四年:
;
第五年:
.
该部门每年应把资金全部投出去,手中不应当有剩余的呆滞资金。
第一年:
.
第二年初部门拥有的资金是项目在第一年末回收的本利,于是第二年的投资分配为
.
第三年初部门拥有的资金是项目第一年投资及项目第二年投资中回收的本利总和,于是第三年的资金分配为
.
类似地可得,
第四年:
.
第五年:
.
此外,项目的投资额限制,即
,.
问题是要求在第五年末该部门手中拥有的资金额达到最大,目标函数可表示为
综上所述,建立如下的数学规划模型
s.t.
利用LINGO软件,求得的最优解为
,,,,,,其他,
第5年末本息资金的最大额为121.4031万元。
计算的LINGO程序如下:
model:
sets:
year/1..5/;
item/1..4/;
link(year,item):
x;
endsets
max=1.06*x(4,1)+1.215*x(2,3)+1.165*x(3,2)+1.0235*x(5,4);
x(1,1)+x(1,4)=100;
x(2,1)+x(2,3)+x(2,4)=1.0235*x(1,4);
x(3,1)+x(3,2)+x(3,4)=1.06*x(1,1)+1.0235*x(2,4);
x(4,1)+x(4,4)=1.06*x(2,1)+1.0235*x(3,4);
x(5,4)=1.06*x(3,1)+1.0235*x(4,4);
x(3,2)<40;x(2,3)<35;
end
6.1.4灵敏度分析
灵敏度分析是指对系统因周围条件变化显示出来的敏感程度的分析。
在前面讨论的线性规划问题中,我们都设定是常数,但在许多实际问题中,这些系数往往是估计值或预测值,经常有少许的变动。
例如在模型和中,如果市场条件发生变化,值就会随之变化;生产工艺条件发生改变,会引起变化;也会由于种种原因产生改变。
因此提出这样两个问题:
(1)如果参数中的一个或者几个发生了变化,现行最优方案会有什么变化?
(2)将这些参数的变化限制在什么范围内,原最优解仍是最优的?
当然,有一套关于“优化后分析”的理论方法,可以进行灵敏度分析。
具体参见有关的运筹学教科书。
但在实际应用中,给定参变量一个步长使其重复求解线性规划问题,以观察最优解的变化情况,这不失为一种可用的数值方法,特别是使用计算机求解时。
例6.3有一艘货船,分前、中、后三个舱位,它们的容积与最大允许载重量如表6.4所示。
现有三种货物待运,已知有关数据列于表6.5。
又为了航运安全,要求前、中、后舱在实际载重量上大体保持各舱最大允许载重量的比例关系。
具体要求前舱或后舱分别与中舱之间载重量的比例偏差不超过15%,前舱与后舱之间不超过10%。
问该货轮应装载A、B、C各多少件,能使运费收入为最大?
表6.4最大允许载重量与容积
前舱
中舱
后舱
最大允许载重量(t)
2000
3000
1500
容积(m3)
4000
5400
1500
表6.5三种货物的相关数据
货物
数量(件)
每件体积(m3)
每件重量(t)
每件运费(元)
A
600
10
8
1000
B
1000
5
6
700
C
800
7
5
600
解显然这是一个优化问题。
为了建立适当的优化模型,首先需要确定三个基本要素—决策变量、目标函数和约束条件。
(1)确定决策变量和符号说明
因为A、B、C三种货物在货船的前、中、后舱均可装载,故为方便表达装载策略,不妨令分别代表货物A、B、C,分别代表前、中、后舱。
于是,可设决策变量为装于舱位的第种货物的件数,记分别表示第舱位的最大允许载重量和容积,分别表示第种货物的件数、每件体积、每件重量和每件运费。
(2)确定目标函数
装载于货船前、中、后舱中货物A的件数之和:
;
装载于货船前、中、后舱中货物B的件数之和:
;
装载于货船前、中、后舱中货物C的件数之和:
.
于是,为使运费总收入最大,目标函数应为
.
(3)确定约束条件
前、中、后舱载重量限制为
.
前、中、后舱容积限制为
.
三种货物A、B、C的数量限制为
.
根据航运安全要求,各舱实际载重量大体应满足各舱最大允许载重量的比例关系,且前、后舱分别与中舱之间载重量的比例偏差不超过15%,前、后舱之间不超过10