?? ex1209.m
字號:
%ex1209.m 懲罰函數法求約束最優化問題
clear
f ='f1209';
x0=[3 0];
TolX = 1e-4;
TolFun = 1e-9;
MaxIter=100;
alpha0 = 1;
%%%%選用不是基于梯度的無約束最優化方法求解,的正確結果
[xo_Nelder,fo_Nelder] = Opt_Nelder(f,x0,TolX,TolFun,MaxIter) %Nelder 方法
[fc_Nelder,fo_Nelder,co_Nelder] = f1209(xo_Nelder) %Nelder方法結果
[xo_s,fo_s] = fminsearch(f,x0) %MATLAB 內置函數fminsearch()
[fc_s,fo_s,co_s] = f1209(xo_s) %相應的結果
%%%基于梯度的方法最速下降法等,得到錯誤結果
grad=inline('[2*(x(1)+1)*((x(1)-1.2)^2+0.4*(x(2)-0.5)^2)+((x(1)+1)^2+4*(x(2)-1.5)^2)*2*(x(1)-1.2),8*(x(2)-1.5)*((x(1)-1.2)^2+0.4*(x(2)-0.5)^2)+((x(1)+1)^2+4*(x(2)-1.5)^2)*0.8*(x(2)-0.5)]','x');
xo_steep = Opt_Steepest(f,grad,x0,TolX,TolFun,alpha0) %最速下降法
[fc_steep,fo_steep,co_steep] = f1209(xo_steep) %相應結果
[xo_u,fo_u] = fminunc(f,x0); % MATLAB 內置函數fminunc()
[fc_u,fo_u,co_u] = f1209(xo_u) %相應結果
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -