【问题标题】:CPLEX Python API how to multiply a decision variable with a dummy in the objective function?CPLEX Python API 如何将决策变量与目标函数中的虚拟变量相乘?
【发布时间】:2019-11-26 15:44:43
【问题描述】:

我正在尝试将变量的乘法添加到目标函数。我有一个整数 x_t,我有一个二进制变量 w_t_1。我想在目标函数-1200 * w_t_1 * x_t。我该怎么做?我在 IBM 文档中找不到任何内容。

【问题讨论】:

  • 您使用的是 CPLEX Python API 还是 docplex?你在标题中提到了前者,但从你的问题的其余部分中不清楚是否真的如此。有关差异的更多信息,请参阅stackoverflow.com/questions/54891266
  • 我正在使用 Python API,很抱歉造成混淆。

标签: python linear-programming cplex


【解决方案1】:

让我给你一个非常简单的例子,来自zoo example

mdl.maximize(nbbus40*500*option1+nbbus30*400*option2 )

from docplex.mp.model import Model

mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')

mdl.parameters.optimalitytarget=3


mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')

mdl.minimize(nbbus40*500 + nbbus30*400)

mdl.solve()

for v in mdl.iter_integer_vars():
    print(v," = ",v.solution_value)

print()
print("with more constraints")

option1=mdl.binary_var(name='option1')
option2=mdl.binary_var(name='option2')

mdl.add(nbbus40<=10)
mdl.add(nbbus30<=10)
mdl.add(option1==(nbbus40<=3))
mdl.add(option2==(nbbus40>=7))

mdl.add_constraint(option1+option2>=1)

mdl.maximize(nbbus40*500*option1+nbbus30*400*option2 )

mdl.solve()

for v in mdl.iter_integer_vars():
    print(v," = ",v.solution_value)

【讨论】:

  • 谢谢!您将如何使用 Python API 而不是 docplex 来做到这一点?
  • 为什么不看看示例 miqpex1.py ?
  • 我正在看。我真的不明白它与此有何相关或相似之处。请您详细说明一下好吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
相关资源
最近更新 更多