TomSym - TomSym

TomSym
VývojářiTomlab Optimization Inc.
Stabilní uvolnění
7.8 / 16. prosince 2011 (2011-12-16)
Operační systémTOMLAB - podpora OS
TypTechnické výpočty
LicenceProprietární
webová stránkaStránka produktu TomSym

The TomSym[1] MATLAB symbolické modelování je platforma pro modelování aplikované optimalizace a problémů s optimální kontrolou.

Popis

TomSym je kompletní modelování prostředí v Matlabu s podporou většiny vestavěných matematických operátory v Matlabu. Je to kombinovaná modelování, sestavení a rozhraní k TOMLAB řešitelé. The maticový derivát maticové funkce je čtvrtá pozice tenzor - to je matice, jejíž každý záznam je matice. Spíše než používat čtyřrozměrné matice, které to reprezentují, TomSym nadále pracuje ve dvou dimenzích. To umožňuje využít velmi efektivní manipulaci s řídký matice v Matlabu, který není k dispozici pro matice vyšších dimenzí.

TomSym má řadu funkcí, mimo jiné:

  • Schopnost transformovat výrazy a generovat analytické hodnoty prvního a druhého řádu deriváty, včetně řídkých vzorů.
  • Rozhraní a kompatibilní s ŠÍLENÝ, tj. MAD lze použít, když symbolické modelování není vhodné.
  • K částem modelu lze použít numerickou diferenciaci.
  • Funkce pro vykreslování a výpočet různých informací pro řešení problému.
  • Podpora příkazů if, else, else.
  • Schopnost analyzovat p-kódováno Soubory Matlab.
  • Automatizované zjednodušení kódu například pro generované modely.
    • Násobení o 1 nebo matice identity je vyloučeno: 1 * A = A
    • Přidání /odčítání z 0 je vyloučeno: 0 + A = A
    • Všechny stejné matice jsou redukovány na skaláry: [3; 3; 3] + x = 3 + x
    • Skaláry jsou posunuty doleva sčítáním / odčítáním: A-y = -y + A
    • Zrušit inverzní operace: sqrt (x) ^ 2 = x

Modelování

Transformace symbolického zdroje TomSym umožňuje definovat libovolnou sadu rozhodovacích proměnných (obě kontinuální a celé číslo ) a jakýkoli typ omezení, stejně jako skaláry a konstantní parametry.

Lineární programování

Příklad lineární programování problém by vypadal takto:

 C = [-7; -5]; A = [ 1 2         4 1 ]; b_U = [ 6; 12 ]; x_L = [ 0; 0 ]; toms 2x1 x řešení = ezsolve(C'*X, {A*X<=b_U, x_L<=X});

Smíšené celé číslo nelineární programování

Problém MINLP je definován stejně jako problém lineárního programování. Tento příklad také ukazuje, jak převést model na obecný problém TOMLAB.

 název='minlp1Demo - Kocis / Grossman.'; toms 2x1 x toms 3x1 celé číslo y objektivní = [2 3 1.5 2 -0.5]*[X;y]; omezení = { ...    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, ...    čtv(X(2)^3)+1.5*y(2) == 3, ... }; tipni si = struktur('X',ty(velikost(X)),'y',ty(velikost(y))); možnosti = struktur; možnosti.název = název; Prob = sym2prob('minlp',objektivní,omezení,tipni si,možnosti); Prob.DUNDEE.optPar(20) = 1; Výsledek = tomRun('minlpBB',Prob,2);

Víceindexové modelování

tomSym umožňuje v MATLABu vytvářet modely se dvěma nebo více variabilními indexy.[2] Následující příklad vytvoří proměnnou 'flow' se čtyřmi indexy. Proměnná se poté použije k vytvoření omezení přes dva z indexů a k součtu násobení pomocí dvojrozměrné matice.

% Vytvořte indexy použité v modelui = tomArrayIdx('já',1:6);j = tomArrayIdx('j',1:6);k = tomArrayIdx('k',1:6);l = tomArrayIdx('já',1:6);% Vytvořte celočíselnou proměnnou plné délkytok = tom('tok',6^4,1,'int');% Převede proměnnou na matici se čtyřmi indexy.tok = tomArray(tok,[6,6,6,6]);% Vytvořte omezení platné pro všechna i a jnevýhody = {součet(součet(tok(i,j,k,l),k),l) == 1};% Vytvořte skalár na základě multiindexových multiplikacívzdálenost = 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]);součet = součet(vec((vzdálenost(i,k)+vzdálenost(l,j)+...    vzdálenost(k,l)*.8).*tok(i,j,k,l)));

Automatická a numerická diferenciace

Pro funkce, které nelze interpretovat tomSym, je možné použít buď automatické rozlišení nebo numerická diferenciace. V následujícím příkladu je jednoduchý problém vyřešen pomocí těchto dvou metod.

toms x1 x2alfa = 100;% POUŽITÍ VYROBENO (AUTOMATICKÉ DIFERENCIACE) PRO JEDNOU FUNKCI%% Vytvořte funkci obálky. V tomto případě použijeme hřích, ale může to být jakýkoli% Podporovaná funkce MAD.y = zabalit(struktur('zábava','hřích','n',1,'sz1',1,'sz2',1,'JFuns','ŠÍLENÝ'),x1/x2);F = alfa*(x2-x1^2)^2 + (1-x1)^2 + y;% Nastavení a vyřešení problémuC = -x1^2 - x2;ošidit = {-1000 <= C <= 0    -10 <= x1 <= 2    -10 <= x2 <= 2};x0 = {x1 == -1.2    x2 == 1};řešení1 = ezsolve(F,ošidit,x0);% POUŽIJTE ČÍSELNÉ ROZDÍLENÍ PRO JEDNOU FUNKCI% Vytvořte novou funkci obálky. V tomto případě použijeme hřích, ale mohl by být% libovolná funkce, protože používáme číselné derivace.y = zabalit(struktur('zábava','hřích','n',1,'sz1',1,'sz2',1,'JFuns','FDJac'),x1/x2);F = alfa*(x2-x1^2)^2 + (1-x1)^2 + y;řešení2 = ezsolve(F,ošidit,x0);

Reference

  1. ^ Rutquist, Per; M. M. Edvall (listopad 2008). Uživatelská příručka pro TOMLAB (PDF). 1260 SE Bishop Blvd Ste E, Pullman, WA 99163, USA: Tomlab Optimization Inc.CS1 maint: umístění (odkaz)
  2. ^ "Airline Hub Location", Domovská stránka TOMSYM Dubna 2009.

externí odkazy