绝对值在 Python 中的 CPLEX 程序

CPLEX program with absolute values in Python

我需要在 python 中编写一个 PL 并使用 CPLEX 库解决它,但我是初学者,因此我不知道如何在 Python 中编写它。

节目是:

MIN ΣΣ abs(Ui - Uj)        with i = 1, j = i + 1
subject to:
    Ui = Σ Wj * Xji        ∀i
    Xji is 0/1 integer     ∀i,j with i < j
    0.0 =< Ui <= T

abs 与 docplex 一起使用非常容易。

让我稍微更改 zoo example 以使用 abs

假设我想尽可能接近成本3900

from docplex.mp.model import 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(mdl.abs(nbbus40*500 + nbbus30*400-3900))

mdl.solve()

for v in mdl.iter_integer_vars():
    print(v," = ",v.solution_value)