Я использую Pyomo для моделирования определенной задачи оптимизации, в прошлом я использовал параметры только из двух измерений, однако сейчас я пытаюсь определить 4-мерный параметр, используя срезы. Наиболее удобный способ для меня - определить срезы, которые представляют собой матрицы 2x2, вот пример того, что я хочу с допустимым синтаксисом в AMPL:
param d:=
[*,*,1,1]: 1 2 3 4 5 6 :=
1 0.00 3.47 3.31 3.27 3.26 0.00
2 3.47 0.00 0.18 4.97 6.03 3.47
3 3.31 0.18 0.00 4.81 5.86 3.31
4 3.27 4.97 4.81 0.00 1.81 3.27
5 3.26 6.03 5.86 1.81 0.00 3.26
6 0.00 3.47 3.31 3.27 3.26 0.00
[*,*,2,1]: 1 2 3 4 5 6 :=
1 0.00 3.47 3.31 3.27 3.26 0.00
2 3.47 0.00 0.18 4.97 6.03 3.47
3 3.31 0.18 0.00 4.81 5.86 3.31
4 3.27 4.97 4.81 0.00 1.81 3.27
5 3.26 6.03 5.86 1.81 0.00 3.26
6 0.00 3.47 3.31 3.27 3.26 0.00;
Однако я думаю, что этот синтаксис недопустим в Pyomo. Документация Pyomo показывает, как определять параметры через слайсы, используя шаблоны кортежей, например:
set A := (a,1,a,1) (a,2,a,2) (b,1,b,1) (b,2,b,2);
param B :=
[*,1,*,1] a a 10 b b 20
[*,2,*,2] a a 30 b b 40
;
Но предпочел бы использовать матричный формат, аналогичный AMPL. Кто-нибудь знает, как мне это сделать?