# Examples¶

## Use statistics and sort functions¶

This example shows how to use statistics functions and how to sort an array using GSL sort:

include gsl.ampl;

set A := 1..5;
# Note that the parameter cannot have values assigned in the declaration
# or the sorting below will not work, as its values will be const.
param data{a in A} default 6-a;

display gsl_stats_mean({a in A} data[a]);
display gsl_stats_variance({a in A} data[a]);
display gsl_stats_max({a in A} data[a]);
display gsl_stats_min({a in A} data[a]);

call gsl_sort({a in A} data[a]);

# Now the data array is sorted, can use functions that
# expect sorted data
display gsl_stats_quantile_from_sorted_data({a in A} data[a], 0.66)


## Finding Minimum of the Gamma Function¶

The following model (gamma.mod) finds a minimum of the gamma function $$\Gamma(x)$$ for $$x > 0$$:

# Find minimum of the gamma function for x > 0.

include gsl.ampl;

var x >= 1e-5;
minimize obj: gsl_sf_gamma(x);
solve;
print x;


Solving this models gives an optimal solution $$x \approx 1.46163$$ which can be verified here.

## Hock and Schittkowski Models¶

The hs068.mod and hs069.mod models demonstrate the use of gsl_cdf_ugaussian_P(). They are taken form the Robert Vanderbei’s collection of nonlinear models and adapted for AMPLGSL. These models can be solved with a nonlinear AMPL solver such as MINOS:

\$ ampl hs068.mod
obj = -0.261841

MINOS 5.51: optimal solution found.
29 iterations, objective -0.9204250037
Nonlin evals: obj = 57, grad = 56, constrs = 57, Jac = 56.
x [*] :=
1  0.0678586
2  3.64621
3  0.000266135
4  0.894855
;

obj = -0.920425

Best known objective value: -0.920425026