let me a tiny example out of my zoo and buses story:
from docplex.mp.model import Model
# original model
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
ctKids=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("Same number of 40 and 30 seats buses")
mdl.add_constraint(nbbus40==nbbus30, 'samenumberofbuses')
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
print()
print("Now with buses with 50 seats")
# And now we add 50 seats buses
nbbus50 = mdl.integer_var(name='nbBus50')
ctKids.left_expr.add_term(nbbus50, 50)
mdl.minimize(nbbus40*500 + nbbus30*400 + nbbus50*700)
mdl.solve()
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
gives
nbBus40 = 6.0
nbBus30 = 2.0
Same number of 40 and 30 seats buses
nbBus40 = 6.0
nbBus30 = 2.0
Now with buses with 50 seats
nbBus40 = 3.0
nbBus30 = 3.0
nbBus50 = 2.0