gpt4 book ai didi

python - 一些 Gurobi-python 函数无法正确识别

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:27 25 4
gpt4 key购买 nike

:

我的问题如下:当我使用某些 Gurobi 函数时,例如quicksum(),我总是收到这样的警告:“‘quicksum’可能未定义,或从开始导入定义:gurobipy。”以下代码正确解决了 TSP。

import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
import networkx as nx
from gurobipy import *
from openpyxl import Workbook
import xlrd
import networkx as nx
print("")
print("TRAVELING SALESMAN PROBLEM")
print("---------------------------------------------------------------------")
print("")
wb = Workbook()
ws = wb.active
book = xlrd.open_workbook('TSP.xlsx') #LECTURA DE PARÁMETROS.
sheet = book.sheet_by_name("C")
C=[[sheet.cell_value(r,c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]
C=np.matrix(C)
print("")
print("MATRIZ DE DISTANCIAS")
print("")
print(C)
def TSP(C):
nodos=range(len(C))
nodos1=range(1,len(C),1) #CONJUNTOS.

model=Model('TSP') #NOMBRE DEL MODELO.
model.ModelSense=GRB.MINIMIZE #SENTIDO DE OPTIMIZACIÓN.
x,u={},{} #VARIABLES - MATRIZ DE ASIGNACIÓN DE RUTAS.

for i in nodos:
for j in nodos:
x[i,j]=model.addVar(vtype=GRB.BINARY,name="x[%s][%s]"%(i,j))

for i in nodos1:
u[i]=model.addVar(vtype=GRB.INTEGER,lb=1.0,ub=len(C)-1,name="u[%s]"%(i))
model.update()
costo=quicksum((C[i,j]*x[i,j] for i in nodos for j in nodos))
model.setObjective(costo) #FUNCIÓN OBJETIVO
model.update()

for j in nodos:
model.addConstr(quicksum(x[i,j] for i in nodos)==1.0,name="R1[%s]"%(j))
#CONJUNTO 1 DE RESTRICCIONES.
for i in nodos:
model.addConstr(quicksum(x[i,j] for j in nodos)==1.0,name="R2[%s]"%(i))
#CONJUNTO 2 DE RESTRICCIONES.

for i in nodos1:
for j in nodos1:
if i!=j:
model.addConstr(u[i]-u[j]+(len(C)-1)*x[i,j]<=len(C)-2,name="R3[%s][%s]"%(i,j))




model.update()
model.__data=x,u
return model

model=TSP(C)
model.optimize()
x,u=model.__data
print("")
print("VALOR OPTIMO TSP= ", model.ObjVal)
edges = [(i,j) for (i,j) in x if x[i,j].X == 1]
model.write('ruteo.lp')
print(u)
print("Arcos utilizados:", edges)
print("")
x_solucion=np.zeros((len(C),len(C)))
for a in range(len(C)):
for b in range(len(C)):
x_solucion[a,b]=x[a,b].x
print(x_solucion)
print("")

每次我使用quicksum()时,我都会收到以下警告:

quicksum() warning这是我在使用求解器 Gurobi 时经常遇到的问题。然而,我总是可以正确地计算和求解我的模型,但这让我很困扰,我认为这是不正常的。有任何想法吗?。在此先感谢您的帮助。

最佳答案

看起来它警告您这来自 from xxx import * 语句,这通常是不好的做法。尝试导入您明确使用的函数,我认为这应该消失。

from gurobipy import quicksum

关于python - 一些 Gurobi-python 函数无法正确识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52597614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com