導航:首頁 > 五金知識 > matlab整數規劃工具箱

matlab整數規劃工具箱

發布時間:2022-07-18 15:00:48

❶ 在用matlab的優化工具箱中的linprog求解器或者其他求解器求最優值時,怎麼設置變數約束條件為整數

可以用分支定界法求解整數規劃問題,給你源碼:
function [x,fm] = IntProgFZ(f,A,b,Aeq,beq,lb,ub)
x = NaN;
fm = NaN;
NF_lb = zeros(size(lb));
NF_ub = zeros(size(ub));
NF_lb(:,1) = lb;
NF_ub(:,1) = ub;
F = inf;

while 1
sz = size(NF_lb);
k = sz(2);
opt = optimset('TolX',1e-9);
[xm,fv,exitflag] = linprog(f,A,b,Aeq,beq,NF_lb(:,1),NF_ub(:,1),[],opt);
if exitflag == -2
xm = NaN;
fv = NaN;
end
if xm == NaN
fv = inf;
end
if fv ~= inf
if fv < F
if max(abs(round(xm) - xm))<1.0e-7
F = fv;
x = xm;
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最優解!');
x = NaN;
fm = NaN;
return;
end
end
else
lb1 = NF_lb(:,1);
ub1 = NF_ub(:,1);
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
[bArr,index] = find(abs((xm - round(xm)))>=1.0e-7);
p = bArr(1);
new_lb = lb1;
new_ub = ub1;
new_lb(p) = max(floor(xm(p)) + 1,lb1(p));
new_ub(p) = min(floor(xm(p)),ub1(p));
NF_lb = [NF_lb new_lb lb1];
NF_ub = [NF_ub ub1 new_ub];
continue;
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最優解!');
x = NaN;
fm = NaN;
return;
end
end
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最優解!');
x = NaN;
fm = NaN;
return;
end
end
end
end

❷ matlab整數規劃問題

clc;
Maxf=-100000;
s=0.0;
k=1;
z1=zeros(50,1);
z2=zeros(50,1);
for i=0:1:66
for j=0:1:100-i
if (2*j-i)>=0
s=98*i+277*j-i^2-0.3*i*j-2*j^2;
if (s-Maxf)==0
k=k+1;
z1(k)=i;
z2(k)=j;
else
if s>Maxf
Maxf=s;
z1(1)=i;
z2(1)=j;
k=1;
end
end
end
end
end
Str=strcat('最大值MAX為:',num2str(Maxf));
disp(Str);
x1=z1(1:k)
x2=z2(1:k)
我已經驗證過了~OK的哈!

❸ MATLAB優化工具箱--線性規劃問題

這個是整數規劃。
你得用別的函數。
比如:ipslv_mex,這個好像得去網上載。

f=ones(7,1);
A=[1,4,0,0,3,1,2;1,0,3,0,1,2,0;1,0,0,2,0,0,1];
b=[50;30;25];
intlist=zeros(7,1); %代表專7個變屬量都是整數
xmin=ones(7,1); %代表7個變數的最小值均為1
xmax=inf*ones(7,1); %代表7個變數最大值均為無窮大
ctype=ones(3,1); %代表三個方程都是Ax=b,大於等於的話為1,小於等於的話為-1
[x,how]=ipslv_mex(f,A,b,intlist,xmax,xmin,ctype)
結果為:
x =

16
1
1
4
9
1
1

❹ matlab整數規劃程序

可以用YALMIP工具箱解整數規劃

定義變數:
sqdvar()實型
intvar()整型
binvar()0-1型
設定目標函數 :
f=目標函數
設定限定條件:
F=set(限定條件)
多個限定條件用加號相連:
F=set(限定條件)+set(限定條件1)+set(限定條件2)……
求解: solvesdp(F,f)
這里解得是F條件下目標函數f的最小值,要求最大值f前面加個負號
求解之後查看數值 :
double(f) double(變數)

intvar(m,n):生成整數型變數;

sdpvar(m,n):生產變數;

solvesdp(F,f):求解最優解(最小值),其中F為約束條件(用set連接),f為目標函數

double:顯示求解的答案

有個例子:
已知非線性整數規劃為:
Max z=x1^2+x2^2+3*x3^2+4*x4^2+2*x5^2-8*x1-2*x2-3*x3-x4-2*x5
s.t.
0<=xi<=99(i=1,2,...,5)
x1+x2+x3+x4+x5<=400
x1+2*x2+2*x3+x4+6*x5<=800
2*x1+x2+6*x3<=800
x3+x4+5*x5<=200
matlab中輸入
>> x=intvar(1,5);
f=[1 1 3 4 2]*(x'.^2)-[8 2 3 1 2]*x';F=set(0<=x<=99);
F=F+set([1 1 1 1 1]*x'<=400)+set([1 2 2 1 6]*x'<=800)+set(2*x(1)+x(2)+6*x(3)<=800);
F=F+set(x(3)+x(4)+5*x(5)<=200);solvesdp(F,-f);
max=double(f)
sx=double(x)
* Starting YALMIP integer branch & bound.
* Lower solver : fmincon-standard
* Upper solver : rounder
* Max iterations : 300

Warning : The relaxed problem may be nonconvex. This means
that the branching process not is guaranteed to find a
globally optimal solution, since the lower bound can be
invalid. Hence, do not trust the bound or the gap...
Node Upper Gap(%) Lower Open
1 : -8.020E+004 0.03 -8.025E+004 2
2 : -8.020E+004 0.03 -8.025E+004 1
3 : -8.020E+004 0.00 -8.020E+004 2
+ 3 Finishing. Cost: -80199

max =

80199

sx =

53 99 99 99 0

❺ MatLab求解整數規劃

各種主流的方法不讓用,各種主流的程序也不讓用,老師到底想要你們做什麼?

MATLAB的整數規劃能力比較有限,早期主要就是0-1二值規劃的bintprog,後來遺傳演算法ga可以求解不帶等式約束的非線性規劃,再後來還有個整數線性規劃的函數intlinprog。第三方比較著名的有個個人作者編寫的分支定界法函數bnb20。

❻ 整數規劃該如何用MATLAB求解

整數線性規劃要下載工具箱來解決,很麻煩
用LINGO吧,方便簡單,下面附帶一個例子:
LINGO軟體用於線性或非線性規劃(無論是連續規劃還是整數規劃),因此包含了LINDO的功能。在LINGO中,所有的函數均以「@」符號開始,如約束中@gin(x1)表示x1為整數,用bin(x1)表示x1為0-1整數。

鋼管下料問題的求解
以切割後剩餘的總余料量最小為目標,建立LINGO模型:
min= 3*x1+x2+3*x3+3*x4+x5+x6+3*x7;
4*x1+3*x2+2*x3+x4+x5 >=50;
x2+2*x4+x5+3*x6 >= 20;
x3+x5+2*x7 >= 15;
@gin(x1);
@gin(x2);
@gin(x3);
求解可以得到最優解如下:
OBJECTIVE FUNCTION VALUE
1) 27.00000
VARIABLE VALUE REDUCED COST
X1 0.000000 3.000000
X2 12.000000 1.000000
X3 0.000000 3.000000
X4 0.000000 3.000000
X5 15.000000 1.000000
X6 0.000000 1.000000
X7 0.000000 3.000000

❼ 如何用matlab實現線性規劃的整數求解

matlab 整數規劃工具箱

❽ matlab怎麼實現整數線性規劃或者非線性規劃

intlinprog 函數,用於進行整數規劃和整數非整數的混合規劃
[x,y,flag]=intlinprog(f,[1,2],A,b,C,d,xm,xM)

閱讀全文

與matlab整數規劃工具箱相關的資料

熱點內容
超聲波玻璃管用什麼顏色 瀏覽:530
進水閥門怎麼包 瀏覽:512
混凝土試塊抗壓強度試驗自動化裝置 瀏覽:539
塑料筐生產設備哪裡買 瀏覽:85
自動扣緊裝置 瀏覽:33
捷達運動儀表怎麼刷431 瀏覽:279
台州光谷機械有限公司怎麼樣 瀏覽:821
加裝可變排氣閥門有影響嗎 瀏覽:288
注塑機機械手吸盤吸不住怎麼辦 瀏覽:11
電容隔直裝置作用 瀏覽:512
實驗器材包括什麼材料嗎 瀏覽:112
雙軸式秸稈收割粉碎裝置設計 瀏覽:600
為什麼突然投屏找不到設備 瀏覽:406
直線軸承座uu代表什麼 瀏覽:251
消防器材計入管理費用怎麼算 瀏覽:124
肋夾玻璃幕牆配套五金件 瀏覽:356
錄音有什麼攜帶型設備 瀏覽:764
機床皮帶跑偏怎麼調 瀏覽:986
上海新建高檔五金電器批發市場 瀏覽:195
戰斧機械鍵盤怎麼樣 瀏覽:863