Степенная функция в сценарии 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);
}
}