Hock Schittkowsky No.71#

struct hock_schittkowski_71#

Problem No.71 from the Hock Schittkowski suite.

Mainly used for testing and debugging during PaGMO development, this struct implements the problem No.71 from the Hock Schittkowski suite:

\[\begin{split} \begin{array}{rl} \mbox{find: } & 1 \le \mathbf x \le 5 \\ \mbox{to minimize: } & x_1x_4(x_1+x_2+x_3) + x_3 \\ \mbox{subject to: } & x_1^2+x_2^2+x_3^2+x_4^2 - 40 = 0 \\ & 25 - x_1 x_2 x_3 x_4 \le 0 \end{array} \end{split}\]

See: W. Hock and K. Schittkowski. Test examples for nonlinear programming codes. Lecture Notes in Economics and Mathematical Systems, 187, 1981. doi: 10.1007/978-3-642-48320-2.

Public Functions

vector_double fitness(const vector_double&) const#

Fitness computation.

Computes the fitness for this UDP

Parameters

x – the decision vector.

Returns

the fitness of x.

inline vector_double::size_type get_nec() const#

Equality constraint dimension.

It returns the number of equality constraints

Returns

the number of equality constraints

inline vector_double::size_type get_nic() const#

Inequality constraint dimension.

It returns the number of inequality constraints

Returns

the number of inequality constraints

std::pair<vector_double, vector_double> get_bounds() const#

Box-bounds.

It returns the box-bounds for this UDP.

Returns

the lower and upper bounds for each of the decision vector components

vector_double gradient(const vector_double&) const#

Gradients.

It returns the fitness gradient for this UDP.

The gradient is represented in a sparse form as required by problem::gradient().

Parameters

x – the decision vector.

Returns

the gradient of the fitness function

std::vector<vector_double> hessians(const vector_double&) const#

Hessians.

It returns the hessians for this UDP.

The hessians are represented in a sparse form as required by problem::hessians().

Parameters

x – the decision vector.

Returns

the hessians of the fitness function

std::vector<sparsity_pattern> hessians_sparsity() const#

Hessians sparsity (only the diagonal elements are non zero)

It returns the hessian sparisty structure for this UDP.

The hessian sparisty is represented in the form required by problem::hessians_sparsity().

Returns

the hessians of the fitness function

inline std::string get_name() const#

Problem name.

Returns

a string containing the problem name

inline std::string get_extra_info() const#

Extra info.

Returns

a string containing extra info on the problem

vector_double best_known() const#

Optimal solution.

Returns

the decision vector corresponding to the best solution for this problem.