Система поддержки многометодных процедур1,#QNAN

Система поддержки многометодных процедур оптимального управления

    модели  
    алгоритмы  
    вычисления  
    многометод  
    логика  
    помощь
   модели
   алгоритмы
   ММП
   вычисления
   логика
 
   
 
    о проекте  
   
       
   

Помощь : описание моделей

название | паспорт | переменные | функции | ограничения

Создание функций

Определение функций происходит в два этапа: на первом этапе задается название функции и ее описание, на втором -- тело функции. В системе существует два зарезервированных имени функции, которые создаются автоматически и не могут быть удалены, это: main(t,x,u) и functional(x).
Функция main(t,x,u) является основной функцией при расчете итераций для задач оптимального управления, ее возвращаемое значение -- вектор состояния.

x(t+1) = main(t,x,u)

Функция functional(x) возвращает число, соответсвующее значению функционала. functional есть конечная улучшаемая функция.

Возможно описание любых других функций и использование их теле в указанных.

Функции задаются на языке JavaScript. При описании тела функции можно использовать ранее определенные для данной модели переменные и функции. В качестве результата своей работы функция должна возвращать значение при помощи оператора return.
Получение значения аргумента происходит следующим образом:

 var t = main.arguments[0];
 var x = main.arguments[1];
 var u = main.arguments[2];

Доступные операции: создать, удалить, редактировать, тестировать.

ОперацияДействеОписание
СОЗДАТЬ
Модель-> <выбрать модель>->
 функции-> создать
Задается уникальное имя функции и ее описание.
УДАЛИТЬ
Модель-> <выбрать модель>->
 функции-> удалить
Отмечается произвольное количество функций, которые необходимо удалить (кроме main, funational).
РЕДАКТИРОВАТЬ
Модель-> <выбрать модель>->
 функции-> просмотр->
 <выбрать функцию>
Доступны к редактированию все поля. Кнопка "Отменить" возвращает начальное заполнение.
ТЕСТИРОВАТЬ
Модель-> <выбрать модель>->
 функции-> просмотр->
 <выбрать функцию>->
 кнопка "Тестировать"
Позволяет проверить правильность работы функции.

Описание используемых структур данных:

 ///////////// CLASS VECTOR ////////////////////////////////////////////
 class Vector 
 {
   Vector(size, data_string);
 
   // поля///////////
   length                      // - размерность вектора
   type                        // - тип ("вектор")
 
   // методы/////////
   String toString()           // - перевод в строку
   Vector roundVector(Number)  // - округление до указанной точности
   String toScript()           // - преобразование в строку типа 
                               //   "Vector(size, data_string)"
   Vector copy()               // - возвращает копию вектора
   Vector put(place, Number)   // - помещает в указанную коорд. значение
   Number get(place)           // - получает из указанной коорд. значение
   Vector plus(Vector| Number, place)
                               // - складывает данный вектор с вектором
                               //   или числом, находящимся по указанной 
                               //   координате place
   Vector minus(Vector | Number, place)
                               // - вычитает из данного вектора вектор
                               //   или число, находящееся по указанной 
                               //   координате place
   Vector mult(Vector | Number)// - умножает данный вектор на переданный 
                               //   вектор или число
 }
 
 ///////////// CLASS TIMEVECTOR ////////////////////////////////////////
 class TimeVector 
 {
   TimeVector(size, time, data_string);
 
   // поля///////////
   length                      // - длина массива векторов по времени
   xdim                        // - размерность вектора в массиве
   type                        // - тип ("временной вектор")
 
   // методы/////////
   String toString()           // - перевод в строку
   TimeVector roundVector(Number) 
                               // - округление до указанной точности
   String toScript()           // - преобразование в строку типа 
                               //   "TimeVector(size, time, data_string)"
   TimeVector copy()           // - возвращает копию временного вектора
   TimeVector put(place, Vector)
                               // - помещает в указанный адрес 
                               //   передаваемый вектор
   Vector get(place)           // - получает из указанного адреса вектор
   TimeVector plus(Vector| TimeVector)
                               // - складывает данный массив векторов с 
                               //   переданным вектором или с массивом
                               //   векторов поэлементно
 }
 
 ///////////// CLASS MATRIX ///////////////////////////////////////////
 class Matrix
 {
   Matrix(col, row, data_string);
 
   // поля///////////
   col                         // - количество строк
   row                         // - количество столбцов
   type                        // - тип ("матрица")
 
   // методы/////////
   String toString()           // - перевод в строку
  ~Matrix roundMatrix(Number)  // - округление до указанной точности
   String toScript()           // - преобразование в строку типа 
                               //   "Matrix(col, row, data_string)"
   Matrix copy()               // - возвращает копию матрицы
   Matrix put(col, row, Number)// - помещает в указанные коорд. значение
   Number | Vector get(col, row)
                               // - получает из указанной коорд. число, 
                               //   если row указано и вектор, если указано
  ~Matrix plus(Matrix)         // - складывает данную матрицу с переданной
  ~Matrix minus(Matrix)        // - вычитает из данной матрицы переданную
  ~Matrix mult(Vector | Matrix | Number)
                               // - умножает данную матрицу и матрицу, 
                               //   вектор или число
 }
 
 // ~  - метод не реализован