編程實現二維最優化問題圖解法(最優化附加1)

說明

這是最優化課程第一次附加作業

依賴

MATLAB2015

題目

運行效果

momentum.jpg

momentum.m

que1.m

que1
第一題
警告: Gradient must be provided for trust-region algorithm; using quasi-newton algorithm instead.
In fminunc (line 397)
In que1 (line 8)

Initial point is a local minimum.

Optimization completed because the size of the gradient at the initial point
is less than the default value of the optimality tolerance.

<stopping criteria details>

最優點為

x =

   3              4       

最優值為

fval =

   0   

que2.m

que2
第二題

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the optimality tolerance,
and constraints are satisfied to within the default value of the constraint tolerance.

<stopping criteria details>

最優點為

x =

  15/4            5/4     

最優值為

fval =

  65/8 

que3.m

que3
第三題
> In backsolveSys
In solveAugSystem
In leastSquaresLagrangeMults
In barrier
In fmincon (line 797)
In que3 (line 12)
警告: 矩陣接近奇異值,或者縮放錯誤。結果可能不準確。RCOND = 2.217408e-16。
> In backsolveSys
In solveAugSystem
In leastSquaresLagrangeMults
In nlpStopTest
In barrier
In fmincon (line 797)
In que3 (line 12)
警告: 矩陣接近奇異值,或者縮放錯誤。結果可能不準確。RCOND = 2.217408e-16。
> In backsolveSys
In solveAugSystem
In normalCauchyStep
In normalStep
In computeTrialStep
In barrier
In fmincon (line 797)
In que3 (line 12)
警告: 矩陣接近奇異值,或者縮放錯誤。結果可能不準確。RCOND = 2.217408e-16。


程序

momentum.m

%畫圖
%2.約束條件
x1=[-1:0.5:10];
x2=x1-5/2;
plot(x1,x2);
hold on;
x2=-x1+5;
plot(x1,x2);
hold on;
x1=[-1,10];
x2=[0,0];
plot(x1,x2);
hold on;
x1=[0,0];
x2=[-1,10];
plot(x1,x2);
hold on;
%3.可行域
[X1,X2]=meshgrid(-1:0.1:9,-1:0.1:9);
idx=(-X1+X2<=-5/2)&(X1+X2<=5)&(X1>=0)&(X2>=0);
x1=X1(idx);%行重復數量
x2=X2(idx);%列匹配行
k=convhull(x1,x2);
fill(x1(k),x2(k),'c')
title('可行域')
axis equal
%4.目標函數等值線
[x1,x2]=meshgrid(-2:0.1:8,-2:0.1:8);
target_f=(x1-3).^2+(x2-4).^2;
[C,h]=contour(x1,x2,target_f);
set(h,'ShowText','on','TextStep',get(h,'LevelStep'))
hold on;
%5.最優解
%見另三個文件
%1.坐標系
axis on;grid on;axis([-2,7,-2,7]);
xlabel('x1');ylabel('x2');

que1.m

%(1)
disp('第一題');
format rat;

fun=@(x)(x(1)-3)^2+(x(2)-4)^2;
x0=[3,4];

[x,fval]=fminunc(fun,x0);

disp('最優點為');
x
disp('最優值為');
fval

que2.m

%(2)
disp('第二題');
format rat;

fun=@(x)(x(1)-3)^2+(x(2)-4)^2;
x0=[3,4];
A=[-1,1;1,1];
b=[-5/2,5];
Aeq=[];
beq=[];
lb=zeros(2,1);
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb);

disp('最優點為');
x
disp('最優值為');
fval

que3.m

%(3)
disp('第三題');
format rat;

fun=@(x)(x(1)-3)^2+(x(2)-4)^2;
x0=[3,4];
A=[-1,1;1,1];
b=[-5/2,5];
Aeq=[1,-1];
beq=[0];
lb=zeros(2,1);
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb);

disp('最優點為');
x
disp('最優值為');
fval
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、 我沒有飲過最烈的酒可我放棄過最愛的人,我給你全部自由,當作我最后的溫柔。 二、 陽光不同,是因為心情不同;綠...
    徐徐起帆閱讀 341評論 0 0
  • Hermite Polynomials - 厄密多項式 解題: 可以得出,值是 40
    Jiubao閱讀 425評論 1 0
  • 20歲大學畢業,如今已工作十個年頭,顯然,今年也是30歲,而立之年了;在2006年參加工作的第一年一次偶然的機會接...
    牛萬里閱讀 341評論 0 1