我正在学习如何使用Python解决Gurobi中的组合优化问题。我想知道什么是读取csv文件以将数据用作模型参数的最佳选择。我使用'genfromtxt'来读取csv文件,但是我在使用它来进行约束建造时遇到困难(Gurobi不支持这种类型 - 请参阅错误)。Python中的Gurobi:读取csv文件的最佳方式
这里我的代码和错误消息my_data由4列组成:节点索引,x坐标,y坐标和最大度数。
from gurobipy import *
from numpy import genfromtxt
import math
# Read data from csv file
my_data = genfromtxt('prob25.csv', delimiter=',')
# Number of vertices
n = len(my_data)
# Function to calculate euclidean distancces
dist = {(i,j) :
math.sqrt(sum((my_data[i][k]-my_data[j][k])**2 for k in [1,2]))
for i in range(n) for j in range(i)}
# Create a new model
m = Model("dcstNarula")
# Create variables
vars = m.addVars(dist.keys(), obj=dist, vtype=GRB.BINARY, name='e')
for i,j in vars.keys():
vars[j,i] = vars[i,j] # edge in opposite direction
m.update()
# Add degree-b constraint
m.addConstrs((vars.sum('*',j) <= my_data[:,3]
for i in range(n)), name='degree')
GurobiError: Unsupported type (<type 'numpy.ndarray'>) for LinExpr addition argument
数据
1,19.007,35.75,1
2,4.4447,6.0735,2
显示'''my_data'''的前两行。 – sascha
1,19.007,35.75,1 2,4.4447,6.0735,2 –
将这两行代码模式添加到您的问题中。在评论中使用破碎格式不太有用。 **编辑:**所以没有头我想? – sascha