[matlab] 12.Optimization Tool的使用


1.quadprog 二次規划的函數

Matlab 中二次規划的數學模型可表述如下

其中

H是把目標函數二次項部分進行實對稱矩陣,

f是線性函數的列向量。

例求解二次規划

 

得到

h=[4,-4;-4,8]; 注意Matlab 中二次規划的數學模型中H 之前有個1/2 所以 對稱二次型矩陣要乘以2 即2.*[2,-2;-2,4]=[4,-4;-4,8]
f=[-6;-3]; 目標函數線性部分的列向量。
a=[1,1;4,1]; 不等式約束的A矩陣
b=[3;9]; 
lower[0,0]
依次輸入Optimization Tool

 

2.單一目標ga求解 遺傳算法  (可以替代1中的解法,比較萬能 不過求出來的是近似最優解)

第一步首先是編寫適應度函數 fitness.m

function f =fitness(x)
f1=4*x(1).^3+4*x(1)*x(2)+2*x(2).^2-42*x(1)-14;
f2=4*x(2).^3+4*x(1)*x(2)+2*x(2).^2-26*x(1)-22;
f=f1.^2+f2.^2;

Fitness function 填寫適應度函數的句柄

有兩個變量 所以填2

然后勾選右邊option進行具體參數調整,最后勾選繪圖

得到結果

最終值 x1=-0.275 x2=1.448 fval=0.0165

 

 

 

3.多目標優化 gamultiobj

function f =fitness(x)
f(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-(x(1)^2)*(x(2)^2);
f(2)=x(2)^4-(x(1)^2)*(x(2)^2)+x(1)^4+x(1)*x(2);
多目標適應度函數 fitness.m

這三個繪圖選項 勾選 特別是Pareto front

最后得到結果 x1,x2,f1,f2

 

 4.模擬退火算法SA 工具箱應用

function y = fitness(x)
y = 20+x(1)^2+x(2)^2-10*(cos(2*pi*x(1))+cos(2*pi*x(2)));

求最小值

x0=[2.5,2.5] %初始值

lb=[-5,-5]變量下界

ub=[5,5]變量上屆

右邊參數 function tolerance 改成1e-10 精度更大

得到最優結果 x1=0 ,x2=0 y=0

 

 

5.fsolve 用最小二乘法來求解非線性方程組

function q= fitness(p)
x=p(1);
y=p(2);
q(1)=x-0.6*sin(x)-0.3*cos(y);
q(2)=y-0.6*cos(x)+0.3*sin(y);
fitness.m

P為輸入的2*1矩陣[x y] 通常輸入初始點

在給定的初值x0=0.5,y0=0.5下,調用fsolve函數求方程的根。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM