Степенная функция в сценарии 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 () не распознаются за пределами блоков скрипта (execute{})

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);
   }           
}
Другие вопросы по тегам