You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Docplex CP创建仅可取值于指定整数列表的变量

如何在docplex.cp中创建仅取指定整数列表值的变量

好问题!既然你已经掌握了创建固定范围整数变量的方法,那要实现仅能取指定列表中值的变量,docplex.cp提供了两种简单直接的方式,我给你一步步演示:

方法1:直接通过domain参数定义

integer_var方法本身支持传入domain参数,直接指定变量的可选取值列表,这是最直观的实现方式:

from docplex.cp.model import CpoModel
mdl = CpoModel()
# 创建只能取1、3、5、6的整数变量
restricted_var = mdl.integer_var(domain=[1, 3, 5, 6], name="restricted_var")

这里的domain参数接受一个整数列表,变量的取值会被严格限制在这个列表内,不需要额外添加约束。

方法2:通过member_of约束限制取值

如果你的变量已经先定义了一个大致范围,或者需要后续动态调整可选值,可以先创建变量,再添加member_of约束来缩小取值范围:

from docplex.cp.model import CpoModel
mdl = CpoModel()
# 先创建一个范围在1-6之间的整数变量
restricted_var = mdl.integer_var(min=1, max=6, name="restricted_var")
# 添加约束:变量必须属于指定的列表
mdl.add(restricted_var.member_of([1, 3, 5, 6]))

这种方式更灵活,比如你可以根据业务逻辑动态修改约束里的列表,或者结合其他条件一起使用。

验证取值(可选)

如果你想确认变量是否符合预期,可以求解模型看看实际结果:

sol = mdl.solve()
if sol:
    print(f"变量的取值为: {sol[restricted_var]}")

运行后你会看到输出的结果只会是1、3、5、6中的一个。

内容的提问来源于stack exchange,提问作者Erik Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:24:26