Python错误“;浮动;
我得到了TypeError:不能将序列与类型为“float”的非int相乘。这是我的密码:Python错误“;浮动;,python,Python,我得到了TypeError:不能将序列与类型为“float”的非int相乘。这是我的密码: # Define x[i][j] for Gurobi for i in S: for j in D: decvarx[i][j] = m.addVar(lb = 0, obj=c[i][j]*u[i], vtype=GRB.CONTINUOUS, name="x.%d.%d" % (i,j)) 我认为你[我]有问题,但我不是很确定。这是u[i]的代码: # u is an ar
# Define x[i][j] for Gurobi
for i in S:
for j in D:
decvarx[i][j] = m.addVar(lb = 0, obj=c[i][j]*u[i], vtype=GRB.CONTINUOUS, name="x.%d.%d" % (i,j))
我认为你[我]有问题,但我不是很确定。这是u[i]的代码:
# u is an array of supply values (indexed on processing facility numbers).
u = []
for i in range(0,max(S)+1):
u.append([]) # Add an empty spot for u[i]
for row in range(0,len(FAC_data)):
i = int(FAC_data[row][0]) # This is the processing facility number
u[i] = 1000*FAC_data[row][2] # This is the supply for this processing facility
感谢您提供的任何帮助 我认为主要的问题是您试图创建一个int列表,其中
u = [123,546,887,890]
它是根据不同的设施编号编制的索引
但是,您的循环-
for i in range(0,max(S)+1):
u.append([]) # Add an empty spot for u[i]
实际上,这创造了:
u = [[],[],[],[]]
这是一个列表列表。因此,当您尝试将您认为是整数的内容相乘时,实际上是在尝试将单个元素列表相乘。因为列表不是数组,所以您可以选择。与数组不同,列表是动态的。因此,您可以直接将值附加到列表中。现在,如果您的设备编号不是以零开头,我建议您使用字典
u = {}
for row in range(0,len(FAC_data)):
key = int(FAC_data[row][0])
data = 1000*FAC_data[row][2]
u[key] = data
要检索数据供以后使用,只需使用:
needed_data = u[facility_id]
字典一开始似乎很吓人,但它们是检索信息的最快方式。我认为问题在于
c
,而不是u
。如果c[i][j]
是一个列表或其他东西,则不能将其乘以浮点数。