日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

内点法+外点法

發(fā)布時間:2025/3/15 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内点法+外点法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

內點法屬于約束優(yōu)化算法。約束優(yōu)化算法的基本思想是:通過引入效用函數(shù)的方法將約束優(yōu)化問題轉換成無約束問題,再利用優(yōu)化迭代過程不斷地更新效用函數(shù),以使得算法收斂。?
內點法(罰函數(shù)法的一種)的主要思想是:在可行域的邊界筑起一道很高的“圍墻”,當?shù)c靠近邊界時,目標函數(shù)徒然增大,以示懲罰,阻止迭代點穿越邊界,這樣就可以將最優(yōu)解“檔”在可行域之內了。

數(shù)學定義

對于下面的不等式約束的優(yōu)化問題:?

minf(x),xRn
s.tgi(x)0,i=1,2,...,m
利用內點法進行求解時,構造懲罰函數(shù)的一般表達式為?
φ(X,r)=f(X)?ri=1m1gi(X)
或者?
φ(X,r)=f(X)?ri=1mln[?gi(X)]

算法步驟

  • 取初始懲罰因子r(0)>0,允許誤差?>0
  • 在可行域D內選取初始點X(0),令k=1
  • 構造懲罰函數(shù)φ(X,r(k)),從X(k?1)點出發(fā)用無約束優(yōu)化方法求懲罰函數(shù)φ(X,r(k))的極值點(X?,r(k))
  • 檢查迭代終止準則:如果滿足 X?r(k)?X?r(k?1)?1=10?5?10?7 或者 φ(X?,r(k))?φ(X?,r(k?1))φ(X?,r(k?1))?2=10?3?10?4 則停止迭代計算,并以(X?,r(k))作為原目標函數(shù)f(X)的約束最優(yōu)解,否則轉入下一步;
  • r(k+1)=cr(k)X(0)=X?r(k)k=k+1,轉向步驟3。遞減系數(shù)c=0.1?0.5,通常取0.1。

  • 仿真

    1 用外點法求下列問題的最優(yōu)解
    方法一:外點牛頓法:
    clc
    m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);%a b為最優(yōu)點坐標,f0為最優(yōu)點函數(shù)值,f1 f2最優(yōu)點梯度。
    syms x1 x2 e; %e為罰因子。
    m(1)=1;c=10;a(1)=0;b(1)=0; %c為遞增系數(shù)。賦初值。
    f=x1^2+x2^2+e*(1-x1)^2;f0(1)=1;
    fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');%求偏導、海森元素。
    for k=1:100 %外點法e迭代循環(huán).
    x1=a(k);x2=b(k);e=m(k);
    for n=1:100 %梯度法求最優(yōu)值。
    f1=subs(fx1); %求解梯度值和海森矩陣
    f2=subs(fx2);
    f11=subs(fx1x1);
    f12=subs(fx1x2);
    f21=subs(fx2x1);
    f22=subs(fx2x2);
    if(double(sqrt(f1^2+f2^2))<=0.001) %最優(yōu)值收斂條件
    a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f));
    break;
    else
    X=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';
    x1=X(1,1);x2=X(2,1);
    end
    end
    if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) %罰因子迭代收斂條件
    a(k+1) %輸出最優(yōu)點坐標,罰因子迭代次數(shù),最優(yōu)值
    b(k+1)
    k
    f0(k+1)
    break;
    else
    m(k+1)=c*m(k);
    end
    end 方法二:外點梯度法:
    clc
    m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);?
    syms d x1 x2 e;?
    m(1)=1;c=10;a(1)=0;b(1)=0;?
    f=x1^2+x2^2+e*(1-x1)^2; f0(1)=1;?
    fx1=diff(f,'x1');?
    fx2=diff(f,'x2');
    for k=1:100?
    x1=a(k);x2=b(k);e=m(k);
    for n=1:100?
    f1=subs(fx1);
    f2=subs(fx2);
    if(double(sqrt(f1^2+f2^2))<=0.002)?
    a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f));
    break;
    else
    D=(x1-d*f1)^2+(x2-d*f2)^2+e*(1-(x1-d*f1))^2;?
    Dd=diff(D,'d'); dd=solve(Dd); x1=x1-dd*f1; x2=x2-dd*f2;
    end
    end
    if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001)?
    a(k+1)
    b(k+1)
    k
    f0(k+1)
    break;
    else
    m(k+1)=c*m(k);
    end
    end 2,用內點法求下列問題的最優(yōu)解
    內點牛頓法
    clc
    m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);
    syms x1 x2 e;
    m(1)=1;c=0.2;a(1)=2;b(1)=-3;
    f=x1^2+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1)); f0(1)=15;
    fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');
    for k=1:100
    x1=a(k);x2=b(k);e=m(k);
    for n=1:100

    f1=subs(fx1);
    f2=subs(fx2);
    f11=subs(fx1x1);
    f12=subs(fx1x2);
    f21=subs(fx2x1);
    f22=subs(fx2x2);
    if(double(sqrt(f1^2+f2^2))<=0.002)
    a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f));
    break;
    else
    X=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';
    x1=X(1,1);x2=X(2,1);
    end
    end
    if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001)
    a(k+1)
    b(k+1)
    k
    f0(k+1)
    break;
    else
    m(k+1)=c*m(k);
    end
    end
    ?


    總結

    以上是生活随笔為你收集整理的内点法+外点法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。