首页 > 解决方案 > CPLEX Python API 如何将决策变量与目标函数中的虚拟变量相乘?

问题描述

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

标签: pythonlinear-programmingcplex

解决方案


让我给你一个非常简单的例子,来自动物园的例子

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)

推荐阅读