Matlab 单形法原理,实验报告(单纯形法的matlab程序).doc

实验报告(单纯形法的matlab程序)

实验一:线性规划单纯形算法

一、实验目的

通过实验熟悉(求极小问题),首先给定一个初始基本可行解。设初始基为B,然后执行如下步骤:

(1).解,求得,

(2).计算单纯形乘子, ,得到,对于非基变量,计算判别数,令 ,R为非基变量集合

若判别数 ,则得到一个最优基本可行解,运算结束;否则,转到下一步

(3).解,得到;若,即的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4).

(4).确定下标r,使为离基变量。为进基变量,用替换,得到新的基矩阵,返回步骤(1)。

对于极大化问题,可以给出完全类似的步骤,只是确定进基变量的准则不同。对于极大化问题,应令

四、计算框图

五、计算程序

function [x,f]=zuiyouhua(A,b,c)

size(A)=[m,n];

i=n+1:n+m;%基变量集合,后面m个松弛变量为初始基变量;

N=1:n;%初始非基变量;

B=eye(m,m);

xb=b';

xn=zeros(m,1);

f1=0;

w=zeros(1,m);

z=-c;%初始判别数;

flag=1;

while(1)

[a,k]=max(z);%x(k)为进基变量;

if a<=0

flag=0;

break

else

y=inv(B)*A(:,k)

if y<=0

flag=0;

fprintf('不存在最优解')

break

end

t=find(y>0);

[a,r1]=min(b1(t)./y(t))

r=t(r1); %基变量中第r个变量为退基变量;

i(:,r)=k

B(:,r)=A(:,k);%换基,即将原基中第r个变量换成第k个变量;

cb=c(:,i);%新的价值系数;

xb=inv(B)*b;

b0=xb;

x=zeros(1,n+m)

x(:,i)=xb'

f=cb*xb

z=cb*inv(B)*A-c;%可用z=cb*(B\A)-c,判别数.

end

end

六、数值实验及结果分析

求解线性规划问题:

在工作区输入:

A=[3,3,1,0;-4,-4,0,1;2,-1,0,0];

b=[30,16,12]';

c=[-3,1,0,0];

[x,f]=zuiyouhua(A,b,c)

x =

7.3333 2.6667 0 0 0 56.0000 0

f =

-19.3333

检验结果正确

南昌航空大学数学与信息科学学院实验报告

第 5 页

开始

初始可行解

计算单纯形乘子,计算判别数(非基变量)令

得到最优解

解方程,得到。

不存在有限最优解

确定下标,是

为进基变量,用替换,得到新的基矩阵

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值