TomSym
   HOME

TheInfoList



OR:

The TomSym MATLAB symbolic modeling engine is a platform for modeling applied optimization and optimal control problems.


Description

TomSym is complete modeling environment in Matlab with support for most built-in mathematical operators in Matlab. It is a combined modeling, compilation and interface to the TOMLAB solvers. The matrix derivative of a matrix function is a fourth rank tensor - that is, a matrix each of whose entries is a matrix. Rather than using four-dimensional matrices to represent this, TomSym continues to work in two dimensions. This makes it possible to take advantage of the very efficient handling of sparse matrices in Matlab, which is not available for higher-dimensional matrices. TomSym has a variety of functions, among them: * Ability to transform expressions and generate analytical first and second order derivatives, including sparsity patterns. * Interfaced and compatible with MAD, i.e. MAD can be used when symbolic modeling is not suitable. * Numerical differentiation can be used to parts of the model. * Functionality for plotting and computing a variety of information for the solution to the problem. * Support for if, then, else statements. * Ability to analyze p-coded Matlab files. * Automated code simplification for generated models, for example. **
Multiplication Multiplication (often denoted by the cross symbol , by the mid-line dot operator , by juxtaposition, or, on computers, by an asterisk ) is one of the four elementary mathematical operations of arithmetic, with the other ones being additi ...
by 1 or the
identity matrix In linear algebra, the identity matrix of size n is the n\times n square matrix with ones on the main diagonal and zeros elsewhere. Terminology and notation The identity matrix is often denoted by I_n, or simply by I if the size is immaterial o ...
is eliminated: 1*A = A **
Addition Addition (usually signified by the Plus and minus signs#Plus sign, plus symbol ) is one of the four basic Operation (mathematics), operations of arithmetic, the other three being subtraction, multiplication and Division (mathematics), division. ...
/
subtraction Subtraction is an arithmetic operation that represents the operation of removing objects from a collection. Subtraction is signified by the minus sign, . For example, in the adjacent picture, there are peaches—meaning 5 peaches with 2 taken ...
of 0 is eliminated: 0+A = A ** All-same matrices are reduced to
scalars Scalar may refer to: *Scalar (mathematics), an element of a field, which is used to define a vector space, usually the field of real numbers *Scalar (physics), a physical quantity that can be described by a single element of a number field such a ...
: ;3;3x = 3+x ** Scalars are moved to the left in addition/subtraction: A-y = -y+A ** Inverse operations cancel: sqrt(x)^2 = x


Modeling

The TomSym symbolic source transformation makes it possible to define any the set of decision variables (both continuous and integer) and any type of constraint as well as scalars and constant parameters.


Linear programming

An example
linear programming Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear function#As a polynomial function, li ...
problem would look like this: c = 7; -5 A = 1 2 4 1 b_U = 6; 12 x_L = 0; 0 toms 2x1 x solution = ezsolve(c'*x, );


Mixed-integer nonlinear programming

A MINLP problem is defined just like a linear programming problem. This example also shows how to convert the model into a general TOMLAB problem. Name='minlp1Demo - Kocis/Grossman.'; toms 2x1 x toms 3x1 integer y objective = 3 1.5 2 -0.5 ;y constraints = ; 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);


Multi-index modeling

tomSym makes it possible to build models with two or more variable indices in MATLAB."Airline Hub Location", ''TOMSYM Home Page''
April, 2009. The following example creates a variable 'flow' with four indices. The variable is then used to create a constraint over two of the indices and to sum the multiplication with a two-dimensional matrix. % 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; % Create a constraint valid for all i and j cons = ; % 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)));


Automatic and numerical differentiation

For functions that cannot be interpreted by tomSym it is possible to use either automatic differentiation or numerical differentiation. In the following example a simple problem is solved using the two methods. 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 = ; x0 = ; 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);


References


External links


TomSym Home Page
{{DEFAULTSORT:Tomsym Numerical software Mathematical optimization software