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

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

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

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

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

Определение названия

Основополагающая операция при создании модели. Название модели (в дальнейшем просто модель) вбирает в себя все свойства описываемого объекта.

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

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


Заполнение паспорта

Второй шаг при создании модели. Параметры паспорта могут меняться в зависимости от глубины проработки данного механизма, однако один из основных параметров, которые требуется указывать при создании модели -- ее принадлежность к классу конечномерных или функциональных задач. Обязательные для заполнения поля паспорта отмечены звездочкой (*).

Данные паспорта используются при настройке алгоритмов и создании вычислений.

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

ОперацияДействеОписание
ЗАПОЛНИТЬ
Модель-> создать-> 2 Шаг
В случае выбора типа модели "функциональная" происходит автоматическое создание переменных: t (время), x (состояние), u (управление). Также автоматически создаются две функции main(t,x,u) и functional(x). В случае выбора типа модели "конечномерная", создается только функция functional(x).
ИЗМЕНИТЬ
Модель-> <выбрать модель>->
 Паспорт


Создание переменных

Для каждой модели может быть указано произвольное количество переменных трех возможных типов: Скаляр, Вектор, Матрица. При этом каждая переменная может быть задана как изменяющаяся по времени, так и постоянная. Длительность переменной по времени определяет значение параметра t (время). Указанный параметр доступен для переменных лишь в случае, если в паспорте модели указана ее принадлежность к функциональным задачам.

Формат заполнения структур данных:
ТипРазмерностьВремяФормат
Скаляр00d
Скаляр0td;d;...,d (t-раз)
Векторn0d,d,...,d (n-раз)
Векторntd,d,...,d (n-раз); d,d,...,d (n-раз); ...; d,d,...,d (n-раз) (t-раз)
Матрицаnxm0d,d,...,d (n-раз), d,d,...,d (n-раз), ..., d,d,...,d (n-раз)(m-раз)
Матрицаnxmtd,d,...,d (n-раз), d,d,...,d (n-раз), ..., d,d,...,d (n-раз)(m-раз); ...; d,d,...,d (n-раз), d,d,...,d (n-раз), ..., d,d,...,d (n-раз)(m-раз) (t-раз)

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

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


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

Определение функций происходит в два этапа: на первом этапе задается название функции и ее описание, на втором -- тело функции. В системе существует два зарезервированных имени функции, которые создаются автоматически и не могут быть удалены, это: 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)
                               // - умножает данную матрицу и матрицу, 
                               //   вектор или число
 }
 
 // ~  - метод не реализован 
 

Задание ограничений

Функциональность не реализована.