我正在尝试使用 Gurobi Python API 将我的 OPL 模型转换为 Python。我想知道 Python 中是否存在等效的 OPL 元组结构。最好举个例子:
tuple tup_Leg
{
key string Route;
key string Leg;
int Curr_Time;
int Max_Time;
int Min_Time;
float Cube;
}
{tup_Leg} set_Leg = DBRead(db,"Exec SPROC ?")(Param);'
Route 和 Leg 是我的优化模型中的集合;Curr_Time、Min_Time、Max_Time 和 Cube 是在 Route 和 Leg 集上索引的参数。
在 OPL 中,由于我将 Route 和 Leg 定义为键,因此可以将它们视为集合,并且可以对参数进行索引。例如,要解决 Curr_Time,我可以这样做:
i.Curr_Time : i in set_Leg
我一直在努力在 Python 中找到类似的东西。到目前为止,我在 Python 中有以下内容:
import pyodbc
Param = 123
con = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server Native Client 10.0}', server = 'Server', database='db')
cur = con.cursor()
cur.execute("execute SPROC @Param =%d" %Param)
result = cur.fetchall()
tup_Leg = dict(((Route, Leg), [Curr_Time, Min_Time, Max_Time, Cube]) for Route, Leg, Curr_Time, Min_Time, Max_Time, Cube in result)
我不确定如何处理 Curr_Time 或 Min_Time?到目前为止,我有:
for i,j in tup_Leg:
Curr_Time, Min_Time, Max_Time, Cube = tup_Leg[(i,j)]
除了听写,还有更好的方法吗?我想知道是否还有其他选项可以让我以 OPL 允许的方式处理表字段。