解决方案只返回一些决策变量

Solution only returning some decision variables

我正在构建一个包含 624 个决策变量的模型。它们都是连续的,并且具有不同的下限和上限。我的问题是,当我打印 mdl.solution 时,唯一显示的决策变量是下限为 -15 的变量(从 x48 到 x192 以及从 x481 到 x624)。我也在使用 numpy 数组,但是,如果我将它们转换为列表,问题仍然存在。

下面是一些可能有助于理解我的问题的代码:

horizon_t = 48

mdl.lb = np.hstack((np.zeros((horizon_t)), -15*np.ones((3*horizon_t)), np.zeros(6*horizon_t), -15*np.ones((3*horizon_t)))) 

mdl.ub = np.hstack((np.ones((horizon_t)), 15*np.ones((3*horizon_t)), np.ones(6*horizon_t), 15*np.ones((3*horizon_t))))

n_variables = 624

mdl.continuous_var_list(n_variables, mdl.lb, mdl.ub)

谢谢

是不是显示0值的问题?

例如,如果我稍微改变一下 bus example:

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  >= 300, 'kids')
mdl.minimize(nbbus40*500)

mdl.solve()

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

print("default")
mdl.print_solution()
print()
print("with 0")
mdl.print_solution(print_zeros=True)

给予

nbBus40  =  8.0
nbBus30  =  0

default
objective: 4000
  nbBus40=8

with 0
objective: 4000
  nbBus40=8
  nbBus30=0

默认情况下,Model.print_solution() 不打印零值变量以避免输出混乱。 您可以通过指定 print_zeros=True

打印所有值