【问题标题】:How to add an additional binary variable with CPLEX and Python?如何使用 CPLEX 和 Python 添加额外的二进制变量?
【发布时间】:2019-11-25 11:34:23
【问题描述】:

如果工作i 被分配给工人j 工作k 和班次t,我有一个整数规划问题,决策变量X_i_j_k_t 为1。我正在最大化分配订单给我的工人的利益。我还有一个额外的二进制变量Y_i_k_t,如果作业被执行并且给定的日期和班次(作业可能需要多个工人),则为 1。如何在 CPLEX 中添加此变量?比如形成sum(i, k, t)(Y_i_k_t) <= 1(订单不能重复一次)。

提前谢谢你

【问题讨论】:

  • 欢迎来到 Stackoverflow!请考虑阅读网站的“如何提问”部分。请发布您迄今为止尝试过的代码,并附上您遇到的任何特定错误案例。

标签: python mathematical-optimization linear-programming cplex


【解决方案1】:

您没有说明您使用的是 CPLEX Python API 还是 docplex。但无论哪种情况,您都可以多次调用创建变量的函数。

所以在 CPLEX Python API 中再次调用Cplex.variables.add() 以添加另一组变量。

在 docplex 中,只需为 Y 变量再次调用 Model.binary_var_dict()(或您用来创建 X 的任何方法)。

【讨论】:

  • 对不起。我正在使用 CPLEX Python API。那么,使用 cplex.variables.add() 我可以添加该二进制变量吗?我不确定该怎么做。
  • 你能用创建 X 变量的代码来扩充你的问题吗?然后我可以向您展示如何类似地创建 Y 变量。
  • my_problem.variables.add(obj = coeficientes_funcion_objetivo, lb = [0]*data.n, ub = [1]*data.n, types=['B']*data.n) .其中“coeficientes_funcion_objetivo”是我的清单,每个订单都有每个需要的工人的好处。
  • 函数返回 X 变量的索引。现在做同样的事情来创建 Y 变量并获取它们的索引。也许看看 CPLEX 附带的示例。有几个示例可以创建多种类型的变量。例如,admipex8.py 创建名为 supplycost 的变量。
  • 好的,我想我明白了,谢谢!这个问题的目标函数是最大化收益减去成本。这是两个不同的数目。如何使用 CPLEX Python API 做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
相关资源
最近更新 更多