So with docplex , if I follow
https://www.linkedin.com/pulse/making-optimization-simple-python-alex-fleischer/
I could write
from docplex.mp.model import Model
def set_ordering(dvars, weights, brdirs):
# set priority ordering on a collection of variables,
# given a list of weights, and a list of -1,0,1 directions
ldvars = list(dvars)
lweights = list(weights)
ldirs = list(brdirs)
if ldvars:
m = ldvars[0].model
# check all lists have same length
# weights are numbers
# directions are -1, 0, 1
cpx = m.get_cplex()
cpx.order.set([(dv.index, w, brd) for dv, w, brd in zip(ldvars, lweights, ldirs)])
cpx.order.write('%s_prio.ord' % m.name)
mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
set_ordering(dvars=[nbbus40, nbbus30], weights=[10, 1], brdirs=[0, 0])
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)
#CPLEXOptimizers#DecisionOptimization