主要内容

使用Solver-Based优化有效的实时编辑任务

有效地组织任务

优化活动脚本中的活动编辑器任务,该任务的上面有一个节,下面有两个或多个节。打开优化任务中的实时编辑器,单击插入TAB,然后选择任务>优化.使用节休息按钮。插入选项卡插入一个新部分。

Live Script的数据部分在顶部,然后优化Live Editor任务,然后输出部分,然后函数部分。

默认情况下,右边的输出按钮在任务窗口右侧被选中。

右键输出

此选择将输出放在任务的右侧。要将输出放在任务下面,请选择输出内联按钮。

输出内联按钮

  • 在任务上方,包括用于优化所需数据的部分。例如,初始点x0,任何约束矩阵,如Aeq说真的,目标函数或非线性约束函数的额外参数属于任务上面的部分。数据必须包含在任务上方的部分中,以便能够成功运行整个脚本,例如,在保存和重新加载脚本之后。数据在脚本需要访问它之前加载到工作区中。

  • 将任务的输出放在任务下面的部分中。例如,显示解决方案objectiveValue此部分中的输出,在任务将它们写入工作区之后。您可以在任务下面包含多个部分,以查看和处理任务的结果。

  • 最后一部分包含该问题的所有局部函数。本地函数必须包含在活动脚本的末尾。但是,如果您有从多个脚本访问的函数,请将它们作为单独的MATLAB文件包括在内®路径可以更方便。

将优化变量放在一个向量中,数据放在其他变量中

优化是基于求解器的优化和方程求解的前端。因此,它要求所有变量都放在一个向量中,如中所述标量目标函数的编写.例如,假设你的目标函数是

f x y z w x 2 + y 4 经验值 z / 1 + x 2 w 经验值 z

在这个例子中,变量xz是优化变量,还是变量yw都是固定数据。控件下面的一节中表示函数优化任务如下。

函数F = myfun(vars,y,w) x = vars(1);Z = vars(2);F = (x²+ y²)*exp(-z/(1 + x²))*w*exp(-z);结束

定义变量的值yw在任务上面的一节中。

Y = log(pi);W = 2/3;

通过按,运行任务上面的部分按Ctrl + Enteryw进入工作区。中选择适当的输入选择问题数据部分任务。

优化输入= vars,固定输入y = y,固定输入w = w。

指定问题类型以获取推荐的解决方案

指定问题类型部分提供了用于选择目标函数类型和约束类型的按钮。选择这些项目后,优化减少可用求解器的数量,并显示一个推荐的求解器。例如,对于一个具有最小二乘目标和上下界的问题,优化这表明lsqnonlin推荐使用Solver。

最小二乘目标,下界和上界导致lsqnonlin推荐

若要使用当前选择中不可用的求解器,请单击每个所选按钮取消选择所有问题类型按钮。

运行任务的方法

您可以运行优化实时编辑器任务的各种方式:

  • 点击选项按钮在任务窗口的右上方,并选择运行部分

    从菜单运行section

  • 单击任务,然后按按Ctrl + Enter

  • 属性将任务设置为在任何更改后自动运行自动运行按钮(位于任务窗口右上方的选项按钮旁边)。如果您的任务很耗时,请不要选择此设置。

    自动运行部分

  • 通过单击任务左侧的条纹条,运行包含任务的部分。

    任务左边的条纹条

  • 中运行整个活动脚本住编辑器选项卡,点击运行按钮,或按下F5

    运行按钮

查看求解器进度

Live Editor任务使您能够轻松地监视求解程序的进度。为确保求解器正常执行,至少查看目标函数值图。此外,通过使用绘图函数,您可以停止求解器而不会丢失任何数据。

绘制客观值

查看等效代码

优化在内部创建代码以匹配可视选择。您可以通过单击选项按钮查看代码并选择控件和代码代码只

选择控件和代码

代码显示在任务下面。

Lsqnonlin选项和运行语法

您可以选择并复制此代码以修改它,以便在其他上下文中使用。

若要将任务从可视界面转换为可用的代码,请选择将任务转换为可编辑代码.这个选择去掉了视觉效果优化接口,并允许您继续使用代码。

转换任务菜单项

另请参阅

相关的话题