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