永发信息网

求对偶单纯形法的源程序,C的或者matlab的均可。

答案:1  悬赏:80  手机版
解决时间 2021-03-27 04:11
求对偶单纯形法的源程序,C的或者matlab的均可。
最佳答案
function [val, X, exitFlag] = simplex(A, b, B, c)
%function [val, X, exitFlag] = simplex(A, b, B, c)
% simplex.m
% 单纯形法求解线性规划
% 函数输入各项为标准型对应值
% val 最优解的值
% X 最优解 1*n
% exitFlag 求解结果
% 1: succeed
% 0: unbounded
% -1: iterate 100 times
% A 系数矩阵 m*n
% b 初始基可行解 m*1
% B 初始基可行解的索引 m*1
% c 价格系数 1*n

[m, n] = size(A);
x = 1:m;
y = 1:n;
d = zeros(m,1);
X = zeros(1,n);
c1 = c;
%计算判别数
for kk = 1:m
c1 = c1 - A(kk,:).*c(B(kk));
end

%最多迭代100次
for count=1:100
[cMin, cIndex] = min(c1);
if (cMin >= 0)
exitFlag = 1;
break;
end

[dMin, dIndex] = minD(b, A(:,cIndex));
if (isinf(dMin))
exitFlag = 0;
break;
end

B(dIndex) = cIndex;
major = A(dIndex, cIndex);

%矩阵A,b,c的迭代更新
A(dIndex,:) = A(dIndex,:)./major;
b(dIndex) = b(dIndex)/major;

temp = b(dIndex);
b(x) = b(x) - A(x,cIndex)*b(dIndex);
b(dIndex) = temp;

temp = A(dIndex,:);
A(x,y) = A(x,y) - A(x,cIndex)*A(dIndex,y);
A(dIndex,:) = temp;

c1 = c1 - c1(cIndex)*A(dIndex,:);
end

if count==100
exitFlag = -1;
end
X(B(x)) = b(x);
val = sum(X.*c);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
纯棉和全棉有什么区别
怎样把刚落的茉莉花制成干花
叶平的介绍
吉他右手怎么练!53231323已熟,求右手
suV车最热消是什么车
风靡全球的士高这张光碟好听的歌有哪几首?求
120mm=多少dm多少cm
---Comeandjoinus,Jimmy!---I’msorry,butI’
春节快到了,大家忙得可欢了,有的干吗,有的
ipad apple pencil onenote怎么编辑
汽车打蜡徒有前景吗要学徒吗
佛刻在石洞里的原因
一次蒸200斤粮食的酿酒设备是什么样子?
英雄无敌都有些什么周,比如小怪物周之类的
跟袁字最配那个字
推荐资讯
人体的绝大部分组织细胞需通过内环境才能与外
请问一下凯乐石和探路者有什么不一样呢?
求问“人是黑头虫,刚作千年调。铸铁作门限,
项的偏旁是什么
l雅度轮胎是哪里生产的
我在户县苍游乡文义村,请问到户县大王富村怎
悦变一词是什么意思
一吨100元人民币和一吨100的美元,哪个更
现在驾照消一分大概要花多少钱
三星s9+有没有苹果8pl
给我15岁帅哥照片五张以上
瑞士爵尼手表GNQ—T1995M多少钱
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?