Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

evaluate

计算优化表达式

说明

使用 evaluate 求在某点处优化表达式的数值。

提示

有关完整的工作流,请参阅基于问题的优化工作流基于问题的方程求解工作流

示例

val = evaluate(expr,pt) 返回在值 pt 上的优化表达式 expr 的值。

示例

全部折叠

用两个变量创建一个优化表达式。

x = optimvar('x',3,2);
y = optimvar('y',1,2);
expr = sum(x,1) - 2*y;

计算该表达式在某点处的值。

xmat = [3,-1;
    0,1;
    2,6];
sol.x = xmat;
sol.y = [4,-3];
val = evaluate(expr,sol)
val = 1×2

    -3    12

求解线性规划问题。

x = optimvar('x');
y = optimvar('y');
prob = optimproblem;
prob.Objective = -x -y/3;
prob.Constraints.cons1 = x + y <= 2;
prob.Constraints.cons2 = x + y/4 <= 1;
prob.Constraints.cons3 = x - y <= 2;
prob.Constraints.cons4 = x/4 + y >= -1;
prob.Constraints.cons5 = x + y >= 1;
prob.Constraints.cons6 = -x + y <= 2;

sol = solve(prob)
Solving problem using linprog.

Optimal solution found.
sol = struct with fields:
    x: 0.6667
    y: 1.3333

求目标函数在解处的值。

val = evaluate(prob.Objective,sol)
val = -1.1111

输入参数

全部折叠

优化表达式,指定为 OptimizationExpression 对象。

示例: expr = 5*x+3,其中 xOptimizationVariable

表达式中变量的值,指定为结构体。结构体 pt 具有以下要求:

  • expr 中的所有变量都与 pt 中的字段名称匹配。

  • 匹配字段名称的值是数值。

例如,pt 可以是优化问题的解,由 solve 返回。

示例: pt.x = 3, pt.y = -5

数据类型: struct

输出参数

全部折叠

表达式的数值,以双精度值返回。

警告

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

版本历史记录

在 R2017b 中推出