我試圖在CPLEX(使用python)中創建兩個約束:一個使用變數X,另一個使用abs(X)。類似于:
x > 0。
abs(x) > 0。
我應該創建一個新的約束Y,接收abs(X)的值,還是可以在 "linear_constraints.add "中直接包含abs(X)?
下面的代碼是沒有功能的:
from cplex importCplex, SparsePair
constraints = [{'abs(X)': 1},{'X'/span>: 1}]
exprs = [SparsePair(ind=list(constr.key()), val=list(constr.values() ) for constr in constraints] 。
model.linear_constraints.add(lin_expr=exprs, names=['constr_1','constr_2'] )
有什么想法嗎?謝謝你。
uj5u.com熱心網友回復:
from docplex.mp.model import Model
mdl = Model(name='bus')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 nbbus30*30 >=300, 'child')
#absolute value of nbBus40 - nbBus30。
mdl.add_constraint(mdl.abs(nbbus40-nbbus30)<=2)
mdl.minimize(nbbus40*500 nbbus30*400)
mdl.solve(log_output=True, )
for v in mdl.iter_integer_vars() 。
print(v," = "/span>,v.solution_value)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332997.html
標籤:
