Basic Optimization Example#

This GAUSS optimization example demonstrates the minimization of a quadratic function as outlined in Luenberger’s “Linear and Nonlinear Programming.”

Code for optimization#

The example:

  • Creates a data matrix.

  • Defines an objective function that takes 4 inputs.

new;
cls;

// Make optmt library available
library optmt;

// Create data needed by objective procedure
omega = { 0.78 -0.02 -0.12 -0.14,
   -0.02  0.86 -0.04  0.06,
   -0.12 -0.04  0.72 -0.08,
   -0.14  0.06 -0.08  0.74 };

b = { 0.76, 0.08, 1.12, 0.68 };

// Objective procedure with 4 inputs:
//    i.      x       - The parameter vector
//    ii-iii. Q and b - Extra data needed by the objective procedure
//    ii.     ind     - The indicator vector
proc  qfct(x, omega, b, ind);

  // Declare 'mm' to be a modelResults
  // struct local to this procedure, 'qfct'
  struct modelResults mm;

  // If the first element of the indicator
  // vector is non-zero, compute function value
  // and assign it to the 'function' member
  // of the modelResults struct
  if ind[1];
      mm.function = 0.5*x'*omega*x - x'b;
  endif;

  // Return modelResults struct
  retp(mm);
endp;

// Starting parameter values
x_strt = { 1, 1, 1, 1 };

// Declare 'out' to be a optmtResults struct
// to hold the results from the optimization
struct optmtResults out;

// Minimize objective function
out = optmt(&qfct, x_strt, omega, b);

// Print output to the screen
call optmtPrt(out);

The code prints results to the Command Window.

Results#

Convergence details#

The first portion of the results provide details about convergence and performance.

Return code    = 0
Function value = -2.17466
Convergence    : normal convergence

These results indicate that the optimization converged normally, with a return code of 0. Any return Code other than 0 would indicate some issue with the convergence. The exact meaning of the return code can be found in the optmt() documentation.

Parameter estimates#

The next section of the results reports the parameter estimates and the associated gradients.

Parameters  Estimates    Gradient
---------------------------------------------------------------------
x[1,1]         1.5350      0.0000
x[2,1]         0.1220      0.0000
x[3,1]         1.9752      0.0000
x[4,1]         1.4130      0.0000

In this example, the gradients are all 0 for the estimates, as is expected at or near an optimum.

Computation time#

The final section of the results reports the number of iterations and computation time.

Number of iterations    10
Minutes to convergence     0.00013