請教使用matlab中fminbnd函數(shù)優(yōu)化的問題,?
程序還是不給你,,自己學(xué)會(huì)了,要寫很簡單的。按照步驟,,照貓畫虎就可以了,。由于我不能貼圖,,例子中的數(shù)學(xué)模型沒有寫,,供你參考。優(yōu)化工具箱提供fmincon函數(shù)用于對(duì)有約束優(yōu)化問題進(jìn)行求解,,其語法格式如下: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 為線性不等式約束和等式約束的系數(shù)矩陣矩陣,,fun為目標(biāo)函數(shù),nonlcon為非線性約束函數(shù),。顯然,,其調(diào)用語法中有很多和無約束函數(shù)fminunc的格式是一樣的,其意義也相同,,在此不在重復(fù)介紹。對(duì)應(yīng)上述調(diào)用格式的解釋如下:x = fmincon(fun,x0,A,b) 給定初值x0,,求解fun函數(shù)的最小值x,。fun函數(shù)的約束條件為A*x <= b,x0可以是標(biāo)量或向量,。x = fmincon(fun,x0,A,b,Aeq,beq) 最小化fun函數(shù),,約束條件為Aeq*x = beq 和 A*x <= b。若沒有不等式線性約束存在,,則設(shè)置A=[],、b=[]。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 定義設(shè)計(jì)變量x的線性不等式約束下界lb和上界ub,,使得總是有l(wèi)b <= x <= ub,。若無等式線性約束存在,,則令A(yù)eq=[]、beq=[],。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在上面的基礎(chǔ)上,,在nonlcon參數(shù)中提供非線性不等式c(x)或等式ceq(x)。 fmincon函數(shù)要求c(x) <= 0且ceq(x) = 0,。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 用options參數(shù)指定的參數(shù)進(jìn)行最小化,。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,) 將問題參數(shù)P1, P2等直接傳遞給函數(shù)fun和nonlin。若不需要這些變量,,則傳遞空矩陣到A, b, Aeq, beq, lb, ub, nonlcon和 options,。[x,fval] = fmincon() 返回解x處的目標(biāo)函數(shù)值到fval。[x,fval,exitflag] = fmincon() 返回exitflag參數(shù),,描述函數(shù)計(jì)算的有效性,,意義同無約束調(diào)用。[x,fval,exitflag,output] = fmincon() 返回包含優(yōu)化信息的輸出參數(shù)output,。非線性不等式約束nonlcon的定義方法該參數(shù)計(jì)算非線性不等式約束c(x)<=0 和非線性等式約束ceq(x)=0,。 nonlcon 參數(shù)是一個(gè)包含函數(shù)名的字符串。該函數(shù)可以是M文件,、內(nèi)部文件或MEX文件,。它要求輸入一個(gè)向量x,返回兩個(gè)變量—解x處的非線性不等式向量c和非線性等式向量ceq,。例如,,若nonlcon="mycon",則M文件mycon.m須具有下面的形式:function [c,ceq] = mycon(x)c = % 計(jì)算x處的非線性不等式,。ceq = % 計(jì)算x處的非線性等式,。若還計(jì)算了約束的梯度,即options = optimset("GradConstr","on")則nonlcon函數(shù)必須在第三個(gè)和第四個(gè)輸出變量中返回c(x)的梯度GC和ceq(x)的梯度Gceq,。function [c,ceq,GC,GCeq] = mycon(x)c = % 解x處的非線性不等式,。ceq = % 解x處的非線性等式。if nargout > 2 % 被調(diào)用的nonlcon函數(shù),,要求有4個(gè)輸出變量,。GC = % 不等式的梯度。GCeq = % 等式的梯度,。end4.1應(yīng)用舉例已知某設(shè)計(jì)問題可以簡化為如下數(shù)學(xué)模型:顯然,,此模型屬于一個(gè)二維約束優(yōu)化問題。應(yīng)用fmincon函數(shù)求解此優(yōu)化模型,,需要如下幾個(gè)步驟:1)編制目標(biāo)函數(shù)的M文件在matlab主窗體的命令行中鍵入:“edit myobj.m”,,并在打開的窗口中編制代碼創(chuàng)建目標(biāo)函數(shù)M文件:function f=myobj(x)f=2*x(1)^2+2*x(2)^2-2*x(1)*x(2)-4*x(1)-6*x(2);將其保存為myobj.m備用。2)編制非線性約數(shù)函數(shù)的M文件若有非線性約束,則應(yīng)用如下步驟創(chuàng)建約束函數(shù)M文件:在matlab主窗體的命令行中鍵入:“edit mycon.m”并在打開的窗口中編制相應(yīng)的代碼創(chuàng)建約束函數(shù)M文件:function [c,ceq]=mycon(x)% 非線性不等式約束條件的表達(dá)式,,c(1)=,c(2)=c(1)=x(1)+5*x(2)^2-5;%非線性等式約束條件的表達(dá)式ceq=[];本例中沒有非線性約束,,故可以用上述表達(dá)方式,也可省略這一步,。3)確定其他類型約束條件的系數(shù)矩陣及常數(shù)向量如本例中的優(yōu)化模型所示,,容易確定其余的輸入?yún)?shù),線性不等式約束條件的系數(shù)矩陣A和常數(shù)向量分別為: A=[1 1],,b=[2 ],,線性等式約束不存在,故Aeq=[],beq=[],,設(shè)計(jì)變量X的上,、下界向量:lb=[0 0]",ub=[inf inf]",,其中inf表示無窮大,。4)調(diào)用fmincon函數(shù)進(jìn)行求解經(jīng)過上述各步驟設(shè)置以后,可以編制主程序進(jìn)行優(yōu)化求解,,相應(yīng)的代碼如下:>> x0=[1 1]; %設(shè)置計(jì)算初始值>> options=optimset("LargeScale","off","display","iter"); %設(shè)定優(yōu)化選項(xiàng)參數(shù)>> [x,fval,exitflag]=fmincon(@myobj,x0,A,b,[],[],lb,ub,@mycon,options) %進(jìn)行優(yōu)化求解講過運(yùn)算以后得到結(jié)果如下所示:Optimization terminated successfully:First-order optimality measure less than options.TolFun andmaximum constraint violation is less than options.TolConActive Constraints:34x =1.1190 0.8810fval =-7.6771exitflag =1
相關(guān)推薦
便查問答是一款實(shí)用的網(wǎng)絡(luò)熱門知識(shí)問答平臺(tái),專注于分享你不知道的知識(shí),、經(jīng)驗(yàn)及生活問題,,在這里所有人都能找到答案歡迎網(wǎng)友參與討論。