Main Content

优化实时编辑器任务

什么是优化实时编辑器任务?

优化实时编辑器任务为 fminbndfminsearchfzerolsqnonneg 求解器提供可视化界面。要开始任务,请点击新建实时脚本按钮。然后点击插入选项卡,选择任务 > 优化

Optimize Live Editor task.

最小化包含若干个变量的非线性函数

此示例说明如何使用优化实时编辑器任务最小化函数 f(x,y)=100(yx2)2+(ax)2,其中变量 a = π。

有关说明类似优化问题的视频,请参阅如何使用优化实时编辑器任务

  1. 主页选项卡上的文件部分中,点击新建实时脚本按钮。

  2. 插入优化实时编辑器任务。点击插入选项卡,然后在代码部分中选择任务 > 优化

    Insert task Optimize

  3. 要用于输入问题数据,请点击分节符按钮。新节出现在任务的上方和下方。

  4. 优化任务上方的节中,输入以下代码。

    a = pi;
    x0 = [-1 2];
  5. 要将这些变量放入工作区中,请按 Ctrl + Enter

  6. 在任务的指定问题类型部分中,点击目标 > 非线性按钮和约束 > 无约束按钮。任务显示推荐的求解器为 fminsearch

    注意

    如果您有 Optimization Toolbox™,此时向您推荐的求解器会有所不同。选择 fminsearch 以继续示例演示。

  7. 选择问题数据部分中,选择目标函数 > 局部函数,然后点击新建按钮。函数脚本出现在任务下的一个新节中。编辑结果代码以包含以下取消注释的行。

    function f = objectiveFcn(optimInput,a)
    x = optimInput(1);
    y = optimInput(2);
    f = 100*(y - x^2)^2 + (a - x)^2;
    end
  8. 选择问题数据部分中,选择 objectiveFcn 作为局部函数。

  9. 选择问题数据部分的函数输入下,选择优化输入 > optimInput固定输入:a > a

    Local function objectiveFcn, optimization input optimInput, fixed input a

  10. 选择初始点 (x0) > x0

  11. 显示进度部分中,选择图的目标值

  12. 要运行求解器,请点击任务窗口右上角的选项按钮 ,然后选择运行节

    Run Section

    出现以下图。

    Plot showing values decreasing from 120 to 4e-11 in fewer than 150 iterations

  13. 要查看解点,请查看优化任务的顶部。

    Variables solution and objectiveValue are returned

    solutionobjectiveValue 变量返回到工作区。要查看这些变量的值,请在任务下方插入分节符并输入以下代码。

    disp(solution)
    disp(objectiveValue)
  14. Ctrl+Enter 键运行该节。

    disp(solution)
        3.1416    9.8696
    disp(objectiveValue)
       3.9946e-11

求解标量方程

此示例说明如何使用优化实时编辑器任务找到点 x,其中 cos(x) = x。

  1. 主页选项卡上的文件部分中,点击新建实时脚本按钮。在实时脚本中输入以下代码行。

    fun = @(x)cos(x) - x;
    x0 = 0;

    第一行定义匿名函数 fun,该函数在 x 处取值 0,其中 cos(x) = x。第二行定义初始点 x0 = 0,其中 fzero 开始搜索解。

  2. 通过按 Ctrl+Enter 键,将这些变量放入 MATLAB® 工作区中。

  3. 插入优化实时编辑器任务。点击插入选项卡,然后在代码部分中选择任务 > 优化

  4. 在任务的指定问题类型部分中,选择求解器 > fzero

  5. 选择问题数据部分中,选择目标函数 > 函数句柄,然后选择 fun。选择初始点 (x0) > x0

    fzero with choices made

  6. 在“显示进度”部分中,选择图的目标值

    Plot function is Objective value.

  7. Ctrl+Enter 键运行求解器。

    Plot of solution process, seven iterations with final five all nearly zero.

  8. 要查看解值,请点击插入选项卡上的分节符按钮,在任务下方插入新节。在新节中,输入 solution,然后按 Ctrl+Enter 键。

    solution
    solution = 0.7391

另请参阅

| |

相关主题