相关文章推荐
霸气的花卷  ·  python list 错位相减 ...·  1 月前    · 
憨厚的大脸猫  ·  python ...·  1 月前    · 
小猫猫  ·  python tornado ...·  1 月前    · 
有腹肌的充值卡  ·  pycharm console 清屏 ...·  3 周前    · 
傻傻的熊猫  ·  为什么会存在 1px ...·  1 年前    · 
逼格高的蛋挞  ·  Java ...·  1 年前    · 
大力的馒头  ·  javascript 检索 ...·  1 年前    · 

Python中的CPLEX二元变量

0 人关注

我试图通过使用IBM CPLEX为我在Python中的优化问题设置一个二进制变量。在我的目标函数中,我设置了一条线,它的开启和关闭取决于t的市场价格。

mdl.maximize(
mdl.sum( (1-b[t]) * (prod_diff[t] * price_diff[t]) + \
(b[t]) * (vol_t * price[t] + prod_diff[t] * price_spot[t]) for t in time

Subject to:

mdl.add_constraint(
if prod_diff[t] <= 0:
else:

显然,有一种叫做逻辑和条件约束的东西;但是,不幸的是,我无法在Python中设置它。

我是这方面的新手,谁能给我讲讲这个问题?

python
optimization
mathematical-optimization
cplex
docplex
Artur Zebrowski
Artur Zebrowski
发布于 2022-04-13
1 个回答
Alex Fleischer
Alex Fleischer
发布于 2022-04-13
已采纳
0 人赞同

In 简单的Python优化 see

if then

from docplex.mp.model import Model
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
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 if nb buses 40 more than 3  then nbBuses30 more than 7")
#if then constraint
mdl.add(mdl.if_then(nbbus40>=3,nbbus30>=7))
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve()