f_step_ellipsoid.c File Reference

Implementation of the step ellipsoid function and problem. More...

Data Structures

struct  f_step_ellipsoid_data_t
 Data type for the step ellipsoid problem. More...
 

Functions

static double f_step_ellipsoid_raw (const double *x, const size_t number_of_variables, f_step_ellipsoid_data_t *data)
 Implements the step ellipsoid function without connections to any COCO structures. More...
 
static void f_step_ellipsoid_evaluate (coco_problem_t *problem, const double *x, double *y)
 Uses the raw function to evaluate the COCO problem. More...
 
static void f_step_ellipsoid_free (coco_problem_t *problem)
 Frees the step ellipsoid data object. More...
 
static coco_problem_tf_step_ellipsoid_bbob_problem_allocate (const size_t function, const size_t dimension, const size_t instance, const long rseed, const char *problem_id_template, const char *problem_name_template)
 Creates the BBOB step ellipsoid problem. More...
 
static double f_step_ellipsoid_core (const double *x, const size_t number_of_variables, f_step_ellipsoid_versatile_data_t *f_step_ellipsoid_versatile_data)
 Implements the step ellipsoid function without connections to any COCO structures. More...
 
static void f_step_ellipsoid_permblock_evaluate (coco_problem_t *problem, const double *x, double *y)
 Uses the raw function to evaluate the ls COCO problem. More...
 
static void f_step_ellipsoid_versatile_data_free (coco_problem_t *problem)
 allows to free the versatile_data part of the problem. More...
 
static coco_problem_tf_step_ellipsoid_allocate (const size_t number_of_variables)
 Allocates the basic step ellipsoid problem. an additional coordinate is added that will contain the value of {z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it. More...
 
static coco_problem_tf_step_ellipsoid_permblockdiag_bbob_problem_allocate (const size_t function, const size_t dimension, const size_t instance, const long rseed, const char *problem_id_template, const char *problem_name_template)
 Creates the BBOB permuted block-rotated step ellipsoid problem. More...
 

Detailed Description

Implementation of the step ellipsoid function and problem.

The BBOB step ellipsoid function intertwines the variable and objective transformations in such a way that it is hard to devise a composition of generic transformations to implement it. In the end one would have to implement several custom transformations which would be used solely by this problem. Therefore we opt to implement it as a monolithic function instead.

TODO: It would be nice to have a generic step ellipsoid function to complement this one.

Function Documentation

static coco_problem_t* f_step_ellipsoid_allocate ( const size_t  number_of_variables)
static

Allocates the basic step ellipsoid problem. an additional coordinate is added that will contain the value of {z}_1 but that is ignored by functions other that f_step_ellipsoid_core and transform_vars_round_step. The latter sets it.

static coco_problem_t* f_step_ellipsoid_bbob_problem_allocate ( const size_t  function,
const size_t  dimension,
const size_t  instance,
const long  rseed,
const char *  problem_id_template,
const char *  problem_name_template 
)
static

Creates the BBOB step ellipsoid problem.

Note
There is no separate basic allocate function.
static double f_step_ellipsoid_core ( const double *  x,
const size_t  number_of_variables,
f_step_ellipsoid_versatile_data_t f_step_ellipsoid_versatile_data 
)
static

Implements the step ellipsoid function without connections to any COCO structures.

static void f_step_ellipsoid_evaluate ( coco_problem_t problem,
const double *  x,
double *  y 
)
static

Uses the raw function to evaluate the COCO problem.

static void f_step_ellipsoid_free ( coco_problem_t problem)
static

Frees the step ellipsoid data object.

static void f_step_ellipsoid_permblock_evaluate ( coco_problem_t problem,
const double *  x,
double *  y 
)
static

Uses the raw function to evaluate the ls COCO problem.

static coco_problem_t* f_step_ellipsoid_permblockdiag_bbob_problem_allocate ( const size_t  function,
const size_t  dimension,
const size_t  instance,
const long  rseed,
const char *  problem_id_template,
const char *  problem_name_template 
)
static

Creates the BBOB permuted block-rotated step ellipsoid problem.

Wassim: TODO: consider implementing it sub-problem style Wassim: TODO: make the zhat1 value default to x1 when no transformation is applied and the data type defined here

static double f_step_ellipsoid_raw ( const double *  x,
const size_t  number_of_variables,
f_step_ellipsoid_data_t data 
)
static

Implements the step ellipsoid function without connections to any COCO structures.

static void f_step_ellipsoid_versatile_data_free ( coco_problem_t problem)
static

allows to free the versatile_data part of the problem.