# DecompositionΒΆ

In this tutorial we will learn how to use the decompose meta-problems to solve a multi-objective problem. The decompose meta-problem transforms a multi-objective problem into a single-objective one having as fitness function a convex combination (defined by a weight vector) of the original objectives. Let us start creating a decomposed problem from a multi-objective one.

In [1]: from PyGMO import *
In [2]: orig_prob = problem.zdt(1,10)
In [3]: prob = problem.decompose(problem = orig_prob, weights = [0.5, 0.5])


In this way the 2 objectives of the original problem are equally weighted. If we don’t define the weight vector, then it is randomly generated.

We then proceed by solving the new decomposed problem using a single-objective optimization algorithm.

In [4] alg = algorithm.jde(50)
In [5] pop = population(prob, 200)
In [6] for i in xrange(5):
pop = alg.evolve(pop)
print "Generation ", i
print "Distance from Pareto Front (p-distance): " , orig_prob.p_distance(pop)
print "Original fitness: " , orig_prob.objfun(pop.champion.x)
print "Decomposed fitness: " , pop.champion.f


We see how the fitness of the new problem is equal to the average of the original 2 objectives

Out [7] Distance from Pareto Front (p-distance):  0.569852362819
Original fitness:  (0.376410003683959, 0.6055773596287406)
Decomposed fitness:  (0.4909936816563498,)

Generation  1
Distance from Pareto Front (p-distance):  0.0962829285609
Original fitness:  (0.25292383041734323, 0.528506927611418)
Decomposed fitness:  (0.39071537901438064,)

Generation  2
Distance from Pareto Front (p-distance):  0.0164014486696
Original fitness:  (0.25426237266331964, 0.499545293860021)
Decomposed fitness:  (0.3769038332616703,)

Generation  3
Distance from Pareto Front (p-distance):  0.00251788007034
Original fitness:  (0.24129082628054865, 0.5095238228445969)
Decomposed fitness:  (0.37540732456257275,)

Generation  4
Distance from Pareto Front (p-distance):  0.000420874501332
Original fitness:  (0.2500151198152518, 0.5000990342618756)
Decomposed fitness:  (0.3750570770385637,)

Generation  5
Distance from Pareto Front (p-distance):  7.23681824182e-05
Original fitness:  (0.24995048982014567, 0.5000683842135499)
Decomposed fitness:  (0.3750094370168478,)