MATLAB的线性规划问题的敏感性分析Word格式.doc
《MATLAB的线性规划问题的敏感性分析Word格式.doc》由会员分享,可在线阅读,更多相关《MATLAB的线性规划问题的敏感性分析Word格式.doc(8页珍藏版)》请在冰点文库上搜索。
)
A等级耕地
B等级耕地
水稻
11000
9500
9000
大豆
8000
6800
6000
玉米
14000
12000
10000
三.问题假设
根据题意,可以建立线性规划模型,假设决策变量为,表示不同的农作物在第等级耕地上种植的面积。
表2作物计划种植面积(单位:
四.模型建立与分析
1.模型:
minz=cX
S.t.AX
命令:
x=linprog(c,A,b)
2.模型:
Aeq.X=beq
x=linprog(c,A,b,Aeq,beq)
注意:
若没有不等式:
AX存在,则令A=[],b=[].
3.[x,fval]=linprog(.....)左端fval返回解X处的目标函数值。
4.思路分析:
找出约束条件——列出目标函数——作出可行域——求出最优解——敏感性分析——回答实际问题。
5.约束方程如下:
耕地面积的约束:
最低收获量的约束:
并且注意:
则
(1)追求总产量最大时,目标函数为:
(2)追求总产值最大的目标函数为:
可化简为
五.模型建立与求解:
1.对
(1)求解,追求总产量最大时,MATLAB程序如下:
f=[-11000-9500-9000-8000-6800-6000-14000-12000-10000];
A=[100100100;
010010010;
001001001;
-1100000-950000-900000;
0-800000-680000-60000;
00-1400000-1200000-10000];
b=[100300200-190000-130000-350000];
lb=[000000000];
[xoptfxopt]=linprog(f,A,b,[],[],lb,[])
Optimizationterminatedsuccessfully.
xopt=
0.0000
100.0000
300.0000
200.0000
fxopt=-7000000
键入S=-Z
得到原问题的目标函数最大值为S=7000000
2.运行后敏感性分析后的MATLAB程序如下:
从a=0开始,以步长对下列模型求解;
a=0;
while(1.1-a)>
1
c=[-11000-9500-9000-8000-6800-6000-14000-12000-10000];
b=[100+a;
300+a;
200+a;
-190000+a;
-130000+a;
-350000+a];
Aeq=[];
beq=[];
vlb=[0,0,0,0,0,0,0,0,0];
vub=[];
[x,val]=linprog(c,A,b,Aeq,beq,vlb,vub);
a
x=x'
Q=-val
plot(a,Q,'
.'
),holdon
a=a+0.01;
end
xlabel('
a'
),ylabel('
Q'
)
grid
a=0x=000000100300200
Q=7000000
分析整理后结果对比如下:
a=0x=000000100300200Q=7000000
a=0.01x=000000100.01300.01200.01Q=7000360
a=0.02x=000000100.02300.02200.02Q=7000720
a=0.03x=000000100.03300.03200.03Q=7.0011e+006
a=0.04x=000000100.04300.04200.04Q=7.0014e+006
a=0.05x=000000100.05300.05200.05Q=7.0018e+006
a=0.06x=000000100.06300.06200.06Q=7.0022e+006
a=0.07x=000000100.07300.07200.07Q=7.0025e+006
a=0.08x=000000100.08300.08200.08Q=7002880
a=0.09x=000000100.09300.09200.09Q=7.0032e+006
如果不好观测,还可以将a细分为,程序基本不变,只需改变a的步长即可,则运行后图像如下:
观察图像后,最优值随a的参加变化不明显,但总在6.88e+6到6.9e+6与7e+6到7.02e+6两个区间内缓慢增长。
3.对
(2)求解:
追求总产值最大的MATLAB程序为:
f=[-13200-11400-10800-12000-10200-9000-11200-9600-8000];
fxopt=
-6.9000e+006
运行后得到原问题的目标函数最大值为S=6.9000e+006
4.敏感性分析后的MATLAB程序如下:
c=[-13200-11400-10800-12000-10200-9000-11200-9600-8000];
Grid
a=0x=100300200000000Q=6.9000e+006
a=0.01x=100.01300.01200.01000000Q=6.9004e+006
a=0.02x=100.02300.02200.02000000Q=6.9007e+006
a=0.03x=100.03300.03200.03000000Q=6.9011e+006
a=0.04x=100.04300.04200.04000000Q=6.9014e+006
a=0.05x=100.05300.05200.05000000Q=6.9018e+006
a=0.06x=100.06300.06200.06000000Q=6.9021e+006
a=0.07x=100.07300.07200.07000000Q=6.9025e+006
a=0.08x=100.08300.08200.08000000Q=6.9028e+006
a=0.09x=100.09300.09200.09000000Q=6.9032e+006
由上图可看出总产值与敏感系数a成正比例关系。
六.符号约定
(1)Q为总体收益
(2)A为不等式2约束的系数矩阵
(3)b是相应的常量,若无不等式约束,则均用[]代替;
(3)Aeq是等式的约束的系数矩阵,beq是相应的常数列向量,如无约束,则用[]代替;
(4)fval是最优值;
(5)a为敏感变量进行循环。
七.结果分析:
1.敏感系数a对总产量最优值的影响不大。
2.农场A,B,C等级耕地的面积越大,总产值越大,因为由上图可看出总产值与敏感系数a成正比例关系。
3.图像上的每个点代表该a作用时的最优解。
参考文献
[1]王沫然MATLAB6.0与科学计算北京电子工业出版社2001年9月
[2]钱颂迪等运筹学北京清华大学出版社1990年1月
[3]孙洪祥等概率论与随机过程北京北京邮电大学出版社2001年2月
[4]姜启源数学模型北京高等教育出版社1993年8月
[5]王能超计算方法简明教程北京高等教育出版社2004年1月
8