#global #gams-math
#глобальный #gams-математика
Вопрос:
Рассмотрим, что я хочу выполнить для параметра (paramter1 и parameter2). Я делаю следующее:
$onEcho > Textfile.txt
par = parameter1 rng = parameter1!A1
par = parameter2 rng = parameter2!A1
$offEcho
execute_unload 'export.gdx', parameter1 parameter2;
Но вместо того, чтобы писать эту строку два раза, могу ли я сделать что-то вроде этого:
$setGlobal Parameter parameter1 parameter2
$onEcho > Textfile.txt
par = %parameter% rng = %parameter%!A1
$offEcho
execute_unload 'export.gdx', %parameter%;
Однако этот код не работает. Как я могу указать мои параметры в одном месте вместо того, чтобы записывать их несколько раз?
Ответ №1:
В GAMS вы можете определять макросы, но для ваших целей $batInclude может быть лучше:
$onEchoV > execUnload.inc
$echo par = %1 rng = %1!A1 > Textfile.txt
execute_unload 'export.gdx', %1;
$offEcho
$batInclude execUnload.inc parameter1
$batInclude execUnload.inc parameter2
РЕДАКТИРОВАТЬ: Теперь, когда я лучше понял ваш вопрос, после обсуждения его в комментариях, вот новое решение, использующее средство put:
$setGlobal Parameter parameter1, parameter2
Set exportPars / %Parameter% /;
File fx / 'Textfile.txt' /;
put fx;
loop(exportPars,
put 'par = ' exportPars.tl:0 ' rng = ' exportPars.tl:0 '!A1' /;
);
execute_unload 'export.gdx', %Parameter%;
Комментарии:
1. Спасибо. Однако у меня есть только параметр2 в моем файле GDX, когда я использую ваш код. Мне нужны как parameter1, так и parameter2. Я делаю что-то не так?
2. Извините, тогда я ошибся. Каждый batinclude запишет свой собственный файл gdx, поэтому второй перезапишет первый. То же самое должно произойти с Textfile.txt в моем коде. Итак, что вы на самом деле хотите в итоге, это один текстовый файл с двумя строками и один файл gdx с двумя символами?
3. Да, точно. 🙂
4. Отлично! Большое спасибо!
5. Один вопрос: если я хочу выполнить как файл .xlsx — например, вставив следующую строку в конце: «выполнить ‘gdxxrw export.gdx output=export.xlsx @Textfile.txt ‘», затем я должен запустить файлы два раза. Возможно ли получить файл Excel, запустив его только один раз?