资源简介
matlab编写单纯形法。完全按照最优控制指导教材上的单纯形法的理论步骤编写的。每一步的结果都有给出,很详细的。没有错误。
![](http://www.nz998.com/pic/42649.jpg)
代码片段和文件信息
function[ANnabmflagmAnA]=simplex(Ambc)%A为初矩阵,N为A的最后一行,n为初始进基变量,a为出基,b为进基,m为最后基变量,flag为cj标志,mA,nA为A的行数,列数%此处求的最小极值;
A=[2 1 1;1 2 3;2 2 1];
b=[2;5;6];
c=[-3 -1 -3];
%b=[4;12;3];
%c=[-4-1];
%A=[-1 2;2 3;1 -1];
%化成标准型;
[a1 a2]=size(A) %取A的行数a1列数a2;
B=eye(a1) %取与行数相等的单位阵;
A1=[A B] %标准单纯形自变量系数矩阵;
m=[(a2+1):(a1+a2)] %列出基变量的下标号;
mm=[1:a2] %列出非基变量下标;
m1=zeros(1((a1+a2)-size(c2)))%给c补充0向量;
c1=[c m1] %生成完整的c向量;
AA1=[A1 b]
flag=1;
k=0;
rl=0;
r=1;
while flag==1
b=AA1(:a1+a2+1)
for i=1:a1
if m(i)==rl
m(i)=k;
end
end
for i=1:a2
if mm(i)==k
mm(i)=rl;
end
end
B=AA1(:m)
%建立初始单纯形表;
cb=c1(m(1));
xb=(inv(B))*b
for i=2:a1
cb=[cb c1(m(i))]%取基向量cb;
end
z0=cb*xb %计算目标函数即基本可行解;
rr=zeros(1a1+a2)
%计算检验数;
for j=1:a2 %计算检验数;
cy=0;
for i=1:a1
cy=cy+c1(m(i))*AA1(imm(j));
end
z(mm(j))=cy
rr(mm(j))=c1(mm(j))-z(mm(j))
end
AA2=[rr -z0]
AA=[AA1;AA2] %生成初始单纯形表;
if (min(rr))>=0 %判断是否是最优解,如果是则显示变量取值x以及最优值z;
z=z0
x(m)=xb
disp(‘变量最优解为:x*=‘)
disp(x)
disp(‘最优解值为:z*=‘)
disp(z)
flag=0;
break;
end
%决定进基矢量ak;
k=min(find(rr==min(rr(find(rr<0)))))
ak=AA1(:k)
%决定离基矢量ar和主元素yrk;
if max(AA1(:k))<=0 %如果yik中有小于等于0的值则目标函数是无界的,无最优解;
disp(‘无有限最优解‘)
flag=0;
break;
end
for i=1:a1
NN(i)=(AA1(ia1+a2+1))/(AA1(ik))
end
r=find(NN==min(NN(find(NN>0))))
yrk=AA1(rk) %主元素为yrk;
rl=m(r) %离基矢量下标为rl;
ar=AA1(:rl) %离基矢量为ar;
%根据列主元Gauss消元法解线性方程组
for i=1:a1
if i~=r
AA1(i:)=AA1(i:)-AA1(r:)*AA1(ik)/AA1(rk)
else
AA1(r:)=AA1(r:)/yrk;
end
end
AA1
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2109 2010-12-27 23:17 单纯形程序\simplex.m
文件 2090 2010-12-27 23:21 单纯形程序\单纯形法.txt
目录 0 2011-06-12 13:45 单纯形程序
----------- --------- ---------- ----- ----
4199 3
- 上一篇:复合非线性反馈积分滑模控制器的设计
- 下一篇:libsvm数据格式转换程序
相关资源
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
- 神经网络分类matlab程序
- matlab正弦信号发生器的设计
评论
共有 条评论