Unconstrain
Unconstrain#

class unconstrain#
The unconstrain metaproblem.
This metaproblem transforms a constrained problem into an unconstrained problem applying one of the following methods:
Death penalty: simply penalizes all objectives by the same high value if the fitness vector is infeasible as checked by pagmo::problem::feasibility_f().
Kuri’s death penalty: defined by Angel Kuri Morales et al., penalizes all objectives according to the rate of satisfied constraints.
Weighted violations penalty: penalizes all objectives by the weighted sum of the constraint violations.
Ignore the constraints: simply ignores the constraints.
Ignore the objectives: ignores the objectives and defines as a new single objective the overall constraints violation (i.e. the sum of the L2 norms of the equalities and inequalities violations)
See: Coello Coello, C. A. (2002). Theoretical and numerical constrainthandling techniques used with evolutionary algorithms: a survey of the state of the art. Computer methods in applied mechanics and engineering, 191(11), 12451287.
See: Kuri Morales, A. and Quezada, C.C. A Universal eclectic genetic algorithm for constrained optimization, Proceedings 6th European Congress on Intelligent Techniques & Soft Computing, EUFIT’98, 518522, 1998.
Public Functions

unconstrain()#
Default constructor.
The default constructor will initialize a pagmo::null_problem unconstrained via the death penalty method.

template<typename T, ctor_enabler<T> = 0>
inline explicit unconstrain(T &&p, const std::string &method = "death penalty", const vector_double &weights = vector_double())# Constructor from UDP and unconstrain method.
Wraps a userdefined problem so that its constraints will be removed
Note
This constructor is enabled only if
T
can be used to construct apagmo::problem
and ifT
, after the removal of reference and cv qualifiers, is notpagmo::unconstrain
. Parameters
p – a userdefined problem or a pagmo::problem.
method – an
std::string
containing the name of the method to be used t remove the constraints: one of “death penalty”, “kuri”, “weighted”, “ignore_c” or “ignore_o”.weights – an
std::vector
containing the weights in case “weighted” is selected as method.
 Throws
std::invalid_argument – if the length of
weights
is not equal to the problem constraint dimension \( n_{ec} + n_{ic}\) whenmethod
is “weighted”, if themethod
is not one of “death penalty”, “kuri”, “weighted”, “ignore_c” or “ignore_o”, if theweights
vector is not empty and themethod
is not “weighted” or ifis
already unconstrainedunspecified – any exception thrown by the pagmo::problem constructor

vector_double fitness(const vector_double&) const#
Fitness.
The unconstrained fitness computation.
 Parameters
x – the decision vector.
 Throws
unspecified – any exception thrown by memory errors in standard containers, or by problem::fitness().
 Returns
the fitness of
x
.

bool has_batch_fitness() const#
Check if the inner problem can compute fitnesses in batch mode.
 Returns
the output of the
has_batch_fitness()
member function invoked by the inner problem.

vector_double batch_fitness(const vector_double &xs) const#
Batch fitness.
The batch fitness computation is forwarded to the inner UDP and then all are penalized.
 Parameters
xs – the input decision vectors.
 Throws
unspecified – any exception thrown by memory errors in standard containers, threading primitives, or by problem::batch_fitness().
 Returns
the fitnesses of
xs
.

vector_double::size_type get_nobj() const#
Number of objectives.
 Returns
the number of objectives of the inner problem.

vector_double::size_type get_nix() const#
Integer dimension.
 Returns
the integer dimension of the inner problem.

std::pair<vector_double, vector_double> get_bounds() const#
Boxbounds.
Forwards the bounds computations to the inner pagmo::problem.
 Throws
unspecified – any exception thrown by
problem::get_bounds()
. Returns
the lower and upper bounds for each of the decision vector components.

bool has_set_seed() const#
Calls
has_set_seed()
of the inner problem.Calls the method
has_set_seed()
of the inner problem. Returns
a flag signalling whether the inner problem is stochastic.

void set_seed(unsigned)#
Calls
set_seed()
of the inner problem.Calls the method
set_seed()
of the inner problem. Parameters
seed – seed to be set.
 Throws
std::not_implemented_error – if the inner problem is not stochastic.

thread_safety get_thread_safety() const#
Problem’s thread safety level.
The thread safety of a metaproblem is defined by the thread safety of the inner pagmo::problem.
 Returns
the thread safety level of the inner pagmo::problem.

const problem &get_inner_problem() const#
Getter for the inner problem.
Returns a const reference to the inner pagmo::problem.
 Returns
a const reference to the inner pagmo::problem.

problem &get_inner_problem()#
Getter for the inner problem.
Returns a reference to the inner pagmo::problem.
Note
The ability to extract a non const reference is provided only in order to allow to call nonconst methods on the internal
pagmo::problem
instance. Assigning a newpagmo::problem
via this reference is undefined behaviour. Returns
a reference to the inner pagmo::problem.

std::string get_name() const#
Problem name.
This method will add
[unconstrained]
to the name provided by the inner problem. Throws
unspecified – any exception thrown by problem::get_name() or memory errors in standard classes.
 Returns
a string containing the problem name.

std::string get_extra_info() const#
Extra info.
This method will append a description of the unconstrain method to the extra info provided by the inner problem.
 Throws
unspecified – any exception thrown by problem::get_extra_info(), the public interface of
std::ostringstream
or memory errors in standard classes. Returns
a string containing extra info on the problem.