2实验1 单纯形法求解线性规划.docx
《2实验1 单纯形法求解线性规划.docx》由会员分享,可在线阅读,更多相关《2实验1 单纯形法求解线性规划.docx(13页珍藏版)》请在冰豆网上搜索。
2实验1单纯形法求解线性规划
实验1单纯形法求解线性规划
成绩
专业班级学号姓名报告日期2012.4.5
实验类型:
●验证性实验○综合性实验○设计性实验
实验目的:
进一步熟练掌握单纯形法求解线性规划。
实验内容:
单纯形法求解线性规划4个
实验原理线性规划单纯形法(线性规划解有四种情形,唯一最优解,无穷多个最解,无界解,无可行解)
实验步骤
1要求上机实验前先编写出程序代码
2编辑录入程序
3调试程序并记录调试过程中出现的问题及修改程序的过程
4经反复调试后,运行程序并验证程序运行是否正确。
5记录运行时的输入和输出。
预习编写程序代码:
实验报告:
根据实验情况和结果撰写并递交实验报告。
参考程序
(1)实验原理
(a)当所有sgma<=0,并且基变量中没有人工变量,非基变量的sgnm均不为0,此时方程对应的唯一解
(b)当所有的sgma<=0,并且基变量中没有人工变量,非基变量中有sgma=0的,此时方程对应的无穷多解
(c)当所有的sgma<=0,并且基变量中有人工变量,此时方程对应的是无可行解情况
(d)存在一个变量的sgma>0,并且p<0,则此时对应方程为无界解
(二)编写程序代码
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);
fori=1:
n
ifsgma(i)>0
h=1;
end
end
vv=0;
whileh>0
[msg,mk]=max(sgma);
fori=1:
m
ifA(i,mk)>0
sta(i)=b(i)/A(i,mk);
else
sta(i)=10000;
end
end
[mst,mr]=min(sta);
ifmst==10000
flg='unboundedsolution';
fm=inf;
xx=[];
b=[];
h=-1;
vv=1;
AA=[];
else
zy=A(mr,mk)
fori=1:
m
ifi==mr
forj=1:
n
A(i,j)=A(i,j)/zy;
end
b(i)=b(i)/zy;
else
end
end
fori=1:
m
ifi~=mr
amk=A(i,mk);
b(i)=b(i)-amk*b(mr);
forj=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;
h=-1;
fori=1:
n
ifsgma(i)>0
h=1;
end
end
end
cb
b
fm=sum(cb*b);
if(h==-1)&(vv~=1)
vv=0;
fori=1:
m
ifxx(i)<=m1
vv=vv+2;
end
end
ifvv>=2;
flg='nofeasibel';
xx=[];
fm=[];
b=[];
vv=1;
AA=[];
end
ifvv~=1
AA=A;
ss=size(find(sgma))
ww=ss
(2)
ifww==n-m
flg='Thereisonlyonesolution';
else
flg='Therearemanysolutions';
end
end
end
end
end
end
(1)
>>m1=0
m1=
0
>>m=3
m=
3
>>n=5
n=
5
>>A=[10012;01040;00104]
A=
10012
01040
00104
>>b=[8;16;12]
b=
8
16
12
>>c=[00023]
c=
00023
>>[xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)
zy=
4
cb=
003
b=
2
16
3
zy=
1
cb=
203
b=
2
8
3
zy=
2
cb=
203
b=
4
4
2
ss=
12
ww=
2
xx=
435
b=
4
4
2
fm=
14
sgma=
-1.5000-0.1250000
AA=
00.250001.00000
-2.00000.50001.000000
0.5000-0.1250001.0000
flg=
Thereisonlyonesolution有唯一解
>>m1=0
m1=
0
>>m=2
m=
2
>>n=4
n=
4
>>A=[10-11;01-0.51]
A=
1.00000-1.00001.0000
01.0000-0.50001.0000
>>b=[1;2]
b=
1
2
>>c=[0022]
c=
0022
>>[xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)
xx=
[]
b=
[]
fm=
Inf
sgma=
0022
AA=
[]
flg=
unboundedsolution无界解
>>m1=2
m1=
2
>>m=2
m=
2
>>n=6
n=
6
>>A=[101-1-10;01-310-1]
A=
101-1-10
01-310-1
>>b=[0;3]
b=
0
3
>>c=[-1000-10001100]
c=
-1000-10001100
>>[xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)
zy=
1
cb=
-10001
b=
3
3
xx=
[]
b=
[]
fm=
[]
sgma=
0-1-19960-1000-999
AA=
[]
flg=
nofeasibel无可行解
>>m1=0
m1=
0
>>m=2
m=
2
>>n=5
n=
5
>>A=[10-113;0112410]
A=
10-113
0112410
>>b=[20;90]
b=20
90
>>c=[00-5513]
c=
00-5513
>>[xx,b,fm,sgma,AA,flg]=myprgmh(m1,m,n,A,b,c)
zy=
3
cb=
130
b=
6.6667
23.3333
zy=
0.3333
cb=
50
b=
20.0000
10.0000
ss=
12
ww=
2
xx=
42
b=
20.0000
10.0000
fm=
100.0000
sgma=
-5000-2
AA=
1.00000-1.00001.00003.0000
-4.00001.000016.00000-2.0000
flg=
Therearemanysolutions有无穷解