Выходные данные GAMS l oop работают в разных файлах Excel - PullRequest
1 голос
/ 23 марта 2020

Я использую одну из реализаций эпсилон-ограниченного метода, чтобы найти некоторые решения во фронте Парето. Однако я хотел бы сохранить результаты и некоторые параметры после обработки в отдельных файлах Excel. Большинство из этих решений получаются в циклах, и поэтому я хотел бы использовать значения наборов, которые зацикливаются, для именования каждого файла Excel.

$Set Instance CraggyTerrain
loop(kp,
  kk(kp)=yes;
  repeat
    solve mod_payoff using mip maximizing obj;
    payoff(kp,kk) = z.l(kk);
    z.fx(kk) = z.l(kk);
*// freeze the value of the last objective optimized
    kk(f++1) = kk(f);
*******************************Mipstart_ Give an intial solution
    x.l(i,j,k)=x.l(i,j,k);
    b.l(i,k)=b.l(i,k);
    y.l(i,j)=y.l(i,j);

execute_unload "Results_payoff%Instance%_%FirstOF(kp)%_%SecondOF(kk)%.gdx" z.l x.L y.L b.L;
execute 'GDXXRW.EXE Results_payoff%Instance%_%FirstOF(kp)%_%SecondOF(kk)%.gdx   var=x.l                rng=x!b2'
execute 'GDXXRW.EXE Results_payoff%Instance%_%FirstOF(kp)%_%SecondOF(kk)%   var=y.L                rng=y!b2'
execute 'GDXXRW.EXE Results_payoff%Instance%_%FirstOF(kp)%_%SecondOF(kk)%   var=b.L                rng=b!b2'

until kk(kp); kk(kp) = no;
* release the fixed values of the objective functions for the new iteration
  z.up(f) = inf; z.lo(f) =-inf;
);

Для части% Instance% я могу просто объявить локальную переменную, такую ​​как $Set Instance CraggyTerrain, но я не могу найти способ использовать эти переменные (локальные, глобальные, окружающая среда) для построения оставшаяся часть имени файла, генерируя разные файлы Excel для каждого решения.

Есть ли способ обновить локальные переменные с помощью параметров, набора или переменных из модели в операторе loop / repeat?

Заранее спасибо, Ракель Агиар.

...