Python Pywraplp检查失败:收集->插入(值类型(键,数据))。第二个重复键:x5***检查失败堆栈跟踪:***

Python Pywraplp检查失败:收集->插入(值类型(键,数据))。第二个重复键:x5***检查失败堆栈跟踪:***,python,or-tools,Python,Or Tools,我正在尝试使用Pywraplp或工具来构建一个单一的机器调度问题。但是我的代码没有运行。我不理解出现的错误。这里有人用ORT工具来解决OR中的线性问题吗 我的代码是: N = 6 r = [1, 4, 2, 1, 2, 3] p = [4, 7, 2, 9, 1, 5] d = [5, 11, 4, 10, 4, 9] M = 1000*sum(p) #importar o solver from ortools.linear_solver import pywraplp plim = py

我正在尝试使用Pywraplp或工具来构建一个单一的机器调度问题。但是我的代码没有运行。我不理解出现的错误。这里有人用ORT工具来解决OR中的线性问题吗

我的代码是:

N = 6
r = [1, 4, 2, 1, 2, 3]
p = [4, 7, 2, 9, 1, 5]
d = [5, 11, 4, 10, 4, 9]
M = 1000*sum(p)

#importar o solver
from ortools.linear_solver import pywraplp

plim = pywraplp.Solver('Problema - PLIM', pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)

# alocação de memoria para as estruturas do problema

x = [0]*N

w = []
for i in range(N):
    crialinha = [0]*N
    w.append(crialinha)

restc = [0]*N
restamax = [0]*N
restsob1 = []
restsob2 = []
for i in range(N):
    crialinha1 = [0]*N
    crialinha2 = [0]*N
    restsob1.append(crialinha1)
    restsob2.append(crialinha2)

 # Declaração das variaveis de decisão

 for i in range(N):
    x[i] = plim.IntVar(0, plim.infinity(), 'x'+str(i))

 for i in range(N):
    for k in range(N):
        if k > i:
            w[i][k] = plim.IntVar(0, 1, 'w'+str(i)+str(k))

 amax = plim.IntVar(0, plim.infinity(), 'x'+str(i))

 # Declaração das retrições e coeficientes das variaveis

 for i in range(N):
    restc[i] = plim.Constraint(-r[i], plim.infinity()) # Restrição de Chegada
    restamax[i] = plim.Constraint(p[i]-d[i], plim.infinity()) # Restrição Amax
    restc[i].SetCoefficient(x[i], 1) # Restrição de Chegada
    restamax[i].SetCoefficient(amax, 1)
    restamax[i].SetCoefficient(x[i], -1)


 for i in range(N):
    for k in range(N):
        if k > i:
            restsob1[i][k] = plim.Constraint(-plim.infinity(), M-p[i]) # Restrição de sobreposição 1
            restsob2[i][k] = plim.Constraint(-plim.infinity(), -p[k]) # Restrição de sobreposição 2
            restsob1[i][k].SetCoefficient(x[i], 1)
            restsob1[i][k].SetCoefficient(x[k], -1)
            restsob1[i][k].SetCoefficient(w[i][k], M)
            restsob2[i][k].SetCoefficient(x[i], -1)
            restsob2[i][k].SetCoefficient(x[k], -1)
            restsob2[i][k].SetCoefficient(w[i][k], -M)

 # função objetivo

 obj = plim.Objective()
 obj.SetCoefficient(amax, 1)
 obj.SetMinimization()

 # Resolve

 status = plim.Solve()
 if status == plim.OPTIMAL:
    print("Solução Otima")
 elif status == plim.FEASIBLE:
    print("Solução factivel")
 else:
    print("Não foi possível encontrar uma solução")
错误是:

警告:在InitGoogleLogging写入STDERR之前进行日志记录 F0915 20:37:12.054214 17688映射_util.h:148]检查失败:收集->插入值_类型键,数据。第二个重复键:x5 *检查故障堆栈跟踪:*


有人能帮我吗???

我相信你不能用同一个名字来命名两个变量

请将“x”重命名为在创建amax变量时使用“a”