如何在 CPLEX 的 Python API 中导入 CSV 文件
How to import CSV file in Python API of CPLEX
我想导入这个文件
http://people.brunel.ac.uk/~mastjjb/jeb/orlib/files/scp61.txt。
CPLEX 在 Python 中是否支持这种格式?
我将文本文件转换为 CSV 文件,然后编写了这段代码 cplex.read("scp61.csv")
,但出现了这个错误"CPLEX Error 1436: Max or Min missing."
文本文件中没有任何最大或最小单词。
scp61 包含数据但不包含模型。
在 python 中可以解析文件,然后通过 docplex python API.
调用 cplex
from docplex.mp.model import Model
file = open('scp61.txt', 'r')
count = 0
values=[]
print("Using for loop")
for line in file:
count += 1
ar=line.split()
for i in ar:
values.append(int(i))
file.close()
n=values[0]
m=values[1]
print("n=",n)
print("m=",m)
values2=values[2:]
mdl = Model(name='scp')
#decision variables
x=[mdl.binary_var(name='x'+str(i)) for i in range(1,m+1) ]
#objective
mdl.minimize(mdl.sum(x[i-1]*values2[i-1] for i in range(1,m+1)))
index=0
index=index+m
i=0
while (index!=len(values2)):
i=i+1
nbr=values2[index]
index=index+1
which=[]
for j in range(0,nbr):
index=index+1
if index==len(values2):
break
which.append(values2[index])
#constraint
mdl.add(1<=mdl.sum(x[j-1] for j in which),"ct"+str(i))
mdl.solve(log_output=True,)
for v in mdl.iter_binary_vars():
if (v.solution_value!=0):
print(v," = ",v.solution_value)
DOcplex 支持三种模型格式:MP 模型的 LP、SAV 和 MPS,以及 CP 问题的 CPO 格式。
对于其他格式,您需要编写自定义 reader 代码以导入到 DOcplex 模型,
正如亚历克斯在上面所做的 post.
我想导入这个文件
http://people.brunel.ac.uk/~mastjjb/jeb/orlib/files/scp61.txt。
CPLEX 在 Python 中是否支持这种格式?
我将文本文件转换为 CSV 文件,然后编写了这段代码 cplex.read("scp61.csv")
,但出现了这个错误"CPLEX Error 1436: Max or Min missing."
文本文件中没有任何最大或最小单词。
scp61 包含数据但不包含模型。
在 python 中可以解析文件,然后通过 docplex python API.
调用 cplexfrom docplex.mp.model import Model
file = open('scp61.txt', 'r')
count = 0
values=[]
print("Using for loop")
for line in file:
count += 1
ar=line.split()
for i in ar:
values.append(int(i))
file.close()
n=values[0]
m=values[1]
print("n=",n)
print("m=",m)
values2=values[2:]
mdl = Model(name='scp')
#decision variables
x=[mdl.binary_var(name='x'+str(i)) for i in range(1,m+1) ]
#objective
mdl.minimize(mdl.sum(x[i-1]*values2[i-1] for i in range(1,m+1)))
index=0
index=index+m
i=0
while (index!=len(values2)):
i=i+1
nbr=values2[index]
index=index+1
which=[]
for j in range(0,nbr):
index=index+1
if index==len(values2):
break
which.append(values2[index])
#constraint
mdl.add(1<=mdl.sum(x[j-1] for j in which),"ct"+str(i))
mdl.solve(log_output=True,)
for v in mdl.iter_binary_vars():
if (v.solution_value!=0):
print(v," = ",v.solution_value)
DOcplex 支持三种模型格式:MP 模型的 LP、SAV 和 MPS,以及 CP 问题的 CPO 格式。
对于其他格式,您需要编写自定义 reader 代码以导入到 DOcplex 模型, 正如亚历克斯在上面所做的 post.