Python Dynamic Link Library
#
In Quick Start section, we give a brief introduction on how to use EMOC in python language. Basically speaking, several fundamental classes are exported into python. So the users can utilize these classes to define their own problem and solve it with available algorithms in EMOC.
In this section, we will give the detailed definition of these exported classes to help users understand the python dynamic link library of EMOC.
Exported Classes
#
Problem
#
This class is basically the same as original class in C++ except some member variable names.
class Problem(int dec_num, int obj_num)
The parent class of all test problems in EMOC. The custom problem in python need to inherit form this class.
Parameter: |
dec_num: int, default=None The number of decision variables setting for the problem.
obj_num: int, default=None The number of objective functions setting for the problem.
|
Member variables: |
(public) dec_num: int The number of decision variables set by users. It is equal to the given dec_num.
(public) obj_num: int The number of objective functions set by users. It is equal to the given obj_num.
(public) lower_bound: std::vector<double> The lower bound of each decision variable. The size of this std::vector is dec_num.
(public) upper_bound: std::vector<double> The upper bound of each decision variable. The size of this std::vector is dec_num. |
Public Member Functions:
void CalObj(Individual* ind)
Calculate the objective function values.
This function is a pure virtual function which must be implemented in custom problem in python.
Parameter: |
ind: Individual*, default=None Pointer to the individual which need to calculate the objectives. |
Returns: |
void |
Individual
#
This class is basically the same as original class in C++ except some member variable names.
class Individual(int dec_num, int obj_num)
The class for each individual in the population.
Parameter: |
dec_num: int, default=None The number of decision variables.
obj_num: int, default=None The number of objectives.
|
Member variables: |
(public) dec: std::vector<double> Decision variables of this individual. The size of this std::vector is dec_num.
(public) obj: std::vector<double> Objectives of this individual. The size of this std::vector is obj_num. |
EMOCManager
#
class EMOCManager()
EMOCManager
is the manager class of EMOC which controls the execution of EMOC. Most original member variables in C++ definition are omitted. Because they are not needed in python.
Parameter: |
void |
Member variables: |
void |
Public Methods:
Start this optimization with current parameters.
Parameter: |
void |
Returns: |
void |
void SetTaskParameters(const EMOCParameters& para)
Set the parameters of this execution
Parameter: |
para: const EMOCParameters&, default=None Parameters of this run. |
Returns: |
void |
EMOCGeneralResult GetPythonResult()
Get the optimization results of this run.
Parameter: |
void |
Returns: |
result: EMOCGeneralResult Optimization results of this run. |
EMOCParameters
#
class EMOCParameters()
EMOCParameters
is a simple structure consists of basic parameter settings variables and two public interface for configuring custom problem and initial population
Parameter: |
void |
Member variables: |
(public) algorithm_name: string Algorithm name.
(public) problem_name: string Problem name.
(public) population_num: int The size of population.
(public) decision_num: int The number of decision variables.
(public) objective_num: int The number of objectives.
(public) max_evaluation: int The max evaluation times of this optimization.
(public) output_interval: int Save interval in generation. |
Public Methods:
void SetProblem(Problem* problem)
Set the custom problem.
Parameter: |
problem: Problem*, default=None Pointer to the custom problem. This can be an problem object in python. |
Returns: |
void |
void SetInitialPop(std::vector<std::vector<double>> initial_pop)
Set the custom initial population.
Parameter: |
initial_pop: std::vector<std::vector<double>>, default=None The custom initial population. It's basically a 2D array of double. Each row is the decision variables of an individual. |
Returns: |
void |
EMOCGeneralResult
#
class EMOCGeneralResult()
The class for the optimization results which can get by EMOCManager::GetResult()
.
Parameter: |
void |
Member variables: |
(public) igd: double IGD value of this optimization. This is only valid in multi-objective optimization problem.
(public) gd: double GD value of this optimization. This is only valid in multi-objective optimization problem.
(public) hv: double HV value of this optimization. This is only valid in multi-objective optimization problem.
(public) spacing: double Spacing value of this optimization. This is only valid in multi-objective optimization problem.
(public) igdplus: double IGD Plus value of this optimization. This is only valid in multi-objective optimization problem.
(public) gdplus: double GD Plus value of this optimization. This is only valid in multi-objective optimization problem.
(public) best_value: double Best found value. This is only valid in single-objective optimization problem.
(public) runtime: double The run time of this run.
(public) pop_num: int The size of the final population.
(public) pop_decs: 2D list Decision variables of final population.
(public) pop_objs: 2D list Objectives of final population. |