Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

optimproblem

创建优化问题

说明

示例

prob = optimproblem 用默认属性创建优化问题。

示例

prob = optimproblem(Name,Value) 使用一个或多个 Name,Value 对组参数指定的其他选项。例如,要指定最大化问题而不是最小化问题,请使用 prob = optimproblem('ObjectiveSense','maximize')

示例

全部折叠

使用默认属性创建优化问题。

prob = optimproblem
prob = 
  OptimizationProblem with properties:

       Description: ''
    ObjectiveSense: 'minimize'
         Variables: [0x0 struct] containing 0 OptimizationVariables
         Objective: [0x0 OptimizationExpression]
       Constraints: [0x0 struct] containing 0 OptimizationConstraints

  No problem defined.

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

prob = optimproblem('ObjectiveSense','max');

创建正变量。在问题中设置一个目标函数。

x = optimvar('x',2,1,'LowerBound',0);
prob.Objective = x(1) + 2*x(2);

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

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

检查此问题。

show(prob)
  OptimizationProblem : 

	Solve for:
       x

	maximize :
       x(1) + 2*x(2)


	subject to cons1:
       x(1) + 5*x(2) <= 100

	subject to cons2:
       x(1) + x(2) <= 40

	subject to cons3:
       2*x(1) + 0.5*x(2) <= 60

	variable bounds:
       0 <= x(1)
       0 <= x(2)

求解。

sol = solve(prob);
Solving problem using linprog.

Optimal solution found.
sol.x
ans = 2×1

   25.0000
   15.0000

输入参数

全部折叠

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 要指定最大化问题,请使用 prob = optimproblem('ObjectiveSense','maximize')

问题约束,指定为 OptimizationConstraint 数组或以 OptimizationConstraint 数组为字段的结构体。

示例: prob = optimproblem('Constraints',sum(x,2) == 1)

问题标签,指定为字符串或字符向量。该软件不使用 Description 进行计算。Description 是任意标签,您可以将其用于任意目的。例如,您可以共享、存档或呈现模型或问题,并在 Description 中存储关于模型或问题的描述性信息。

示例: "An iterative approach to the Traveling Salesman problem"

数据类型: char | string

目标函数,指定为标量 OptimizationExpression 对象。

示例: prob = optimproblem('Objective',sum(sum(x)))(适用于二维变量 x

优化的意义,指定为 'minimize''maximize'。您还可以指定 'min' 以获得 'minimize' 或指定 'max' 以获得 'maximize'。当 ObjectiveSense'minimize' 时,solve 函数将最小化目标;当 ObjectiveSense'maximize' 时,函数将最大化目标。

示例: prob = optimproblem('ObjectiveSense','max')

数据类型: char | string

输出参数

全部折叠

优化问题,以 OptimizationProblem 对象形式返回。通常,要完成问题描述,您需要指定目标函数和约束。但是,您可能会遇到没有目标函数的可行性问题,或遇到没有约束的问题。通过调用 solve 求解完整的问题。

警告

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

在 R2017b 中推出