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

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

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)

刚好我也做了这个,给你参考哈

function x=lindual(c,A,b)

[n1,n2]=size(A)

A=[A,eye(n1)]c=[-c,zeros(1,n1)]

x1=[zeros(1,n2),b']lk=[n2+1:n1+n2]

while(1)

x=x1(1:n2)

s1=[lk',b,A]

c

x1

cc=[]ci=[]

for i=1:n1

if b(i)<0

cc=[cc,b(i)]

ci=[ci,i]

end

end

nc=length(cc)

if nc==0

fprintf('达到最优解')

break

end

cliu=cc(1)

cl=ci(1)

for j=1:nc

if abs(cc(j))>abs(cliu)

cliu=cc(j)

cl=j

end

end

cc1=[]ci1=[]

for i=1:n1+n2

if A(cl,i)<0

cc1=[cc1,A(cl,i)]

ci1=[ci1,i]

end

end

nc1=length(cc1)

if nc1==0

fprintf('无可行解')

break

end

cliu=c(ci1(1))/cc1(1)

cl1=ci1(1)

for j=1:nc1

if c(ci1(j))/cc1(j)<cliu

cliu=c(ci1(j))/cc1(j)

cl1=ci1(j)

end

end

b(cl)=b(cl)/A(cl,cl1)

A(cl,:)=A(cl,:)/A(cl,cl1)

for k=1:n1

if k~=cl

b(k)=b(k)-b(cl)*A(k,cl1)

A(k,:)=A(k,:)-A(cl,:).*A(k,cl1)

end

end

c=c-c(cl1).*A(cl,:)

x1(lk(cl))=0

lk(cl)=cl1

for kk=1:n1

x1(lk(kk))=b(kk)

end

x=x1(1:n2)

end

验证p62运筹学

min ω=2x1+3x2+4x3

x1+2x2+x3≥3

2x1-x2+3x3≥4

x1,x2,x3≥0

检验

format rat

c=[2 3 4]A=[-1 -2 -1-2 1 -3]b=[-3-4]

x=lindual(c,A,b)

对联生成器小程序,对联题出上句接下句,对联生成器是一款可以在电脑上使用的强大对联生成器,这款对联生成器完全免费,无需下载,平仄规范并严谨,数百万条对联,点击即可使用,是一款绿色的pc端对联生成器。对联又称楹联、对偶、门对、春贴、春联、对子、桃符等,一种对偶文学,起源于桃符


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/11306109.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存