约束规则和语法

一般而言,约束公式类似于标准 Microsoft Excel 公式。每个约束公式:

在“高级输入”模式下,决策变量可以直接按名称输入,但是在“简单输入”模式下,只能按单元格位置或范围名称在电子表格公式中引用它们。

在“简单输入”模式下,单元格引用和范围名称前面不能带有减号来表示应该将其从某些值中减去,除非它们是某个公式表达式的一部分,而不是单独的单元格引用或范围名称。

如果在“简单输入”模式下使用单元格选择器,只有简单的单元格引用或范围名称可以选择。不能包含系数或数学运算符。

通常,约束公式总是应该直接或间接引用至少一个决策变量。但是,在某些情况下,您可能希望采用其他某些方式来设置约束公式中的值(例如,用户定义的宏或其他某些程序)。在这些情况下,您应该采用 cell_reference < 常量的形式输入约束。OptQuest 认为该约束属于常量类型(因为它不包含决策变量),可能会警告您:如果不注意,约束可能会导致没有可行的解决方案。

约束公式中允许的数学运算包括:

表 3.1. “OptQuest 约束”面板中的数学运算

运算

语法

示例

加法

在各项之间使用 +

var1 + var2 = 30

减法

在各项之间使用 -

var1 - var2 = 12

乘法

在各项之间使用 *

4.2*var1 >= 9

除法

在各项之间使用 /

4.2/var1 >= 18

等式和不等式

在约束公式左侧和右侧之间使用 =、<= 或 >=。请注意,对于涉及连续决策变量的约束公式,将 < 和 > 当作 <= 和 >=。

var1 * var2 <= 5

指数

在项和指数幂之间使用 ^

var1^3


请注意,表 3.1 ““OptQuest 约束”面板中的数学运算” 中的示例针对“高级输入”模式。在“简单输入”模式下,运算符左侧的表达式将输入电子表格单元格。“约束”面板中的实际公式包括一个单元格引用、运算符以及一个值或另一个单元格引用。有关示例,请参阅图 4.14 “在“简单输入”模式下输入约束”

注:

尽管这些示例始终在运算符左侧显示一个公式,但实际上在左侧和右侧都可以有一个公式(或者电子表格中公式的单元格引用)。

您也可以在约束公式中使用 Microsoft Excel 函数和范围名称。

如果使用“高级输入”模式,将根据以下优先级执行计算:首先是乘除,然后是加减。例如,5*E6+10*F7-26*G4 表示:先将单元格 E6 中的值乘以 5 倍,然后将所得结果加上单元格 F7 中值的 10 倍,再从所得结果中减去单元格 G4 中值的 26 倍。您可以使用括号覆盖优先级。如果使用“简单输入”模式,在 Microsoft Excel 中建立公式,应用 Microsoft Excel 的优先级规则。

注:

OptQuest 现在支持带有单元格范围(例如 A1:A3 < B1:B3)的约束公式。有关详细信息,请参阅“使用批量约束”