transform_vars_affine.c File Reference

Implementation of performing an affine transformation on decision values. More...

#include <assert.h>
#include "coco.h"
#include "coco_problem.c"

Data Structures

struct  transform_vars_affine_data_t
 Data type for transform_vars_affine. More...
 

Functions

static void transform_vars_affine_evaluate_function (coco_problem_t *problem, const double *x, double *y)
 Evaluates the transformed objective function. More...
 
static void transform_vars_affine_evaluate_constraint (coco_problem_t *problem, const double *x, double *y)
 Evaluates the transformed constraint. More...
 
static void transform_vars_affine_evaluate_gradient (coco_problem_t *problem, const double *x, double *y)
 Evaluates the gradient of the transformed function. More...
 
static void transform_vars_affine_free (void *thing)
 Frees the data object. More...
 
static coco_problem_ttransform_vars_affine (coco_problem_t *inner_problem, const double *M, const double *b, const size_t number_of_variables)
 Creates the transformation. More...
 

Detailed Description

Implementation of performing an affine transformation on decision values.

x |-> Mx + b
The matrix M is stored in row-major format.

Currently, the best parameter is transformed correctly only in the simple cases where M is orthogonal which is always the case for the bbob functions. How to code this for general transformations of the above form, see https://github.com/numbbo/coco/issues/814#issuecomment-303724400

Function Documentation

static coco_problem_t* transform_vars_affine ( coco_problem_t inner_problem,
const double *  M,
const double *  b,
const size_t  number_of_variables 
)
static

Creates the transformation.

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

Evaluates the transformed constraint.

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

Evaluates the transformed objective function.

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

Evaluates the gradient of the transformed function.

static void transform_vars_affine_free ( void *  thing)
static

Frees the data object.