91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-13
  • 語(yǔ)言: Matlab
  • 標(biāo)簽: matlab??

資源簡(jiǎn)介

用單純形法解線性等式、不等式約束。目標(biāo)函數(shù)為線性。程序用matlab的m函數(shù)編寫(xiě),請(qǐng)用matlab打開(kāi)。

資源截圖

代碼片段和文件信息

?function?[xofvalueexitflag]=simplex_method(nfAbigbbigAsmallbsmallAeqbeq)
%作者aeh
%最后編輯時(shí)間2018/10/22

%?該單純形法解決以下問(wèn)題
%?min?ofvalue=f*x
%?s.t.?Abig*x>=bbig
%??????Asmall*x<=bsmall
%??????Aeq*x=beq
%??????x>=0
%??????n=length(x)
%?f?x?bbig?bsmall?beq?are?vector?and?Abig?Asmall?Aeq?are?matrix.?

%--------------------1.1?Standardization------------------
%該部分將加入松弛變量和剩余變量進(jìn)行標(biāo)準(zhǔn)化
%使之變成如下形式
%?min?ofvalue=f*x‘?
%?s.t.?AEq*x=BEq
%??????x‘>=0
%-------------案例-------------
%?Asmall=[1-21];bsmall=[11];
%?Abig=[-412];bbig=[3];
%?Aeq=[-201];beq=[1];n=3;
%?f=[-311];?
%-----------------------------
m1=length(bbig);
m2=length(bsmall);
m3=length(beq);
BEq=[bbig;bsmall;beq];AEq=[];
a1=eye(m1+m2+m3m1+m2);
????for?i=1:m1
????????AEq(i:)=[Abig(i:)-1*a1(i:)];
????end
????for?i=1:m2
????????AEq(i+m1:)=[Asmall(i:)a1(i+m1:)];
????end
????for?i=1:m3
????????AEq(i+m1+m2:)=[Aeq(i:)a1(i+m1+m2:)];
????end
????for?i=1:(m1+m2+m3)????????????%使BEq元素均為正值
????????if(BEq(i)<0)
????????????BEQ(i)=-BEq(i);
????????????AEq(i:)=-AEq(i:);
????????else
????????????BEq(i)=BEq(i);
????????????AEq(i:)=AEq(i:);????
????????end
????end
????

%-----------1.2?判斷AEq矩陣是否具備初始基--------------
a2=eye(m1+m2+m3);
????for?i=1:(m1+m2+m3)
????????for?j=1:(n+m1+m2)
????????????if?isequal(AEq(:j)a2(:i))
???????????????flag2(i)=1;position2(i)=j;
????????????end
????????end
????end
????if?(length(position2)????????position2(m1+m2+m3)=0;
????end
????

%-------1.3?如果不具備初始基,添加人工變量-----
????if?sum(flag2)~=(m1+m2+m3)
????????j=1;
????????for?i=1:m1+m2+m3
????????????if?position2(i)==0
???????????????arbase2(j)=i;j=j+1;????????????????%在arbase2中存放的i表示需要添加的人工變量在單位矩陣的第i列。
????????????end
????????end
????????lea=length(arbase2);
????????for?i=1:lea???????????????????????????????%按順序在AEq的末端添加人工列
????????????aux=zeros(m1+m2+m31);
????????????j=arbase2(i);
????????????aux(j)=1;
????????????AEq(:n+m1+m2+i)=aux;
????????end
????end
%-----------1.4?記錄初始基的列數(shù)-----------------------
j=1;
????for?i=1:m1+m2+m3?????????????????????????????%Col按順序存放單位矩陣的列數(shù),i表示單位矩陣的第幾列而Col(i)表示在AEq中的列數(shù)
????????if?(position2(i)~=0)
?????????????Col(i)=position2(i);?????????
????????else
?????????????Col(i)=n+m1+m2+j;j=j+1;
????????end
????end
%-------------------------1.5基變換-------------------------
C=zeros(1n+m1+m2+lea);
for?i=1:lea
????C(n+m1+m2+i)=1;
end
%--------選主元------
B=Col;
for?i=1:m1+m2+m3
????cI(i)=C(B(i));
end
[exitnumsigma]=judgeopt(AEqCB);
while(exitnum==2)
????[AEQBEQBnewpcLpc]=exbase(AEqBEqCB);
????B=Bnew;AEq=AEQ;BEq=BEQ;
????[exitnumsigma]=judgeopt(AEqCB);??
end

%----------------------------------------第二階段---------------------------------------
%去掉人工變量,還原目標(biāo)函數(shù)系數(shù),作初始單純形表
C=zeros(1n+m1+m2);
for?i=1:length(f)
????C(i)=f(i);
end


AEQ=[];
for?i=1:n+m1+m2
????AEQ(:i)=AEq(:i);
end
AEq=AEQ;

%二階段單純形法的換基運(yùn)算
[exitnumsigma]=judgeopt(AEqCB);
while(exitnum

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????5766??2019-04-23?09:25??simplex_method.m

評(píng)論

共有 條評(píng)論