黄金分割法求优化问题.txt

来自「黄金分割发求优化问题」· 文本 代码 · 共 40 行

TXT
40
字号
function [alfa,fval]=GoldenSM(a,b,s,x0)
alfa1=a+0.382*(b-a);
x1=x0+alfa1*s;	
y1=myfun(x1);
alfa2=a+0.618*(b-a);
x2=x0+alfa2*s;
y2=myfun(x2);
while (b-a)>0.000001
    if y1<y2
        b=alfa2;
        alfa2=alfa1;
        y2=y1;
        alfa1=a+0.382*(b-a);
        x1=x0+alfa1*s;
        y1=myfun(x1);
    else
        a=alfa1;
        alfa1=alfa2;
        y1=y2;
        alfa2=a+0.618*(b-a);
        x2=x0+alfa2*s;
        y2=myfun(x2);
    end
end
alfa=0.5*(a+b);
x=x0+alfa*s;
fval=myfun(x);
% 以下两行输出辅助信息,你可以在你很熟练而不需要它的时候删掉它们
str=sprintf('the minmum result is:\n alfa*=%f\nf(x*)=%f',alfa,fval);
disp(str);
function y=distance(x1,x2)
[m,n]=size(x1);
sum=0;
for i=1:m
    sum=sum+(x1(i)-x2(i))^2;
end
y=sqrt(sum);
%输入你要处理的目标函数,每次新的优化计算的时候要修改
%注意a是自变量,xe代表初始点,e代表搜索方向

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?