批量约束示例

本示例使用名为 Product Mix.xlsx 的 Crystal Ball Decision Optimizer 示例文件。如果您将其打开,启动 OptQuest,然后选择约束,则会显示约束面板(图 3.2 “Product Mix 示例文件的“约束”面板”)。

图 3.2. Product Mix 示例文件的“约束”面板

“约束”面板针对每种肉(小牛肉、猪肉和牛肉)显示一个约束,并使用 Microsoft Excel SUMPRODUCT 公式定义每个约束。

这三种肉(小牛肉、猪肉和牛肉)中的每一种都有一个 Microsoft Excel SUMPRODUCT 公式,公式将五种产品中的每一种(以磅为单位)与生产量相乘,然后指明得出的量必须等于或小于现有库存量。目标和要求进一步限制问题,如“OptQuest 结果”窗口(图 3.3 “默认约束的 Product Mix 结果”)所示。请注意,注释用于标记约束。

图 3.3. 默认约束的 Product Mix 结果

Product Mix 问题的“OptQuest 结果”窗口表明,为了在满足库存约束和装箱要求的前提下最大限度地提高利润,使用的猪肉略多于小牛肉,使用的小牛肉约为牛肉的两倍。

为了使用批量约束,要将 SUMPRODUCT 公式置于 P21、P22 和 P23 单元格中,将现有库存置于 J21、J22 和 J23 单元格中。例如,单元格 P21 包含 =SUMPRODUCT(Model!C42:G42, Model!C21:G21)。需要重写约束公式以引用这些单元格(图 3.4 “三个约束重写为一个批量约束公式”)。

图 3.4. 三个约束重写为一个批量约束公式

公式 Model!C23:E23 <= Model!C14:E14 引用单元格 C23:E23 中的 SUMPRODUCT 公式,并指明结果必须等于或小于单元格 C14:E14 中的现有库存。

图 3.5 “批量约束公式的 Product Mix 结果” 显示通过图 3.4 “三个约束重写为一个批量约束公式” 所示的约束公式得到的结果。因为是将同一个种子值用于两次优化,因此结果是相同的,但呈现的顺序不同。请注意系统如何针对每个约束公式显示单独的结果,尽管它们最初是通过一个公式定义的。

图 3.5. 批量约束公式的 Product Mix 结果

通过批量约束公式得到的结果。它们与三个默认约束公式得到的结果完全相同,并且每种肉都有一个带标签的行。