|
TOMLAB OPTIMIZATION ENVIRONMENT: goalSolve |
![]() |
goalSolve
Purpose
For sparse multi-objective goal attainment problems, with linear and nonlinear constraints.
Syntax
Result = goalSolve(Prob, PriLev)
Description
Finds a solution to a multi-objective goal attainment optimization problem,
with linear and nonlinear constraints.
with the use of any suitable TOMLAB solver
Problem
min max {lam: r(x) - w.*lam <= g}, where r(x) is in R^m
x
s/t x_L <= x <= x_U, x is in R^n
b_L <= A x <= b_U
c_L <= c(x) <= c_U
g are m goals, w are m weights
The goal attainment problem is solved in goalSolve by rewriting
the problem as a general constrained optimization problem.
One additional variable z, stored as x(n+1), is added
min z, where r(x) is in R^m
x
s/t x_L <= x(1:n) <= x_U
-Inf <= z <= Inf
b_L <= A x <= b_U
c_L <= c(x) <= c_U
g <= r(x) - z*w <= g, w,g is in R^m, index 1:GE
-Inf <= r(x) - z*w <= g, w,g is in R^m, index GE+1:m
GE = Prob.GoalsExact, the number of goals to be exactly fulfilled
Example
See goalDemo.m in tomlab\examples
Input Parameters
Prob Structure Prob. Prob must be defined!!!
Best is to use Prob = clsAssign(.....), if using the TQ format.
The problem should be created in the Tomlab constrained
nonlinear least squares format (cls)
This format is aimed for a vector valued function, with a
Jacobian matrix as the derivative.
PriLev The second input argument. Default == 2.
If PriLev == 0, goalSolve is silent, except for error messages.
If > 0, goalSolve prints summary output about problem
transformation
goalSolve calls PrintResult(Result,PriLev), i.e. printing in
PrintResult is made if PriLev > 0.
PriLev == 2 displays standard output in PrintResult.
Extra fields used in Prob:
SolverInf Name of the Tomlab solver. Valid names are:
conSolve, nlpSolve, sTrustr, clsSolve
If Tomlab /SOL is installed: minos, snopt, npopt
LS.w Weights w, should have length m = length(r(x))
LS.g Goals g, should have length m = length(r(x))
GoalsExact The 1st "GoalsExact" goals should be fullfilled with equality
The rest of the fields in Prob should be defined as wanted by
the selected solver. See the help for the solver.
In particular:
x_0: Starting point x_L: Lower bounds for x x_U: Upper bounds for x b_L: Lower bounds for linear constraints b_U: Upper bounds for linear constraints A: Linear constraint matrix c_L: Lower bounds for nonlinear constraints c_U: Upper bounds for nonlinear constraints ConsPattern The pattern of the constraint Jacobian (derivatives of c(x)) JacPattern The pattern of the residual Jacobian (derivatives of r(x))
goalSolve will create the new Prob.ConsPattern to be used by the
solver using the information in ConsPattern and
JacPattern.
Output Parameters
Result Structure with results from optimization. See help for the used solver
The output in Result, i.e. fields Result.x_k, Result.r_k, Result.J_k,
Result.c_k, Result.cJac, Result.x_0, Result.xState, Result.cState,
Result.v_k, is transformed back to the original problem.
Result.g_k is Result.J_k'*Result.r_k.
The output in Result.Prob is the result after goalSolve
transformed the problem, i.e. the altered Prob structure
![]() |
glcSolve | infSolve | ![]() |