Main Content

优化

在实时编辑器中优化或求解方程

说明

优化任务允许您在两种方法之间进行选择,以交互方式优化问题或求解非线性方程组:

  • 基于问题(推荐)- 创建符号优化变量和表达式来表示目标函数和约束或方程。

  • 基于求解器 - 使用标准 MATLAB® 代码表示目标函数和约束或方程。

该任务会自动为您的实时脚本生成 MATLAB 代码。

使用此任务的基于问题的版本,您可以:

  • 指定优化变量数组,包括其边界和初始值。

  • 指定问题类型:最小化、最大化、可行性或方程求解。

  • 通过编写表达式或浏览查找函数来指定目标函数和约束函数。

  • (可选)选择求解器,并指定非默认选项。

  • 运行优化。

使用此任务的基于求解器的版本,您可以:

  • 根据问题的特征选择一个求解器。如果您有 Global Optimization Toolbox,也可以选择使用它的求解器。

  • 通过编写函数或浏览查找函数来指定目标函数和约束函数。

  • 指定求解器选项。

  • 运行优化。

要开始使用优化,请参阅开始使用基于求解器的优化实时编辑器任务Get Started with Problem-Based Optimize Live Editor Task。有关如何使用优化任务的建议,请参阅Use Solver-Based Optimize Live Editor Task EffectivelyUse Problem-Based Optimize Live Editor Task Effectively。当前,您无法将 fseminfGlobalSearchMultiStart 求解器与优化任务结合使用。

有关实时编辑器任务的一般信息,请参阅将交互式任务添加到实时脚本中

Optimize task in Live Editor: Choose between problem-based (recommended) and solver-based

打开任务

要将优化任务添加到 MATLAB 编辑器中的实时脚本,请在实时编辑器的插入选项卡上,选择任务 > 优化

Insert an Optimize Live Editor task

或者,在脚本的代码块中,键入相关关键字,如 optimfmincon。从建议的命令自动填充项中选择优化

Choosing Optimize from command completion suggestions

参数

基于问题的变量名称是动态的;您可以根据通常的命名限制选择您喜欢的任何名称(请参阅变量名称)。

基于问题

问题类型,通过点击对应的标签按钮来指定。

目标函数,指定为优化表达式、局部函数或函数文件。当 GoalMinimizeMaximize 时适用。

对解的约束,指定为优化表达式、局部函数或函数文件。通过点击 + 按钮向问题添加约束。

问题方程,指定为优化表达式、局部函数或函数文件。当 GoalSolve equations 时适用。通过点击 + 按钮向问题添加方程。

任务的状态,指定为 Define problemSolve problem。有关详细信息,请参阅Use Problem-Based Optimize Live Editor Task Effectively

基于求解器

目标函数类型,通过点击对应的标签按钮来指定。所选目标函数确定哪些求解器可用,以及为该问题推荐哪个求解器(请参阅 Solver)。

约束类型,通过点击对应的标签按钮来指定。您可以指定多个约束类型。所选约束确定哪些求解器可用,以及为该问题推荐哪个求解器(请参阅 Solver)。

MATLAB 用于求解问题的优化求解器,通过从可用求解器列表中选择来指定。可用求解器和推荐求解器取决于您的许可证以及所选 ObjectiveConstraints

局限性

  • 当前,优化对多目标优化有以下限制。

    • 您必须使用具有多个输出的单一函数来指定目标函数。换句话说,您的目标函数必须输出一个值向量,每个目标对应一个条目。

    • 所有目标函数必须使用相同的含义,基于求解器的任务的最小化,以及基于问题的任务的最小化或最大化。

提示

  • 对于具有额外输入的函数,基于求解器和基于问题的优化任务的要求略有不同。

    • 基于求解器:选择优化变量,并指定哪些工作区变量包含固定数据输入。有关示例,请参阅Place Optimization Variables in One Vector and Data in Other Variables,其中包含三个函数输入:

      Optimization input = vars, Fixed input y = y, Fixed input w = w.

      优化仅在您指定所有函数输入后才生成代码。

    • 基于问题:为每个函数输入指定优化变量或工作区变量名称。如果函数签名中的输入参数名称与现有优化变量或工作区变量名称匹配,优化任务会自动选择该名称。

      Function inputs = x, y, a.

      优化仅在您指定所有函数输入后才生成代码。

  • 优化无法解析包含 varargin 输入的函数或包含错误的函数。

  • 如果从文件中选择函数,优化会将文件位置添加到您的 MATLAB 路径中。

  • 如果优化出现解析错误,或多个局部函数同名,则可用局部函数列表为空。

版本历史记录

在 R2020b 中推出

另请参阅

函数