<p>使用docplex python API可以很容易地做到这一点</p>
<pre><code>from docplex.mp.model import Model
# original model
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
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)
#now remove the constraint
print()
print("now 0 kids instead of 300")
mdl.get_constraint_by_name("kids").rhs=0;
mdl.solve()
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
# and now let 's adapt to Covid19 1 seat out of 2
print("now 40 seats buses take 20 children and same ratio for 30 seats buses")
mdl.add_constraint(nbbus40*20 + nbbus30*15 >= 300, 'kidsCov19')
mdl.solve()
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
</code></pre>
<p>给</p>
<pre><code>nbBus40 = 6.0
nbBus30 = 2.0
now 0 kids instead of 300
nbBus40 = 0
nbBus30 = 0
now 40 seats buses take 20 children and same ratio for 30 seats buses
nbBus40 = 15.0
nbBus30 = 0
</code></pre>
<p>我使用了<a href="https://medium.com/@alexfleischer_84755/optimization-simply-do-more-with-less-zoo-buses-and-kids-66940178db6" rel="nofollow noreferrer">zoo and bus example</a></p>