Luksan Vlcek 1#

struct luksan_vlcek1#

Test problem from Luksan and Vlcek.

Implementation of Example 5.1 in the report from Luksan and Vlcek.

The problem is the Chained Rosenbrock function with trigonometric-exponential constraints.

Its formulation can be written as:

\[\begin{split} \begin{array}{rl} \mbox{find:} & -5 \le x_i \le 5, \forall i=1..n \\ \mbox{to minimize: } & \sum_{i=1}^{n-1}\left[100\left(x_i^2-x_{i+1}\right)^2 + \left(x_i-1\right)^2\right] \\ \mbox{subject to:} & 3x_{k+1}^3+2x_{k+2}-5+\sin(x_{k+1}-x_{k+2})\sin(x_{k+1}+x_{k+2}) + \\ & +4x_{k+1}-x_k\exp(x_k-x_{k+1})-3 = 0, \forall k=1..n-2 \end{array} \end{split}\]

See: Luksan, L., and Jan Vlcek. “Sparse and partially separable test problems for unconstrained and equality

constrained optimization.” (1999).

http://hdl.handle.net/11104/0123965

Public Functions

luksan_vlcek1(unsigned dim = 3u)#

Constructor from dimension and bounds.

Constructs the luksan_vlcek1 problem.

Parameters

dim – the problem dimensions.

Throws

std::invalid_argument – if dim is < 3.

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.

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.

inline vector_double::size_type get_nec() const#

Equality constraint dimension.

Returns

the number of equality constraints.

vector_double gradient(const vector_double&) const#

Gradients.

It returns the fitness gradient.

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.

sparsity_pattern gradient_sparsity() const#

Gradients sparsity.

It returns the gradient sparisty structure for the Luksan Vlcek 1 problem.

The gradients sparisty is represented in the form required by problem::gradient_sparsity().

Returns

the gradient sparsity structure of the fitness function.

inline std::string get_name() const#

Problem name.

Returns

a string containing the problem name.

Public Members

unsigned m_dim#

Problem dimensions.