LinRatSolve: Difference between revisions
No edit summary |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Solvers]] | |||
==Purpose== | ==Purpose== | ||
Line 8: | Line 9: | ||
<math> | <math> | ||
\begin{array}{cccccc} | \begin{array}{cccccc} | ||
\min\limits_x & \frac{c1x}{c2x} \\ | |||
\min\limits_x & \ | \text{subject to} & x_L & \leq & x & \leq & x_U \\ | ||
& b_L & \leq & Ax & \leq & b_U \\ | |||
\end{array} | \end{array} | ||
</math> | </math> | ||
where <math> | where <math>c1,c2,x,x_L,x_U \in \mathbb{R}^{n}</math> , <math>b_L,b_U \in \mathbb{R}^{m_1}</math> and <math>A \in \mathbb{R}^{m_1 \times n}</math>. | ||
==Calling Syntax== | ==Calling Syntax== | ||
<source lang="matlab"> | |||
Result=linRatSolve(Prob,PriLev) | Result=linRatSolve(Prob,PriLev) | ||
</source> | |||
== | ==Inputs== | ||
{| | {| class="wikitable" | ||
|-valign="top" | |-valign="top" | ||
|''Prob''||colspan="2"|Structure Prob. Prob must be defined. Best is to use Prob = lpAssign(.....), if using the TQ format. Prob.QP.c1/c2 matrices should then be set (Prob.QP.c ignored). | |''Prob''||colspan="2"|Structure Prob. Prob must be defined. Best is to use Prob = lpAssign(.....), if using the TQ format. Prob.QP.c1/c2 matrices should then be set (Prob.QP.c ignored). | ||
|- | |-valign="top" | ||
|''PriLev''||Print level in ''linRatSolve''. | |''PriLev''||Print level in ''linRatSolve''. | ||
= 0 Silent except for error messages. | |||
''> ''0 Print summary information about problem transformation. | |||
Calls ''PrintResult ''with specified ''PriLev''. | |||
= 2 Standard output from ''PrintResult ''(default). | |||
|- | |- | ||
|colspan="2"|Extra fields used in Prob: | |colspan="2"|Extra fields used in Prob: | ||
Line 48: | Line 52: | ||
|} | |} | ||
== | ==Outputs== | ||
{| class="wikitable" | |||
|-valign="top" | |||
|''Result''||Structure with results from optimization. Output depends on the solver used. | |''Result''||Structure with results from optimization. Output depends on the solver used. | ||
The fields ''x_k'', ''f_k'', ''x_0'', ''xState'', ''bState'', ''v_k ''are transformed back to match the original problem. | |||
The output in Result.Prob is the result after linRatSolve transformed the problem, i.e. the altered Prob structure | |||
|} | |} | ||
==Description== | ==Description== | ||
Line 69: | Line 74: | ||
\end{array} | \end{array} | ||
</math> | </math> | ||
The problem then becomes: | The problem then becomes: | ||
<math> | <math> | ||
\begin{array}{cccccc} | \begin{array}{cccccc} | ||
\min\limits_x c1 z2\\\\\text{subject to} & z1_L & \leq & z1 & \leq & \infty \\& 1 & \leq & c2 z2 & \leq & 1 \\& 0 & \leq & A z2 - z1 beq & \leq & 0 \\& -\infty & \leq & A z2 - z1 b_U & \leq & 0 \\& -\infty & \leq & - A z2 + z1 b_L & \leq & 0 \\\\& 0 & \leq & A1 z2 - z1 xeq & \leq & 0 \\& -\infty & \leq & A1 z2 - z1 x_U & \leq & 0 \\& -\infty & \leq & - A1 z2 + z1 x_L & \leq & 0 \\ | |||
\end{array} | |||
</math> | </math> | ||
OBSERVE the denominator ''c''2''x ''must always be positive. It is normally a good a idea to run the problem with both signs (multiply | where <math>A1 \in \mathbb{R}^{N},\; A1=speye(N)</math>. | ||
OBSERVE the denominator ''c''2''x ''must always be positive. It is normally a good a idea to run the problem with both signs (multiply each side by -1). | |||
==See Also== | ==See Also== | ||
[[lpassign|''lpAssign'']]. | [[lpassign|''lpAssign'']]. |
Latest revision as of 08:13, 16 January 2012
Purpose
Finds a linearly constrained solution of a function of the ratio of two linear functions with the use of any suitable TOMLAB solver. Binary and integer variables are not supported.
linRatSolve solves problems of the type:
where , and .
Calling Syntax
Result=linRatSolve(Prob,PriLev)
Inputs
Prob | Structure Prob. Prob must be defined. Best is to use Prob = lpAssign(.....), if using the TQ format. Prob.QP.c1/c2 matrices should then be set (Prob.QP.c ignored). | |
PriLev | Print level in linRatSolve.
= 0 Silent except for error messages. > 0 Print summary information about problem transformation. Calls PrintResult with specified PriLev. = 2 Standard output from PrintResult (default). | |
Extra fields used in Prob: | ||
SolverRat | Name of the TOMLAB solver. Valid names are: cplex, minos, snopt, xa and more. See SolverList('lp'); | |
QP.c1 | The numerator in the objective. | |
QP.c2 | The denominator in the objective. | |
z1_L | Lower bound for z1 (default 1e-5). See description below |
Outputs
Result | Structure with results from optimization. Output depends on the solver used.
The fields x_k, f_k, x_0, xState, bState, v_k are transformed back to match the original problem. The output in Result.Prob is the result after linRatSolve transformed the problem, i.e. the altered Prob structure |
Description
The linear ratio problem is solved by linRatSolve by rewriting the problem as a linear constrained optimization problem. n+1 variables z1 and z2(2:n+1) are needed, stored as x(1:n+1). The n original variables are removed so one more variable exists in the final problem.
The problem then becomes:
where .
OBSERVE the denominator c2x must always be positive. It is normally a good a idea to run the problem with both signs (multiply each side by -1).