- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
:
我的问题如下:当我使用某些 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/
在我的 Gurobi C++ 程序中,我尝试使可执行文件可移植到其他未安装 Gurobi 的机器上。 当我将可执行文件移动到另一台机器时,错误消息如下: dyld: Library not loade
将 Gurobi 与 AMPL 结合使用而不是使用 Gurobi 直接 API(java、C#、C++ 等)来解决大型 MIP 问题有哪些优势?使用 Gurobi 的 API 而不是 AMPL 是否有
为了创建新的 GRBVar,我需要提供 new variable 的目标系数: GRBVar var = model.addVar (double lowerBound, double
我目前正在努力对优化问题实现一个简单的二次约束。 Gurobi's website表示可以实现二次约束。 德雷克没有使用 Gurobi 的这个约束的接口(interface)吗? 代码如下。 #inc
我一直在使用 Gurobi 来解决 MILP 问题,并使用 Pyomo 来生成模型。 Gurobi 支持返回一个解决方案池,我希望能够使用这个池生成多个解决方案。这在 Pyomo 中支持吗? 我试过使
以下简单的平方函数多重处理效果很好: from multiprocessing import Pool class A(object): def square(self, x):
我正在寻找一种在 gurobi 中保存预求解模型的方法,以便在下次运行模型时节省预求解所需的时间。 我尝试在预求解后使用回调函数将模型写入 .mps/.lp 文件,但是当我加载该文件时,它会再次开始预
我正在尝试将不同产品的单位分配给不同的商店。由于这个玩具示例中没有出现但在全面实现中必需的原因,我需要一个二进制变量来指示是否将特定产品的任何单位分配给每个特定商店。因为这是一个玩具示例,所以该变量在
在 Python 中将此约束添加到 gurobi 的最简单方法是什么。 D 是具有正项(常数)的给定矩阵。b 是我的变量的向量。T和K是给定的常数。 最佳答案 Gurobi 在 7.0 版本中添加了对
我正在尝试在 Ubuntu 14.04 的学术许可下安装 Gurobi。我已阅读以下关于 UnsatisfiedLinkError 的文章:stackoverflow.com/questions/..
我正在尝试解决在 Gurobi/python 中使用稀疏矩阵表示的 LP 问题。 max c′ x, subject to A x = b, L ≤ x ≤ U 其中 A 是 SciPy linked
我正在用 Java 编写一个程序来解决 Gurobi 的 MIP 问题。这个问题需要很多约束和变量,但第一个不能添加到我的模型中。在问题的更深处,当我尝试添加约束时,模型会显示它(通过调试读取),但
我正在使用 Gurobi 在 JAVA 中编写车辆路由问题 (VRP) 的扩展。我遇到的问题是,当我运行代码时,JAVA 说它是最优的,目标值为零。这不应该是这种情况,因为: VRP 适用于弧和节点。
我想访问从 python 在 gurobi 中运行数学优化问题时找到模型 m 的最优解所花费的时间。 目前我用 runtime = m.Runtime print("The run time is %
如何将线性表达式与常数相乘?我已经编写了代码,但它总是返回 0.0。 在将常数与线性表达式相乘方面需要帮助。 from gurobipy import LinExpr , GRB, Model, qu
考虑以下 Gurobi 模型: import gurobipy as gb import numpy as np N = 100 x = np.random.randint(10, high=2*N,
我正在使用 gurobi-python 界面。无论如何将连续变量转换为二进制变量。我只是不想转换 m.addVar(lb=0, ub=1, vtype=GRB.CONTINUOUS) 到 m.addV
如何获取我之前在 gurobi python 中定义的变量值(使用 addVar)?我需要比较 gurobi 变量的值,然后执行计算以达到我的目标变量。在优化之前也必须这样做。 最佳答案 您有两个选择
我目前在实现约束时遇到问题。我有两组(s1 和 s2)特定的 GRBVar,并尝试实现以下约束: Sum(s1) - Sum(s2) + 常数值 <= someValue 我的实现(为了便于阅读而修改
设 C 为集合覆盖问题的二进制覆盖矩阵,我想将其转换为 Gurobi 中适当的覆盖约束。我已经设法使用 scipy.csr_matrix 让它工作,但过程似乎很慢。我想知道是否有更有效的方法。 # C
我是一名优秀的程序员,十分优秀!