Функция мощности в скрипте OPL

Я пытаюсь инициализировать матрицу в сценарии OPL (блок execute {}). Каждый элемент должен иметь значение с плавающей запятой (> 0)

Функция pow не распознается в скрипте, поэтому я попробовал оператор ^ ... но это не то, что я ожидал: в ссылке говорится: «^ означает мощность в OPL и побитовый xor в скрипте».

Итак, пока я просто использовал цикл for (), который работает, но не принимает плавающие полномочия:

var temp;
for (var p = 1; p<=nbP; p++){
   for (var n = 1; n <= nbC; n++){
       temp = w[n][p] / i[p];
       MATRIX[n][p] = 1;
       for (var i = 1; i <= desiredPower; i++){
          MATRIX[n][p] = tempNGSI * MATRIX[n][p];
       }   
   }           
}

Есть ли эквивалент для pow () в сценарии OPL? Как я могу поступить иначе? Обратите внимание, что блоки for () не распознаются вне блоков скрипта (выполнить {})


person Aname    schedule 17.07.2014    source источник
comment
Почему вы используете циклы for для инициализации матрицы? Сам язык OPL имеет декларативные способы инициализации матриц.   -  person David Nehme    schedule 17.07.2014
comment
@DavidNehme Я хотел сделать этот расчет внутри OPL .mod, чтобы мои файлы данных не нуждались в изменении, поэтому ... я думаю, мне придется создать специальный входной файл для этого   -  person Aname    schedule 17.07.2014


Ответы (1)


Сценарий OPL (как его двоюродный брат javascript) содержит основные математические функции, заключенные в объект Math.

for (var p = 1; p<=nbP; p++){
   for (var n = 1; n <= nbC; n++){
       MATRIX[n][p] = Math.pow(w[n][p] / i[p], desiredPower);
   }           
}
person David Nehme    schedule 17.07.2014
comment
Столько времени потеряно на математический объект ... По крайней мере, я этого не забуду, Спасибо! - person Aname; 17.07.2014