fmincon

fmincon

fmincon是用於求解非線性多元函式最小值的matlab函式,最佳化工具箱提供fmincon函式用於對有約束最佳化問題進行求解。

基本介紹

函式定義,參數說明,

函式定義

最佳化工具箱提供fmincon函式用於對有約束最佳化問題進行求解,其語法格式如下:
x= fmincon(fun,x0,A,b)
x= fmincon(fun,x0,A,b,Aeq,beq)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)
[x,fval]= fmincon(...)
[x,fval,exitflag]= fmincon(...)
[x,fval,exitflag,output]= fmincon(...)

參數說明

其中,x, b, beq, lb,和ub為線性不等式約束的上、下界向量, A 和 Aeq 為線性不等式約束和等式約束的係數矩陣,fun為目標函式,nonlcon為非線性約束函式。
顯然,其調用語法中有很多和無約束函式fminunc的格式是一樣的,其意義也相同,在此不在重複介紹。對應上述調用格式的解釋如下:
x= fmincon(fun,x0,A,b) 給定初值x0,求解fun函式的最小值x。fun函式的約束條件為A*x<= b,x0可以是標量或向量。
x= fmincon(fun,x0,A,b,Aeq,beq) 最小化fun函式,約束條件為Aeq*x= beq 和 A*x <= b。若沒有不等式線性約束存在,則設定A=[]、b=[]。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 定義設計變數x的線性不等式約束下界lb和上界ub,使得總是有lb<= x <= ub。若無等式線性約束存在,則令Aeq=[]、beq=[]。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在上面的基礎上,在nonlcon參數中提供非線性不等式c(x)或等式ceq(x)。fmincon函式要求c(x) <= 0且ceq(x)= 0。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 用options參數指定的參數進行最小化。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...) 將問題參數P1, P2等直接傳遞給函式fun和nonlin。若不需要這些變數,則傳遞空矩陣到A, b, Aeq, beq, lb, ub, nonlcon和 options。
[x,fval]= fmincon(...) 返回解x處的目標函式值到fval。
[x,fval,exitflag]= fmincon(...) 返回exitflag參數,描述函式計算的有效性,意義同無約束調用。
[x,fval,exitflag,output]= fmincon(...) 返回包含最佳化信息的輸出參數output。
非線性不等式約束nonlcon的定義方法
該參數計算非線性不等式約束c(x)<=0 和非線性等式約束ceq(x)=0。 nonlcon 參數是一個包含函式名的字元串。該函式可以是M檔案、內部檔案或MEX檔案。它要求輸入一個向量x,返回兩個變數—解x處的非線性不等式向量c和非線性等式向量ceq。例如,若nonlcon='mycon',則M檔案mycon.m須具有下面的形式:
function[c,ceq] = mycon(x)
c= ... % 計算x處的非線性不等式。
ceq= ... % 計算x處的非線性等式。
若還計算了約束的梯度,即options = optimset('GradConstr','on')
則nonlcon函式必須在第三個和第四個輸出變數中返回c(x)的梯度GC和ceq(x)的梯度Gceq。
function[c,ceq,GC,GCeq] = mycon(x)
c = ... % 解x處的非線性不等式。
ceq = ... % 解x處的非線性等式。
if nargout > 2 % 被調用的nonlcon函式,要求有4個輸出變數。
GC = ... % 不等式的梯度。
GCeq = ... % 等式的梯度。
end

相關詞條

熱門詞條

聯絡我們