Каков наиболее эффективный порядок выставления в GAMS? - PullRequest
0 голосов
/ 25 октября 2019

Документация предполагает, что наборы должны появляться в том же порядке, чтобы повысить производительность. Если большинство наших переменных имеют общий набор, лучше ли иметь общий набор первым или последним?

То есть, что более эффективно?

  y[i,t] =E= a[t] * x[j,t];

или

  y[t,i] =E= a[t] * x[t,j];

1 Ответ

1 голос
/ 28 октября 2019

Суть этого «того же порядка» заключается в том, что наборы должны использоваться в порядке, которым они управляются. Так что

Equation1(t,i,j).. y[t,i] =E= a[t] * x[t,j];

должно быть лучше, чем

Equation2(i,j,t).. y[t,i] =E= a[t] * x[t,j];

Кроме этого, не так-то просто дать много общих правил. Если у вас также есть полный контроль над контрольными индексами, часто бывает выгодно, если самый большой набор последний, поэтому если t >> i, то x[i,t] должно быть лучше, чем x[t,i]. В общем, параметр командной строки GAMS profile (https://www.gams.com/latest/docs/UG_GamsCall.html#GAMSAOprofile) очень полезен для проверки влияния различных формулировок вашего режима.

...