TomSym - TomSym
Vývojáři | Tomlab Optimization Inc. |
---|---|
Stabilní uvolnění | 7.8 / 16. prosince 2011 |
Operační systém | TOMLAB - podpora OS |
Typ | Technické výpočty |
Licence | Proprietární |
webová stránka | Strá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
- ^ 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)
- ^ "Airline Hub Location", Domovská stránka TOMSYM Dubna 2009.