Я пытаюсь преобразовать мою модель OPL в Python с помощью API-интерфейса Gurobi Python. Я хотел знать, существует ли эквивалент структуры кортежей OPL в Python. Лучше всего показать пример:ILOG OPL vs. Python
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);'
Маршрут и нога - это наборы в моей модели оптимизации; Curr_Time, Min_Time, Max_Time и Cube - это параметры, индексированные над наборами Route and 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.
Отличный ответ! –