OPTK  0.1.2
Toolkit for global optimisation algorithms
Public Member Functions | List of all members
syn::cola Class Reference

#include <synthetic.hpp>

Inheritance diagram for syn::cola:
syn::synthetic optk::benchmark

Public Member Functions

double evaluate (inst::set x) override
 
- Public Member Functions inherited from syn::synthetic
 synthetic (const std::string &n, u_int dims, double lb, double ub, double opt)
 
 synthetic (const std::string &n, u_int dims, double opt)
 
 ~synthetic ()
 
sspace::sspace_tget_search_space ()
 
void set_properties (std::vector< properties > p)
 
std::vector< propertiesget_properties ()
 
inst::set get_opt_param ()
 
double get_opt ()
 
void update_opt (double opt)
 
u_int get_dims ()
 
void validate_param_set (inst::set x)
 
- Public Member Functions inherited from optk::benchmark
 benchmark (const std::string &name)
 
std::string get_name ()
 

Additional Inherited Members

- Protected Member Functions inherited from syn::synthetic
void set_opt_param (inst::set op)
 
- Protected Attributes inherited from syn::synthetic
u_int m_dims
 
double m_lb
 
double m_ub
 
double m_opt
 
std::vector< propertiesm_properties
 
inst::set opt_params
 
sspace::sspace_t m_sspace
 
- Protected Attributes inherited from optk::benchmark
std::string m_name
 

Detailed Description

The Cola function is a 17-dimensional function given by

\[ f(\mathbf{x}, \mathbf{y}) = \sum_{j<i}\left(r_{i,j} - d_{i,j}\right)^2, \]

where

\[ x_1 = y_1 = y_2 = 0,\ x_2 = u_1,\ x_i = u_{2(i-2)},\ y_i = u_{2(i-2)+1}, \]

that is; \(x_i\) is 0 for \(i = 1\) and then is equal to all the even indicies of the input parameter vector, similarly \(y_i\) is equal to 0 for the first two elements, and then the odd-indexed elements of the input vector thereafter. Further, \(r_{i,j}\) is given by

\[ r_{i,j} = \sqrt{(x_i - x_j)^2 + (y_i - y_j)^2}, \]

and \(d\) is a symmetric matrix given by:

\[ \mathbf{d} = d_{i,j} = \begin{bmatrix} 1.27 \\ 1.69 & 1.43 \\ 2.04 & 2.35 & 2.43 \\ 3.09 & 3.18 & 3.26 & 2.85 \\ 3.20 & 3.22 & 3.27 & 2.88 & 1.55 \\ 2.86 & 2.56 & 2.58 & 2.59 & 3.12 & 3.06 \\ 3.17 & 3.18 & 3.18 & 3.12 & 1.31 & 1.64 & 3.00 \\ 3.21 & 3.18 & 3.18 & 3.17 & 1.70 & 1.36 & 2.95 & 1.32 \\ 2.38 & 2.31 & 2.42 & 1.94 & 2.85 & 2.81 & 2.56 & 2.91 & 2.97 \end{bmatrix}. \]

The parameters of the above are subject to \(0 \le u_1 \le 4\), \(-4 \le u_i \le 4\), \(i = 2, 3, \cdots, n\) where \(n = 17\). The global minima occurs at \(u_i^* = (0.651906, 1.30194, 0.099242, −0.883791, −0.8796, 0.204651, −3.28414, 0.851188, −3.46245, 2.53245, −0.895246, 1.40992, −3.07367, 1.96257, −2.97872, −0.807849, −1.68978)\), with a vaue of \(11.7464\).

Member Function Documentation

◆ evaluate()

double syn::cola::evaluate ( inst::set  x)
overridevirtual

Evaluate the benchmark (i.e. calculate the value of the objective fuinction) on the provided values.

Parameters
xA vector of double-precision values to evaluate the benchmark at.
Todo:
Verify that a vector of doubles does not constrict the range of benchmark functions which may be evaluated (i.e. as opposed to categorical variables such as strings).

Implements optk::benchmark.


The documentation for this class was generated from the following files: