PaGMO
1.1.5
|
Constrainted to Multi-Objective meta-problem. More...
#include <con2mo.h>
Public Types | |
enum | method_type { OBJ_CSTRS = 0, OBJ_CSTRSVIO = 1, OBJ_EQVIO_INEQVIO = 2 } |
Mechanism used to deal with constraints in the objectives. More... | |
Public Types inherited from pagmo::problem::base | |
typedef decision_vector::size_type | size_type |
Problem's size type: the same as pagmo::decision_vector's size type. | |
typedef fitness_vector::size_type | f_size_type |
Fitness' size type: the same as pagmo::fitness_vector's size type. | |
typedef constraint_vector::size_type | c_size_type |
Constraints' size type: the same as pagmo::constraint_vector's size type. | |
Public Member Functions | |
con2mo (const base &=cec2006(4), const method_type=OBJ_CSTRS) | |
base_ptr | clone () const |
Clone method. | |
std::string | get_name () const |
Get problem's name. More... | |
Public Member Functions inherited from pagmo::problem::base_meta | |
base_meta (const base &p=ackley(1), int n=1, int ni=0, int nf=1, int nc=0, int nic=0, const std::vector< double > &c_tol=std::vector< double >()) | |
Constructor. | |
base_meta (const base_meta &p) | |
Copy constructor. | |
Public Member Functions inherited from pagmo::problem::base | |
base (int, int=0, int=1, int=0, int=0, const double &=0) | |
Constructor from global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More... | |
base (int, int, int, int, int, const std::vector< double > &) | |
Constructor from global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More... | |
base (const double &, const double &, int, int=0, int=1, int=0, int=0, const double &=0) | |
Constructor from values for lower and upper bounds, global dimension, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More... | |
base (const decision_vector &, const decision_vector &, int=0, int=1, int=0, int=0, const double &=0) | |
Constructor from upper/lower bounds, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More... | |
template<std::size_t N> | |
base (const double(&v1)[N], const double(&v2)[N], int ni=0, int nf=1, int nc=0, int nic=0, const double &c_tol=0) | |
Constructor from raw arrays, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More... | |
template<class Iterator1 , class Iterator2 > | |
base (Iterator1 start1, Iterator1 end1, Iterator2 start2, Iterator2 end2, int ni=0, int nf=1, int nc=0, int nic=0, const double &c_tol=0) | |
Constructor from iterators, integer dimension, fitness dimension, global constraints dimension, inequality constraints dimension and constraints tolerance. More... | |
virtual | ~base () |
Trivial destructor. More... | |
std::string | human_readable () const |
Return human readable representation of the problem. More... | |
bool | operator== (const base &) const |
Equality operator. More... | |
bool | operator!= (const base &) const |
Inequality operator. More... | |
bool | is_compatible (const base &) const |
Compatibility operator. More... | |
bool | compare_x (const decision_vector &, const decision_vector &) const |
Compare decision vectors. More... | |
bool | verify_x (const decision_vector &) const |
Verify compatibility of decision vector x with problem. More... | |
bool | compare_fc (const fitness_vector &, const constraint_vector &, const fitness_vector &, const constraint_vector &) const |
Simultaneous fitness-constraint comparison. More... | |
virtual void | pre_evolution (population &) const |
Pre-evolution hook. More... | |
virtual void | post_evolution (population &) const |
Post-evolution hook. More... | |
virtual void | set_sparsity (int &lenG, std::vector< int > &iGfun, std::vector< int > &jGvar) const |
Sets the sparsity pattern of the gradient. More... | |
const decision_vector & | get_lb () const |
Lower bounds getter. More... | |
const decision_vector & | get_ub () const |
Upper bounds getter. More... | |
void | set_bounds (const decision_vector &, const decision_vector &) |
Bounds setter from pagmo::decision_vector. More... | |
template<class Iterator1 , class Iterator2 > | |
void | set_bounds (Iterator1 start1, Iterator1 end1, Iterator2 start2, Iterator2 end2) |
Bounds setter from iterators. More... | |
template<std::size_t N> | |
void | set_bounds (const double(&v1)[N], const double(&v2)[N]) |
Bounds setter from raw arrays. More... | |
void | set_bounds (const double &, const double &) |
Set bounds to specified values. More... | |
void | set_bounds (int, const double &, const double &) |
Set bounds to specified values. More... | |
void | set_lb (const decision_vector &) |
Set lower bounds from pagmo::decision_vector. More... | |
void | set_lb (int, const double &) |
Set specific lower bound to value. More... | |
void | set_lb (const double &) |
Set all lower bounds to value. More... | |
template<class Iterator > | |
void | set_lb (Iterator start, Iterator end) |
Lower bounds setter from iterators. More... | |
template<std::size_t N> | |
void | set_lb (const double(&v)[N]) |
Lower bounds setter from raw array. More... | |
void | set_ub (const decision_vector &) |
Set upper bounds from pagmo::decision_vector. More... | |
void | set_ub (int, const double &) |
Set specific upper bound to value. More... | |
void | set_ub (const double &) |
Set all upper bounds to value. More... | |
template<class Iterator > | |
void | set_ub (Iterator start, Iterator end) |
Upper bounds setter from iterators. More... | |
template<std::size_t N> | |
void | set_ub (const double(&v)[N]) |
Upper bounds setter from raw array. More... | |
unsigned int | get_fevals () const |
Return number of function evaluations. More... | |
unsigned int | get_cevals () const |
Return number of constraints function evaluations. More... | |
size_type | get_dimension () const |
Return global dimension. More... | |
size_type | get_i_dimension () const |
Return integer dimension. More... | |
f_size_type | get_f_dimension () const |
Return fitness dimension. More... | |
c_size_type | get_c_dimension () const |
Return global constraints dimension. More... | |
c_size_type | get_ic_dimension () const |
Return inequality constraints dimension. More... | |
const std::vector< double > & | get_c_tol () const |
Return constraints tolerance. More... | |
double | get_diameter () const |
Get the diameter of the problem. More... | |
constraint_vector | compute_constraints (const decision_vector &) const |
Compute constraints and return constraint vector. More... | |
void | compute_constraints (constraint_vector &, const decision_vector &) const |
Compute constraints and write them into contraint vector. More... | |
bool | compare_constraints (const constraint_vector &, const constraint_vector &) const |
Compare constraint vectors. More... | |
bool | test_constraint (const constraint_vector &, const c_size_type &) const |
Test i-th constraint of c (using tolerance information). More... | |
bool | feasibility_x (const decision_vector &) const |
Test feasibility of decision vector. More... | |
bool | feasibility_c (const constraint_vector &) const |
Test feasibility of constraint vector. More... | |
fitness_vector | objfun (const decision_vector &) const |
Return fitness of pagmo::decision_vector. More... | |
void | objfun (fitness_vector &, const decision_vector &) const |
Write fitness of pagmo::decision_vector into pagmo::fitness_vector. More... | |
bool | compare_fitness (const fitness_vector &, const fitness_vector &) const |
Compare fitness vectors. More... | |
void | reset_caches () const |
Reset internal caches. More... | |
const std::vector< constraint_vector > & | get_best_c (void) const |
Get the best known constraint vector. More... | |
const std::vector< decision_vector > & | get_best_x (void) const |
Get the best known decision vector. More... | |
const std::vector< fitness_vector > & | get_best_f (void) const |
Get the best known fitness vector. More... | |
void | set_best_x (const std::vector< decision_vector > &) |
Sets the best known decision vectors. More... | |
Protected Member Functions | |
std::string | human_readable_extra () const |
Extra human readable info for the problem. More... | |
void | objfun_impl (fitness_vector &, const decision_vector &) const |
Protected Member Functions inherited from pagmo::problem::base_meta | |
bool | compare_fitness_impl (const fitness_vector &f1, const fitness_vector &f2) const |
Implementation of fitness vectors comparison. More... | |
bool | compare_constraints_impl (const constraint_vector &c1, const constraint_vector &c2) const |
Implementation of constraint vector comparison. More... | |
bool | compare_fc_impl (const fitness_vector &f1, const constraint_vector &c1, const fitness_vector &f2, const constraint_vector &c2) const |
Implementation of simultaneous fitness-constraint comparison. More... | |
Protected Member Functions inherited from pagmo::problem::base | |
virtual bool | equality_operator_extra (const base &) const |
Extra requirements for equality. More... | |
void | estimate_sparsity (const decision_vector &, int &lenG, std::vector< int > &iGfun, std::vector< int > &jGvar) const |
Heuristics to estimate the sparsity pattern of the problem. More... | |
void | estimate_sparsity (int &lenG, std::vector< int > &iGfun, std::vector< int > &jGvar) const |
Heuristics to estimate the sparsity pattern of the problem. More... | |
virtual void | compute_constraints_impl (constraint_vector &, const decision_vector &) const |
Implementation of constraint computation. More... | |
Friends | |
class | boost::serialization::access |
Additional Inherited Members | |
Static Public Attributes inherited from pagmo::problem::base | |
static const std::size_t | cache_capacity = 5 |
Capacity of the internal caches. | |
Protected Attributes inherited from pagmo::problem::base_meta | |
base_ptr | m_original_problem |
Smart pointer to the original problem instance. | |
Constrainted to Multi-Objective meta-problem.
Implements a meta-problem class that wraps some other constrained problems, resulting in multi-objective problem.
Three implementations of the constrained to multi-objective are available. For a problem with m constraints, m+nobj objective functions, the first objectives functions are the original objective functions. The first implementation is the constrained to multi-objective defined by Coello Coello. The objectives defined from constraints includes number of violated constraints and objective functions. The second implementation is the COMOGA multi-objective problem: a nobj+1 problem with the last objective the sum of the violations of the constraints. The third implementation is the same as the second one but splitting the sum of violations between equality and inequality constraints, resulting in a total of nobj+2 objectives problem.
Note: This constraints handling technique can only be used for MINIMIZATION problems.
Mechanism used to deal with constraints in the objectives.
Definition of three types of constrained to multi-objective. OBJ_CSTRS is the approach suggest by Coello: the single objective constrained problem is transformed into a multiobjective unconstrained problem with m+1 objectives functions (where m is the number of constraints) OBJ_CSTRSVIO: the single objective constrained problem is transformed into a nobj+1 objectives unconstrained problem with the original fitness functions as first objectives and the aggregation of the constraints violation as last objective OBJ_EQVIO_INEQVIO: the single objective constrained problem is transformed into a nobj+2 objectives unconstrained problem with the original fitness functions as first objectives, the aggregation of the inequality constraints violations as second last objective and the sum of violation of the equality constraints violations as last objective.
pagmo::problem::con2mo::con2mo | ( | const base & | problem = cec2006(4) , |
const method_type | method = OBJ_CSTRS |
||
) |
Constructor using initial constrained problem
[in] | problem | base::problem to be modified to use a constrained to multi-objective handling technique. |
[in] | method | method_type to be modified to use a single constrained to multi-objective approach defined with OBJ_CSTRS, OBJ_CSTRSVIO or OBJ_EQVIO_INEQVIO |
Definition at line 79 of file con2mo.cpp.
|
virtual |
Get problem's name.
Default implementation will return the problem's mangled C++ name.
Reimplemented from pagmo::problem::base.
Definition at line 220 of file con2mo.cpp.
|
protectedvirtual |
Extra human readable info for the problem.
Will return a formatted string containing the type of constraint handling
Reimplemented from pagmo::problem::base.
Definition at line 197 of file con2mo.cpp.
|
protectedvirtual |
Implementation of the objective functions. (Wraps over the original implementation)
Implements pagmo::problem::base.
Definition at line 99 of file con2mo.cpp.