0 / 0
Go back to the English version of the documentation
添加多概念约束和自定义决策:Decision Optimization 移位赋值
Last updated: 2024年11月21日
使用 Decision Optimization Modeling Assistant 创建约束和定制决策

Decision Optimization Modeling Assistant 示例显示如何使用多概念迭代,约束中的 associated 关键字,如何定义自己的定制决策以及定义逻辑约束。 为了进行说明,将使用资源分配问题 ShiftAssignment,并且在 DO-samples中提供了包含数据的已完成模型。

准备工作

要求
要编辑和运行 Decision Optimization 模型,必须满足以下先决条件:
管理员编辑者 角色
您必须在项目中具有 管理员编辑者 角色。 共享项目的查看者只能看到实验,但无法修改或运行实验
watsonx.ai运行时服务
您必须有一个与项目相关联的watsonx.aiRuntime服务。 您可以在创建 Decision Optimization 试验时添加一个。
部署空间
您必须具有与 Decision Optimization 试验相关联的部署空间。 您可以在创建 Decision Optimization 试验时选择部署空间。

关于本任务

此示例涉及将员工分配到不同的轮班,并且每天都要求必须有所需数量的员工待命。 此样本中使用的文件在 DO-samples中可用。

此视频提供了一种直观方法来了解本文档中的概念和任务。Decision Optimization 试验中装入示例后,可以关注视频。

视频免责声明: 此视频中的一些次要步骤和图形步骤可能与您的平台不同。 用户界面也经常得到改进。

过程

要下载并打开样本,请执行以下操作:

  1. DO-samples中的 Model_Builder 子文件夹下载 ShiftAssignment.zip 文件。 选择相应的产品和版本子文件夹。
  2. 打开项目或创建空项目。
  3. 选择 资产 选项卡。
  4. 选择新资产 > 解决优化问题在里面使用模型部分。
  5. 在打开的 " 创建 Decision Optimization 试验 " 窗口中单击 本地文件
  6. 在本地浏览以查找并选择下载的 ShiftAssignment.zip 归档。 单击 打开。 或者,使用拖放操作。
  7. 如果您还没有将 "watsonx.ai运行时间服务与项目关联起来,则必须先选择 "添加 "Machine Learning服务来选择或创建一个服务,然后再为 "试验选择部署空间。
  8. 单击 创建
    将创建与样本同名的 Decision Optimization 模型。
  9. 打开方案窗格并选择 AssignmentWithOnCallDuties 方案。

结果

AssignmentWithOnCallDuties 方案准备数据 视图 中,可以看到已导入的数据资产。 这些表格表示轮班、需要分配到这些轮班的员工以及必需的待命职责的天数。

显示 "人员分配" 数据的 "准备数据" 视图

使用多概念迭代

关于本任务

假设您想要模型规划表示每个员工每天工作不超过一个轮班的规则。 例如,不能在同一天向员工分配两个轮班。 如本模型阐述中所示,您可以使用一周中每一天的约束。

多个约束 (每天一个) ,用于制定每个员工每天只有一个轮班

但是,列出一周中每一天的约束是很繁琐的: 如果模型基于一年中的几天,那么您必须列出其中数百个类型的约束。 以下过程显示如何使用多概念迭代和 associated 关键字来表示对多个概念的迭代。 因此,您可以仅使用一个短语来表达这样的规则。

过程

要使用多概念迭代,请执行以下步骤。

  1. 单击侧边栏中的 构建模型 以查看模型阐述。
    模型规划显示将员工分配到轮班的意图及其目标和约束。
  2. 展开约束 For each Employee-Day combination , number of associated Employee-Shift assignments is less than or equal to 1

结果

已展开员工日组合约束

此约束使用关键字 associated 将员工和天数组合在一起,因此表达式在员工和天数上迭代。 您可以看到 employee-day combination 中的 employee 映射到 employee-shift assignment 中的 employee。 而且 employee-day combination 中的 day 也映射到 assigned shift 的 day 属性。 因此,将为您正确且自动地处理这些组合。

通过此多概念迭代,您可以指定组合不同概念的新规则组。

定义定制决策

关于本任务

假设您还想分配待命职责。 您可以创建另一个模型,目的是将员工分配到待命职责,但是您将无法在这两个模型之间声明依赖关系规则。 通过将定制决策添加到现有模型,如本示例中所示,您可以定义轮班分配与待命职责之间的依赖关系。 此处,定制决策被称为 OnCallDuties

过程

要定义定制决策,请执行以下步骤。

  1. 单击 构建模型 以查看 AssignmentWithOnCallDuties 方案的模型阐述。
    显示 "轮班分配" 阐述的构建模型视图

    在第二个目标中使用定制决策 OnCallDuties。 此目标确保待命职责的数量与员工数保持平衡。

    约束 在调用时职责约束 确保满足 "日" 表中列出的待命值班要求。

    以下步骤显示如何定义此定制决策 OnCallDuties

  2. 打开 " 设置 " 窗格,并注意 可视化和编辑决策 设置为 true (如果设置为缺省值 false ,那么将其设置为 true)。

    此设置会将 决策 选项卡添加到 " 添加到模型 " 窗口。

    "添加到模型" 窗格的 "决策" 选项卡显示两个意向

    您可以在此处看到 OnCallDuty 被指定为分配决策 (用于将员工分配到待命职责)。 使用对数据表 DayEmployee 的引用定义其两个维度。 这意味着您的模型还将为员工分配待命职责。 从原始意图指定 Employee-Shift 分配决策。

  3. 可选: [待记录] 字段中输入您自己的文本以描述 OnCallDuty
  4. 可选: 要在 决策 选项卡中创建自己的决策,请单击 输入名称,输入名称并单击 Enter 键。
    将创建具有该名称的新决策 (意向) ,其中一些突出显示的字段将通过使用下拉菜单来完成。 例如,如果选择 分配 作为 决策类型,那么将创建两个维度。 因为分配涉及将至少一个事项分配给另一个,因此必须至少定义个两个维度。 使用选择表字段来定义维度。

结果

您不再仅限于使用根据您的意图推断的决策。 现在,您可以使用高级设置和决策选项卡来定义自己的定制决策,您可以在其中选择决策类型及其维度 (数据表或列)。 然后,您可以配置使用新定义的决策的新规则和目标。

使用逻辑约束

关于本任务

假设您想要确保在员工休假时不会分配待命职责。 您可以使用逻辑约束来实现此目标,如下所示。

过程

要使用逻辑约束:

  1. 查看约束 逻辑约束建议
    此约束确保对于每个员工和日组合,当不存在任何关联的分配 (例如,该员工在该日休假) 时,不会在该日向该员工分配任何待命职责。 请注意使用 if...then 关键字来定义此逻辑约束。
  2. 可选: 通过在建议中进行搜索,向模型添加其他逻辑约束。

结果

此约束将员工分配与包含待命职责的轮班链接在一起。 使用单独的模型,一个用于原始轮班分配,另一个用于随叫随到的职责,您无法实现此链接。

通过使用逻辑约束以及 associated 关键字,可以指定如果一个约束适用,那么另一个约束也适用。 将自动在所用的概念之间生成必需的逻辑连接,而不必使用更复杂的连接表达式。

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more