在决策二进制变量中打印结果

print the result in decision binary variables

我在 python 中使用库 Docplex 开发了以下代码来求解最佳模型:

import docplex.mp.model as cpx
import docplex
import cplex
import random
import pandas as pd


C = 10
I = 5
T = 10
R = [[2, 3, 4, 5, 6],[3, 4, 5, 6, 7],[4, 5, 6, 7, 8],[5, 6, 7, 8, 9],[6, 7, 8, 9, 10],[2, 3, 4, 5, 6],[3, 4, 5, 6, 7],[4, 5, 6, 7, 8],[5, 6, 7, 8, 9],[6, 7, 8, 9, 10],[0, 0, 0, 0, 0]]
lambd = [[1, 2, 1, 3, 2],[3, 2, 3, 1, 4],[2, 4, 2, 1, 3],[3, 4, 2, 4, 1],[2, 3, 4, 1, 3],[1, 2, 1, 3, 2],[3, 2, 3, 1, 4],[2, 4, 2, 1, 3],[3, 4, 2, 4, 1],[2, 3, 4, 1, 3],[0, 0, 0, 0, 0]]

alpha = 0.5
n = {(t,i): 0 for i in range(I) for t in range(T)}

print (n)
print("\n")

#generation ni e vi
for t in range(T):
    for i in range(I):
        if R[t][i] == 0:
            n[(t,i)] = 0
        else:
            n[(t,i)] = (alpha*(R[t][i]/C))+((1-alpha)*((R[t][i]-lambd[t][i])/R[t][i]))

print (n)
print("\n")

opt_model = cpx.Model(name="MAB model")

#define decision variables
a  = {(t,i): opt_model.binary_var(name="x_{0}_{1}".format(t,i)) for i in range(I) for t in range(T)}

#define constraints
constraints = {t:opt_model.add_constraint(ct=opt_model.sum(lambd[t][i] * a[t,i] for i in range(I)) <= C, ctname="constraint_{0}".format(t)) for t in range(T)}

objective = opt_model.sum(a[t,i] * n[t,i] for i in range(I) for t in range(T))

# for maximization
opt_model.maximize(objective)


# solving with local cplex
opt_model.solve()


opt_model.print_information()

if not opt_model.solve():
    print("*** Problem has no solution")
    print("\n")
else:
    print("* model solved as function with objective: %g" % opt_model.objective_value)
    print("\n")

现在我想打印二元决策变量的结果,比如 a[1,1] = 1 a[1,2] = 0 ...但是当我打印这个时:

print (a[t,i])

我有变量的名称,但没有像 1 或 0 这样的二进制值:

x_0_0

有人可以帮助我吗?

他京。

在您的模型中,如果您添加

sol = opt_model.solution
print (a[1,1]," = ",sol.get_value(a[1,1]))

你会得到

x_1_1  =  1.0