Python 古罗比,需要帮助来提高时间限制吗

Python 古罗比,需要帮助来提高时间限制吗,python,optimization,traveling-salesman,constraint-programming,gurobi,Python,Optimization,Traveling Salesman,Constraint Programming,Gurobi,我正在用古洛比优化模块解决建模问题,但这是一个巨大的问题。然而,我将试着用一个简单的旅行推销员类问题来解释它 A是一个列表,包含访问0到n之间任何城市的净利润值 先例是列表中任何i城市的先例,因此它可能类似于先例=[[1,3,5],[0,2,5]…],因此对于城市0,在前往城市0之前必须访问的先前城市是城市1、城市3和城市5 该问题必须满足一些约束条件,如使用的时间或周期,每个周期由访问的最小城市和最小收入累加限制,以及可以解决该问题的最大周期数 所以,我的模型是这样的: 从gurobipy导入

我正在用古洛比优化模块解决建模问题,但这是一个巨大的问题。然而,我将试着用一个简单的旅行推销员类问题来解释它

A是一个列表,包含访问0到n之间任何城市的净利润值 先例是列表中任何i城市的先例,因此它可能类似于先例=[[1,3,5],[0,2,5]…],因此对于城市0,在前往城市0之前必须访问的先前城市是城市1、城市3和城市5

该问题必须满足一些约束条件,如使用的时间或周期,每个周期由访问的最小城市和最小收入累加限制,以及可以解决该问题的最大周期数

所以,我的模型是这样的: 从gurobipy导入*

# data for problem

A=citiesvalue
Pc=precedences


Periods=range(7)
Disccount_rate=[0.9090909090909091, 0.8264462809917354, 0.7513148009015775, 0.6830134553650705, 0.6209213230591549, 0.5644739300537772, 0.5131581182307065]

m = Model()
n = len(A) # number of cities

# Indicator variable for each city
x = {}
for prd in Periods:
    for i in range(n):
        x[i,prd] = m.addVar(vtype=GRB.BINARY, name="x%d%d" %(i,prd))



m.update()
obj=(quicksum((quicksum(A[i]*x[i,prd] for i in range(n)))*Disccount_rate[prd] for prd in Periods))
# Set objective
m.setObjective(obj,GRB.MAXIMIZE)

# Add constraints
#this contrain prevents salesman go to city0 without going to its precedences cities at any period p
for e in range(0,len(Pc)):
    for p in Periods:
        for j in Pc[e]:
        m.addConstr(x[u,p] <= x[v,p])
#this constrain prevents that a citie that was visited in a period 0 must be visited at periods>0 if it is at any precedence 
for p in Periods:
    for u in range(len(A)):
        m.addConstr(x[u,p-1]<=x[u,p])
#this constrain prevent that in any period income be less than a certain number
m.addConstr(quicksum((A[i])*x[i,prd] for i in range(n) for prd in Periods))<=7500000)
#问题数据
A=城市价值
Pc=先例
周期=范围(7)
贴现率=[0.909091、0.8264462809917354、0.7513148009015775、0.6830134553650705、0.62092030591549、0.5644739300537772、0.5131581182307065]
m=模型()
n=len(A)#城市数量
#每个城市的指标变量
x={}
珠江三角洲各期:
对于范围(n)中的i:
x[i,prd]=m.addVar(vtype=GRB.BINARY,name=“x%d%d”%(i,prd))
m、 更新()
obj=(quicksum((quicksum(A[i]*x[i,prd]表示范围(n)内的i))*Disccount\u比率[prd]表示周期内的prd))
#设定目标
m、 设定目标(目标、GRB.最大化)
#添加约束条件
#此约束可防止销售人员在任何时间点p前往城市0而不前往其先例城市
对于范围(0,len(Pc))内的e:
对于周期中的p:
对于Pc[e]中的j:
m、 addConstr(x[u,p]0,如果它具有任何优先级
对于周期中的p:
对于范围内的u(len(A)):
m、 addConstr(x[u,p-1]