主要内容

OptimizationProblem

描述

一个OptimizationProblem对象描述了一个优化问题,包括优化的变量、约束条件、目标函数以及目标是最大化还是最小化。解决一个完整的问题解决

提示

有关完整的工作流程,请参见具体问题具体分析优化工作流程

创建

创建一个OptimizationProblem对象的使用optimproblem

警告

基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。金宝app如果函数计算有一个复值,即使是中间值,最终结果也可能是不正确的。

属性

全部展开

问题标签,指定为字符串或字符向量。本软件不使用描述.它是一个您可以出于任何原因使用的任意标签。例如,可以共享、归档或显示模型或问题,并将关于模型或问题的描述信息存储在描述财产。

例子:“描述旅行推销员的问题”

数据类型:字符|字符串

最小化或最大化的指示,指定为“最小化”“最大化”.这个属性影响如何解决的工作原理。

您可以使用简短的名称“最小值”“最小化”“马克斯”“最大化”

例子:“最大化”

数据类型:字符|字符串

此属性是只读的。

对象中的优化变量,指定为结构OptimizationVariable对象。

数据类型:结构体

目标函数,指定为标量OptimizationExpression或者作为一个包含标量的结构OptimizationExpression.当您创建问题时,或稍后使用点符号将目标函数合并到问题中。

概率= optimproblem (“目标”5 *布朗尼+ 2 *饼干)%或概率= optimproblem;概率。目标= 5*布朗尼蛋糕+ 2*饼干

优化约束,指定为OptimizationConstraint对象,一个OptimizationEquality对象,一个OptimizationInequality对象,或作为包含这些对象之一的结构。当你创建问题时将约束合并到问题中,或者稍后使用点表示法:

若干=结构(“TrayArea”,10*布朗尼+ 20*饼干<=托盘大小,...“TrayWeight”,12*布朗尼蛋糕+ 18*饼干<=最大重量);概率= optimproblem (“约束”若干)%或proba . constraints . trayweight = 12*brownies + 18*cookies <= maxweight

通过将约束设置为来移除约束[]

prob.Constraints.TrayArea = [];

对象的功能

optimoptions 创建优化选项
prob2struct 转换优化问题或方程问题的求解形式
显示 显示优化对象信息
解决 解决优化问题或方程问题
varindex 将问题变量映射到基于求解器的变量索引
保存优化对象描述

例子

全部折叠

创建一个最大化的线性规划问题。该问题有两个正变量和三个线性不等式约束。

概率= optimproblem (“ObjectiveSense”“马克斯”);

创建积极的变量。在问题中包含一个目标函数。

x = optimvar (“x”、2、1,下界的, 0);概率。目标= x(1) + 2*x(2);

在问题中创建线性不等式约束。

x(1) + 5*x(2) <= 100;x(1) + x(2) <= 40;2 . x(1) + x(2)/2 <= 60;prob.Constraints。cons1 = cons1;prob.Constraints。cons2 = cons2;prob.Constraints。cons3 = cons3;

回顾这个问题。

显示(概率)
优化问题:求解:x最大化:x(1) + 2*x(2)受制于con1: x(1) + 5*x(2) <= 100受制于con2: x(1) + x(2) <= 40受制于con3: 2*x(1) + 0.5*x(2) <= 60可变边界:0 <= x(1) 0 <= x(2)

解决这个问题。

索尔=解决(问题);
使用linprog解决问题。找到最优解。
sol.x
ans =2×125.0000 - 15.0000
介绍了R2017b