Оптимизация Gurobi не работает правильно - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь научиться использовать python3 и Gurobi, чтобы выполнить простую работу по оптимизации. Я следовал за некоторыми примерами кодов, однако мой код не работает правильно. Код прилагается ниже. Может кто-то указать, где ошибка? Спасибо!

from gurobipy import *
x = np.arange(0, 10001, 1)
y = np.arange(0, 10001, 1)+1
z = np.arange(0, 10001, 1)+1

dic_sysc_1 = dict(zip(x, y))
dic_sysc_2 = dict(zip(x, z))

m = Model()
cp1 = m.addVar(vtype=GRB.INTEGER, lb=5, ub =10000, name="cp1")
m.update()
cp2 = m.addVar(vtype=GRB.INTEGER, lb=999, ub =10000, name="cp2")
m.update()

m.setObjective( dic_sysc_1[cp1]+dic_sysc_2[cp2], GRB.MAXIMIZE)
m.setParam('OutputFlag',0)
m.optimize()

print ("Obj:", m.objVal)
print (cp1, dic_sysc_1[cp1])
print (cp2, dic_sysc_2[cp2])

Результаты вывода:

Obj: 3.0
<gurobi.Var cp1 (value 5.0)> 1
<gurobi.Var cp2 (value 999.0)> 2

Кроме того, тогда я добавил еще одно ограничение

m.addConstr( (dic_new_1[cp1]+dic_new_2[cp2]) <= 20, "c90" )

, где dic_new_1 и dic_new_2 - два новых слова, похожих на dic_sysc_1 и dic_sysc_2. Модель показывает сообщения об ошибках:

unsupported operand type(s) for -: 'bool' and 'NoneType'

1 Ответ

0 голосов
/ 25 января 2019

Это не в виде целочисленной программы (MIP). Вам нужно переформулировать свою модель как MIP или использовать другой инструмент.

...