【精选】实验2 单纯形法求解线性规划

实验2 单纯形法求解线性规划

成绩

专业班级 学号 姓名 报告日期 .

实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握单纯形法求解线性规划。 实验内容:单纯形法求解线性规划4个(题目自选)

实验原理 首先要找到一个初始基本可行解,求出对应的检验数,判断其是否是最优解,如果是就停止计算;否则,就进行迭代找到另一个能使得目标函数值更优的基本可行解,然后再判断其是否是最优解,如此反复进行下去,直到找到最优解或者判断线性规划问题无解为止(线性规划解有四种情形,唯一最优解,无穷多个最解,无界解,无可行解)。

实验步骤

1 要求上机实验前先编写出程序代码 2 编辑录入程序

3 调试程序并记录调试过程中出现的问题及修改程序的过程 4 经反复调试后,运行程序并验证程序运行是否正确。 5 记录运行时的输入和输出。 预习编写程序代码:

实验报告:根据实验情况和结果撰写并递交实验报告。 实验总结: 参考程序

1.编写程序代码:myprgmh.m

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;

while h>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; h=-1; 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=[];

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4