线性规划单纯形法的matlab程序 线性规划matlab程序

来源:http://yan-xue.i.sohu.com/blog/view/3583967.htm

例:max 2*x1+3*x2

s.t. x1+2*x2<=8

4*x1<=16

4*x2<=12

x1,x2>=0

加入松驰变量,化为标准型,得到

A=[1 2 1 0 0 8;4 0 0 1 0 16;0 4 0 0 1 12;2 3 0 0 0 0];

N=[3 4 5];

然后执行 [sol,val,kk]=ssimplex(A,N)就可以了。

注:基变量对应的基矩阵一定是单位阵。(这一局限将在后面的升级是改善)

% 求解标准型线性规划:max c*x;s.t. A*x=b;x&g t;=0
%本函数中的A是单纯初始表,包括:第一行为c,最后一行是初始的检验数,最后一列是资源向量b
% N是初始的基变量的下标

%输出变量sol是最优解

%输出变量val是最优值,kk是迭代次数
function [sol,val,kk]=ssimplex(A,N)
[mA,nA]=size(A);
kk=0;% 迭代次数
flag=1;
while flag
kk=kk+1;
ifA(mA,:)<=0% 已找到最优解
flag=0;
sol=zeros(1,nA-1);
for i=1:mA-1
sol(N(i))=A(i,nA);
end
val=-A(mA,nA);
else
for i=1:nA-1
ifA(mA,i)>0&A(1:mA-1,i)<=0% 问题有无界解
disp('have infinite solution!');
flag=0;
break;
end
end
ifflag%还不是最优表,进行转轴运算
temp=0;
for i=1:nA-1
if A(mA,i)>temp
temp=A(mA,i);
inb=i;% 进基变量的下标
end
end
sita=zeros(1,mA-1);
for i=1:mA-1
if A(i,inb)>0
sita(i)=A(i,nA)/A(i,inb);
end
end
temp=inf;
for i=1:mA-1
ifsita(i)>0&sita(i)temp=sita(i);
outb=i; %出基变量下标
线性规划单纯形法的matlab程序 线性规划matlab程序
end
end
% 以下更新N
for i=1:mA-1
if i==outb
N(i)=inb;
end
end
% 以下进行转轴运算
A(outb,:)=A(outb,:)/A(outb,inb);
for i=1:mA
if i~=outb
A(i,:)=A(i,:)-A(outb,:)*A(i,inb);
end
end
end
end
end

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/266296.html

更多阅读

毕业论文答辩的一般程序及常见问题 研究生毕业论文答辩

毕业论文答辩不会太严,如果差得不是太出格都可以毕业。毕业论文不是自己写的也不用太紧张,一般都不会有什么事,不需要全部背下来,主要的观点记住就可以了,只要你把自己论文的重点内容熟悉了就可以了。 毕业论文答辩的一般程序及常见问题

四快学习法的价格问题

四快学习法的价格问题——简介随着现在的四快学习法的逐渐在我国的各个区域市场的畅销,很多的学生家长都开始积极地关注到这样的热门的教辅材料,因为很多人都想要了解到四快学习法的神奇之处,想要知道为什么简单的教辅方法就能够改

中国的离婚程序 起诉离婚的程序

中国的离婚程序——步骤/方法中国的离婚程序 1、协议离婚的条件1、双方当事人系合法登记的夫妻;2、双方当事人离婚是完全自愿的;3、双方当事人对子女抚养、财产和债务处理等事项达成协议;4、一方或双方当事人的户口是本辖区内的常住户

怎么删除手机本身自带的应用程序软件 乐视max2删除自带程序

怎么删除手机本身自带的应用程序软件——简介手机在出厂时,里面会安装很多装序那么要怎么才能册掉那些不用的程式呢!怎么删除手机本身自带的应用程序软件——方法/步骤怎么删除手机本身自带的应用程序软件 1、手机本手自带的程序的话

声明:《线性规划单纯形法的matlab程序 线性规划matlab程序》为网友小给力分享!如侵犯到您的合法权益请联系我们删除