资源简介
单纯形算法的matlab实现,有详细的注释
代码片段和文件信息
function [xf]=danchunxing(Abcbase_index)
[mn]=size(A);
if(nargin==3) %若没有指明基矩阵的坐标,则默认为最后m列
base_index=(n-m+1):n;
end
index=1:n;
[~non_base_index]=union(indexbase_index);
x=zeros(n1);
threshold=1e-5;
while(1)
% for i=1:20
base=A(:base_index); %寻找基矩阵
B_inv=inv(base);
xb=B_inv*b; %基本可行解
f=c(base_index)*xb; %计算当前目标函数值
w=c(base_index)*B_inv; %
dis=w*A(:non_base_index)-c(non_base_index);%计算判别数
[dis_valdis_position]=max(dis); %计算最大的判别数
if(dis_val<=threshold)
break
end
y=B_inv*A(:dis_position);
if(max(y)<=0)
fprintf(‘该问题不存在有限最优解\n‘)
break
end
temp=xb./y; %保证新的x的分量大于0
temp(temp<=0)=inf;
[r_valr]=min(temp); %根据最小值确定进基操作
base_index(r)=non_base_index(dis_position); %进基操作
non_base_index(dis_position)=base_index(r); %退基操作
end
x(base_index)=xb;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 984 2015-03-31 13:33 单纯形\danchunxing.m
文件 312 2015-03-31 12:25 单纯形\test.m
目录 0 2015-04-02 17:01 单纯形
----------- --------- ---------- ----- ----
1296 3
评论
共有 条评论