matlab fgoalattain,matlab优化工具箱 | 学步园
1
工具箱概述
1.1 功能
(1)求解無約束條件非線性極小值;
(2)求解約束條件下非線性極小值,包括目標逼近問題、極大-極小值問題和半無限極小值問題;
(3)求解二次規劃和線性規劃問題;
(4)非線性最小二乘逼近和曲線擬合;
(5)非線性系統的方程求解;
(6)約束條件下的線性最小二乘優化;
(7)求解復雜結構的大規模優化問題。
1.2 工具箱的新特色
MATLAB R2008b使用的是4.1版本的優化工具箱,較3.x的變化在于:
(1)??? fmincon、fminimax和fgoalattain中引入了并行機制,加快梯度計算速度;
(2)??? 函數gatool和pserchtool整合到優化工具箱GUI中;
(3)??? 函數fmincon的求解器中新增內點
(4)??? 提供了KNITRO優化庫的接口;
(5)??? 函數lsqcurvefit、lsqnonlin和fsolve的優化選項參數PrecondBandWinth默認值由0變為inf;
(6)??? 優化選項參數TolConSQP的默認值改為1e-6;
(7)??? 輸出結構中引入了參數constrviolation。
2 工具箱函數
常用函數:
一元函數極小值
X=fminbnd(‘F’,x1,x2)
無約束極小值
X=fminunc(‘F’,X0)
X=fminsearch(‘F’,X0)
線性規劃
X=linprog(c,A,b)
0-1整數規劃
X=bintprog(F)
二次規劃
X=quadprog(H,c,A,b)
約束極小值(非線性規劃)
X=fmincon(‘FG’,X0)
非線性最小二乘
X=lsqnonlin(F,X0)
目標達到問題
X=fgoalattain(‘F’,x,goal,w)
極小極大問題
X=fminimax(‘FG’,x0)
輸入參數中可以用options,用于所有函數,其中包括有一下參數。
(1)????????????? Display:結果顯示方式,off不顯示,iter顯示每次迭代的信息,final為最終結果,notify只有當求解不收斂的時候才顯示結果。
(2)????????????? MaxFunEvals:允許函數計算的最大次數,取值為正整數。
(3)????????????? MaxIter:允許迭代的最大次數,正整數。
(4)????????????? TolFun:函數值(計算結果)精度,正整數。
(5)????????????? TolX:自變量的精度,正整數。
而且可以用函數optimset創建和修改。
模型輸入時需要注意問題:
(1)??? 目標函數最小化;
(2)??? 約束非正;
(3)??? 避免使用全局變量。
3 GUI優化工具
3.1 啟動
命令行輸入optimtool;
Start->Toolboxes->Optimization->Optimization tool(optimtool)。
3.2 界面
圖一:GUI優化工具的界面
分為三塊:
最左邊是優化問題的描述及計算結果顯示,中間為優化選項的設置,右邊是幫助(可隱藏,右上角的<
3.3 使用步驟
選擇求解器solver和優化算法algorithm;
選定目標函數(objective function);
設定目標函數的相關參數;
設置優化選項;
單擊“start”按鈕,運行求解;
查看求解器的狀態和求解結果;
將目標函數、選項和結果導入\導出。
具體的如圖二所示:
圖二:步驟示意圖
3.4 應用實例
3.4.1 無約束優化(fminunc求解器)
求f(x)=x^2+4*x-6極小值,初始點取x=0。
解:首先建立目標函數文件FunUnc.m文件:
function y=FunUnc(x)
y=x^2+4*x-6;
然后啟動優化工具(如圖):
Algorithm有兩個選擇:Large scale和Medium scale,設置完參數點擊start即可得到如圖中的結果。
3.4.2 無約束優化(fminsearch求解器)
求f(x)=|x^2-3*x+2|的極小值,初始點取x=-7,比較fminunc和fminsearch的差別。
解:啟動優化工具;
用fminunc時設置參數如圖:
點擊start得到結果。
用fminsearch時如下圖:
用fminunc時結果是1.5,而用fminsearch時結果是2。計算原等式有極小值為2,由此有對于非光滑優化問題fminunc可能求不到正確的結果,而fminsearch卻能很好地解決這類問題的求解。
3.4.3 約束優化(fmincon求解器)
可用算法有Trust region reflective(信賴域反射算法)、Active set(有效集算法)、Interior point(內點算法)。
求f(x)=-x1*x2*x3的極小值,約束條件是-x1-2*x2-2*x3<=0且x1+2*x2+2*x3<=72,初始點(10,10,10)。
解:首先見M文件,約定FunUnc(x)=-x(1)*x(2)*x(3):
function y=FunUnc(x)
y=-x(1)*x(2)*x(3);
啟動優化工具,設置參數如圖:
3.4.4 非線性最小二乘優化(lsqnonlin求解器)
求minS=(x^2+x-1)^2+(2*x^2-3)^2 ,初始點為x=5 。
解:啟動優化工具,設置參數,點start得結果如下圖所示;
3.4.5 線性規劃(linprog求解器)
略,f處輸入函數多項式的系數。基本方法如前面幾類。
3.4.6 智能優化算法(ga求解器)
略,要輸入變量的個數。基本方法如前面幾類。
總結
以上是生活随笔為你收集整理的matlab fgoalattain,matlab优化工具箱 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python函数递归法求一个数各位数之和
- 下一篇: c语言课程设计模块结构图,【图片】发几个