使用乘法器的混合整数编程

2024-05-18 21:04:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想最小化一个简单函数,其中x1是连续的,i1是整数

下面的例子给了我一个Can not multiply with type <class 'mip.entities.LinExpr'>

MIP真的不能处理乘法吗

from mip import Model, CONTINUOUS, INTEGER, minimize, xsum
import numpy as np

m = Model()

def func(x1, i1):
  return (x1 - .5) * (i1 - 1)
print(func(0, 0))
print(func(.5, 1))

x1 = m.add_var(var_type=CONTINUOUS)
i1 = m.add_var(var_type=INTEGER)

# constraint
m += x1 + i1 >= 0

m.objective = func(x1, i1)
# m.objective = minimize(xsum((x1 - .5) * (i1 - 1)))

status = m.optimize()
print(status)
print(m.objective_value)

for v in m.vars:
  print(v.name, v.x)


Tags: importaddmodelvartypeintegerfunccontinuous
1条回答
网友
1楼 · 发布于 2024-05-18 21:04:21

您需要使用不同的解算器来处理非线性表达式。您可以使用academic solverPySCIPOpt或免费商业版academics solverGurobi,两者都有一个非常好的直观Python界面,看起来与您的代码非常相似

相关问题 更多 >

    热门问题