Jump to content

ТомСим

ТомСим
Разработчик(и) Томлаб Оптимизация Инк.
Стабильная версия
7,8 / 16 декабря 2011 г. ( 2011-12-16 )
Операционная система ТОМЛАБ — Поддержка ОС
Тип Технические вычисления
Лицензия Собственный
Веб-сайт Страница продукта TomSym

ТомСим [1] Механизм символического моделирования MATLAB — это платформа для моделирования задач прикладной оптимизации и оптимального управления.

Описание

[ редактировать ]

TomSym — это полная среда моделирования в Matlab с поддержкой большинства встроенных математических операторов Matlab. Это комбинированное моделирование , компиляция и интерфейс к решателям TOMLAB . Матричная производная матричной функции представляет собой тензор четвертого ранга , то есть матрицу, каждый элемент которой является матрицей. Вместо того, чтобы использовать для этого четырехмерные матрицы, TomSym продолжает работать в двух измерениях. Это позволяет воспользоваться преимуществами очень эффективной обработки разреженных матриц в Matlab, которая недоступна для матриц более высокой размерности.

TomSym имеет множество функций, среди них:

  • Способность преобразовывать выражения и генерировать аналитические производные первого и второго порядка , включая шаблоны разреженности.
  • Интерфейс и совместимость с MAD , т.е. MAD можно использовать, когда символьное моделирование не подходит.
  • Численное дифференцирование можно использовать для частей модели.
  • Функционал для построения и расчета разнообразной информации для решения задачи.
  • Поддержка операторов if, then else.
  • Возможность анализа файлов Matlab в p-кодировании .
  • Например, автоматическое упрощение кода для сгенерированных моделей.

Моделирование

[ редактировать ]

Преобразование символического источника TomSym позволяет определить любой набор переменных решения (как непрерывных , так и целочисленных ) и любой тип ограничений, а также скаляры и постоянные параметры.

Линейное программирование

[ редактировать ]

Пример задачи линейного программирования будет выглядеть так:

 c = [-7; -5];
 A = [ 1 2
         4 1 ];
 b_U = [ 6; 12 ];
 x_L = [ 0; 0 ];

 toms 2x1 x

 solution = ezsolve(c'*x, {A*x<=b_U, x_L<=x});

Смешанно-целочисленное нелинейное программирование

[ редактировать ]

Задача MINLP определяется так же, как задача линейного программирования. В этом примере также показано, как преобразовать модель в общую задачу TOMLAB.

Name='minlp1Demo - Kocis/Grossman.';

toms 2x1 x
toms 3x1 integer y

objective = [2 3 1.5 2 -0.5]*[x;y];

constraints = { ...
    x(1) >= 0, ...
    x(2) >= 1e-8, ...
    x <= 1e8, ...
    0 <= y <=1, ...
    [1 0 1 0 0]*[x;y] <= 1.6, ...
    1.333*x(2) + y(2) <= 3, ...
    [-1 -1 1]*y <= 0, ...
    x(1)^2+y(1) == 1.25, ...
    sqrt(x(2)^3)+1.5*y(2) == 3, ...
};

guess = struct('x', ones(size(x)), 'y', ones(size(y)));
options = struct;
options.name = Name;
Prob = sym2prob('minlp', objective, constraints, guess, options);

Prob.DUNDEE.optPar(20) = 1;
Result = tomRun('minlpBB', Prob, 2);

Мультииндексное моделирование

[ редактировать ]

tomSym позволяет строить модели с двумя и более переменными индексами в MATLAB. [2] В следующем примере создается переменная flow с четырьмя индексами. Затем переменная используется для создания ограничения по двум индексам и для суммирования умножения с двумерной матрицей.

% Create the indices used in model
i = tomArrayIdx('i', 1:6);
j = tomArrayIdx('j', 1:6);
k = tomArrayIdx('k', 1:6);
l = tomArrayIdx('l', 1:6);

% Create an integer variable of full length
flow = tom('flow', 6^4, 1, 'int');

% Convert the variable to a matrix with four indices.
flow = tomArray(flow,[6, 6, 6, 6]);

% Create a constraint valid for all i and j
cons = {sum(sum(flow(i, j, k, l), k), l) == 1};

% Create a scalar based on multi-index multiplications
distance = tomArray([   0   945   605   4667   4749    4394;...
    945     0   866   3726   3806    3448;...
    605   866     0   4471   4541    4152;...
    4667  3726  4471      0    109     415;...
    4749  3806  4541    109      0     431;...
    4394  3448  4152    415    431       0]);

sumtotal = sum(vec((distance(i, k) + distance(l, j)+...
    distance(k, l)*.8).*flow(i, j, k, l)));

Автоматическое и числовое дифференцирование

[ редактировать ]

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

toms x1 x2
alpha = 100;

% USE MAD (AUTOMATIC DIFFERENTIATION) FOR ONE FUNCTION
%
% Create a wrapper function. In this case we use sin, but it could be any
% MAD supported function.

y = wrap(struct('fun','sin','n',1,'sz1',1,'sz2',1,'JFuns','MAD'),x1/x2);
f = alpha*(x2-x1^2)^2 + (1-x1)^2 + y;

% Setup and solve the problem
c = -x1^2 - x2;
con = {-1000 <= c <= 0
    -10 <= x1 <= 2
    -10 <= x2 <= 2};

x0 = {x1 == -1.2
    x2 == 1};

solution1 = ezsolve(f, con, x0);

% USE NUMERICAL DIFFERENTIATION FOR ONE FUNCTIONS
% Create a new wrapper function. In this case we use sin, but it could be
% any function since we use numerical derivatives.

y = wrap(struct('fun', 'sin', 'n', 1, 'sz1', 1, 'sz2', 1, 'JFuns', 'FDJac'), x1/ x2);
f = alpha*(x2-x1^2)^2 + (1-x1)^2 + y;

solution2 = ezsolve(f,con,x0);
  1. ^ Рутквист, Пер; М.М. Эдвалл (ноябрь 2008 г.). Руководство пользователя TOMLAB (PDF) . Пулман, Вашингтон: Tomlab Optimization Inc.
  2. ^ «Местоположение узла авиакомпании», домашняя страница TOMSYM , апрель 2009 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2021a0f79ddf2e7b8a8e2ac66527098c__1708671960
URL1:https://arc.ask3.ru/arc/aa/20/8c/2021a0f79ddf2e7b8a8e2ac66527098c.html
Заголовок, (Title) документа по адресу, URL1:
TomSym - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)