高分求matlab對偶單純形法程式

時間 2021-10-14 22:40:07

1樓:血_淋淋

剛好我也做了這個,給你參考哈

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]cx1

cc=;ci=;

for i=1:n1

if b(i)<0

cc=[cc,b(i)];

ci=[ci,i];

endend

nc=length(cc);

if nc==0

fprintf('達到最優解');

break

endcliu=cc(1);

cl=ci(1);

for j=1:nc

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

cl=j;

endend

cc1=;ci1=;

for i=1:n1+n2

if a(cl,i)<0

cc1=[cc1,a(cl,i)];

ci1=[ci1,i];

endend

nc1=length(cc1);

if nc1==0

fprintf('無可行解');

break

endcliu=c(ci1(1))/cc1(1);

cl1=ci1(1);

for j=1:nc1

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

cl1=ci1(j);

endend

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);

endend

c=c-c(cl1).*a(cl,:);

x1(lk(cl))=0;

lk(cl)=cl1;

for kk=1:n1

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

endx=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)

2樓:匿名使用者

3樓:金

具體uyaoqiu是什麼

【高分求】運籌學,可以用單純形法解,或者用matlab算出來也行。

4樓:青衣瓦屋

用mathematica可以直接整數規劃:

module[,

cast = ;

value = ;

varx = array[x, 6];

con0 = # >= 0 & /@ varx;

con1 = ;

con2 = ;

cons = join[con0, con1, con2];

obj = varx.value;

ans = maximize[obj, cons, varx, integers]

]結果為:

}一點建議,如果覺得這樣太簡單了,可以加上這樣的假設:一天之內連續兩頓都在同一家食堂/飯館吃飯的話滿意度只有80%(這個數可以自行修改),如此則需要36個未知數,結果會有趣得多:-p。

不過如果校外兩家的引數不做修改的話會始終是x[5]=3,x[6]=0。

5樓:匿名使用者

既然你公式已經列出來了,那就直接將它轉換為matlab**就可以了,matlab中使用linprog函式來進行先行規劃求解,**如下:

clcclear

c = [60;65;60;70;75;73];

a = [5.5,8.5,5.4,11.4,30,29.5;

-1,-1,-1,0,0,0;

0,0,0,0,-1,-1;

];b=[450;-20;-3];

aeq = [1,1,1,1,1,1];

beq = [60];

x = linprog(-c,a,b,aeq,beq,zeros(6,1))

value = c'*x

執行結果如下:

x =0.0000

0.0000

48.3000

8.7000

3.0000

0.0000

value =

3.7320e+003

>>你可能注意到了,這裡的x是次數,所以,x的值不應該有小數的情況,所以需要使用整數規劃,整數規劃最好使用lingo軟體,專門用於解決規劃問題,你可以試試。

matlab單純形法求解線性規劃 用matlab 編個程式

6樓:匿名使用者

求解線性規劃問題,matlab裡統一使用linprog函式,其用法是x = linprog(f,a,b,aeq,beq,lb,ub)並且是用來求解最小值的,所以目標函式改為最小值。

這裡引數

f=[-40;-30;-10]

a=[9 7 10;0.6 1.5 1;0.6 1.5 -1]b = [10; 3.2; 5]

lb = zeros(3,1)

[x,fval,exitflag,output,lambda] = linprog(f,a,b,,,lb);

********************===執行結果

x =1.1111

0.0000

0.0000

7樓:匿名使用者

這是典型的線性優化問題,可以使用linprog函式進行建模求解。

高分!!求秋季電腦配置單急

配置 品牌型號 數量 單價 選用 cpu amd 速龍ii x2 245 1 430 主機板 微星 ka785gtm e45 1 499 記憶體 金士頓 2gb ddr2 800 窄板 1234 215 硬碟 希捷 320g 7200.11 16m 串列埠 3年盒 1234 350 顯示卡 影馳 9...

matlab中求極值點,matlab中求極值點

先畫出導數的曲線,根據其零點判斷有幾個極點,然後對各極點分別指定適當的初值,利用fsolve求出準確的零點位置,再繪圖即可.參考 如下 symsxf 2 x.2 4 sin 2 pi x df diff f ezplot df,33 x0 1.8 1.3 0.80.50.20.51.2 x0 fso...

高分求3000以內的組裝電腦配置單要求能看電影玩

intel 酷睿i5 2300 盒 1175技嘉 ga g41mt s2 429 金士頓 4gb ddr3 1333 145wd wd5000aakx 500gb藍盤 275百事得 黑甲悍將 65 先馬 超影400感恩版 168 aoc 941s 665 卡爾波 t500鍵鼠套裝 38 總計 299...