⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opt11.m

📁 模式搜索法源程序。模式搜索方法是求解最优化问题的一种直接搜索方法,它不用目标函数与约束函数的导数信息而只用函数值信息,是求解不可导或求导代价较大的最优化问题的一种有效方法。
💻 M
字号:
% 最优化作业 第十一章 模式搜索法
% 08203-5班 王永亮 2008200383
clc;
clear all;
delta = 1; alpha = 1; beta = 0.25; epsilon = 0.11;
k = 1; j = 1;
e1 = [1 0]';  e2 = [0 1]';
% x1 = [0 0]';  %(1)
beta = 0.5;  x1 = [1 1]';  %(2)
y1 = x1;
for i = 1 : 1 : 20
    fy1 = myfx(y1)
    p = y1 + delta * e1;  fx = myfx(p)
    if fx < fy1
        disp('沿 y1 + delta * e1 方向成功!');
        y2 = p
    else
        disp('沿 y1 + delta * e1 方向失败!');
        p = y1 - delta * e1;  fx = myfx(p)
        if fx < fy1
            disp('沿 y1 - delta * e1 方向成功!');
            y2 = p
        else
            disp('沿 y1 - delta * e1 方向失败!');
            y2 = y1
        end
    end
    fy2 = myfx(y2)
    p = y2 + delta * e2;  fx = myfx(p)
    if fx < fy2
        disp('沿 y2 + delta * e2 方向成功!');
        y3 = p
    else
        disp('沿 y2 + delta * e2 方向失败!');
        p = y2 - delta * e2;  fx = myfx(p)
        if fx < fy2
            disp('沿 y2 - delta * e2 方向成功!');
            y3 = p
        else
            disp('沿 y2 - delta * e2 方向失败!');
            y3 = y2
        end
    end
    x0 = x1;
    if myfx(y3) < myfx(x1)
        disp('f(y3) < f(x?)');
        x1 = y3
        y1 = x1 + alpha * (x1 - x0)
    else
        disp('f(y3) >= f(x?)');
        if delta <= epsilon
            disp('delta <= epsilon');
            x1
            break;
        else
            disp('delta > epsilon');
            delta = beta * delta
            y1 = x0
            x1 = x0
        end
    end
    C = input('Continue?');
    if C == 0
        break;
    end
end

⌨️ 快捷键说明

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