运筹学实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 单纯形法求解线性规划
成绩
实验类型:●验证性实验○综合性实验○设计性实验
实验目的:进一步熟练掌握单纯形法求解线性规划。
实验内容:单纯形法求解线性规划4个
实验原理线性规划单纯形法(线性规划解有四种情形,唯一最优解,无穷多个最解,无界解,无可行解)
实验步骤
1 要求上机实验前先编写出程序代码
2 编辑录入程序
3 调试程序并记录调试过程中出现的问题及修改程序的过程
4 经反复调试后,运行程序并验证程序运行是否正确。
5 记录运行时的输入和输出。
预习编写程序代码:
实验报告:根据实验情况和结果撰写并递交实验报告。
参考程序:
function [xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)
% 单纯形法求解性规划函数。默认标准型人工变量在最前、剩余变量在后构成基本量;
% m1 人工变量的个数;m 基变量的个数; n 所有变量的个数;
% A 约束方程的系数矩阵;
% b 约束方程右端列向量;输出 b 基变量的值;
% c 目标函数的系数。cb 基变量的系数
% 输出 xx 为基变量的下标;
% fm 输出目标函数的值;
% flg 表示解得四种情况;
B0=A(:,1:m); % B0 初始可行基矩阵(单位矩阵);
cb=c(:,1:m);
xx=1:m; % xx 变量的下标;
sgma=c-(cb*B0)*A; % sgma 检验数;
h=-1;
sta=ones(m,1);
for i=1:n
if sgma(i)>0
h=1;
end
end
vv=0;
[msg,mk]=max(sgma);
for i=1:m
if A(i,mk)>0
sta(i)=b(i)/A(i,mk);
else
sta(i)=10000;
end
end
[mst,mr]=min(sta);
if mst==10000
flg='unbounded solution';
fm=inf;
xx=[];
b=[];
h=-1;
vv=1;
AA=[];
else
zy=A(mr,mk)
for i=1:m
if i==mr
for j=1:n
A(i,j)=A(i,j)/zy;
end
b(i)=b(i)/zy;
else
end
end
for i=1:m
if i~=mr
amk=A(i,mk);
b(i)=b(i)-amk*b(mr);
for j=1:n
A(i,j)=A(i,j)-amk*A(mr,j); end
else
end
A;
B1=A(:,1:m); % B1 新基的逆矩阵;
cb(mr)=c(mk);
xx(mr)=mk;
sgma=c-cb*A;
for i=1:n
if sgma(i)>0
h=1;
end
end
end
cb
b
fm=sum(cb*b);
if (h==-1)&(vv~=1)
vv=0;
for i=1:m
if xx(i)<=m1
vv=vv+2;
end
end
if vv>=2;
flg='nofeasibel';
xx=[];
fm=[];
b=[];
vv=1;
AA=[];
end
if vv~=1
AA=A;
ss=size(find(sgma))
ww=ss(2)
if ww==n-m
flg='There is only one solution';
else
flg='There are many solutions';
end
end
end
end
end
end
一. 唯一最优解。
12max 3z x x =+
12122125105014
,0
x x x x x x x +≤⎧⎪+≥⎪⎨≤⎪⎪≥⎩ >> [xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)
Zy=1
cb = 0 3 0
b =40
1
3
zy =1
cb =0 3 0
b =10
4
3
zy =5
cb =1 3 0
b = 2
4
5
ss =1 2
ww =2
xx =4 5 2
b = 2
4
5
fm =14
sgma =-0.2000 0 -1.0000 0 0
AA =0.2000 0 -2.0000 1.0000 0
0 0 1.0000 0 1.0000
0.2000 1.0000 -1.0000 0 0
flg =There is only one solution
二. 无界解。
123
1231323123max 2262220
,,0z x x x x x x x x x x x x x =-+++≥⎧⎪-+≥⎪⎨-≥⎪⎪≥⎩
>> A=[-1 0 0 1 1 1;0 -1 0 -2 0 1;0 0 -1 0 2 -1];b=[6 2 0]';m1=0;m=3;n=6;c=[0 0 0 2 -1 2]
c =0 0 0 2 -1 2
>> [xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)