matlab 一维搜索求极值

matlab 一维搜索求极值,第1张

我来回答吧,其实我也是刚做这个,只搭模不过并不是很厉害,我做了一个进退算法的程序如下:

%本程序是进退算法的程序。我们可以通过它确定一个合适的初始区间,

%之后再利用黄金分割法等其他一维搜索方法确定最优点。

function [a,b]=jtsf(alpha0) %alpha0是初始点

step=1%初始步长

a1=alpha0

a2=a1+step

f1=f(a1)

f2=f(a2)

if f1>f2

while 1 %始终循环,通过break可以结束循环灶枝型

step=2*step

a1=a2

a2=a2+step

f1=f2f2=f(a2)

if f1<f2

break

end

end

else

step=-step/4

while 1 %始终循环,通过break可以结束循环

a2=a1

a1=a1+step

f2=f1

f1=f(a1)

if f1>f2

break

end

end

end

a=a1

b=a2

function f=f(x)

f=4*x^2-4*x+7%函数

===================================

但是我并没有接着做,我还得在学习,你也可以根据这隐猜些在学习吧

这种带有亏前乱非线性约束的应该用fmincon求解。

function [c, ceq] = mycon(x)

    L = [100 1e3 1e3 10*ones(1,5)]'

    U = [1e4 1e4 1e4 1e3*ones(1,5)]'

    c = [25*(x(4)+x(6)) - 1e4

        25*(-x(4)+x(5)+x(7)) - 1e4

        -x(5)+x(8) - 100

       销档 100*x(1)-x(1)*x(6)+833.33252*x(4) - 83333.333

        x(2)*x(4)-x(2)*x(7)-1250*x(4)+1250*x(5)

      悔陆  x(3)*x(5)-x(3)*x(8)-2500*x(5) + 1.25e6

        x-U

        L-x]

    ceq = []

end

主程序调用:

f = @(x)sum(x(1:3))

x = fmincon(f,(L+U)/2,[],[],[],[],[],[], @mycon, optimset('Display', 'off'))

f(x)

结果与标准答案一致


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12439509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存