Я пытаюсь научиться использовать 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'