多目的最適化 (NSGA-II)

In [2]:
# -*- coding: utf-8 -*-
import array
import random
import json

import numpy as np
# import matplotlib
# matplotlib.use('Agg')
import matplotlib.pyplot as plt

from math import sqrt

from deap import algorithms
from deap import base
from deap import benchmarks
from deap.benchmarks.tools import diversity, convergence, hypervolume
from deap import creator
from deap import tools

#目的関数2つをどちらも最小化する設定
creator.create("FitnessMin", base.Fitness, weights=(-1.0, -1.0))
creator.create("Individual", array.array, typecode='d', fitness=creator.FitnessMin)

toolbox = base.Toolbox()

#遺伝子が取り得る値の範囲を指定(遺伝子は0.0~1.0の間の連続値をとる)
BOUND_LOW, BOUND_UP = 0.0, 1.0

#1つの個体内の遺伝子の数を指定している(遺伝子数30個)
NDIM = 30

#遺伝子生成の関数(各遺伝子ごとに取り得る範囲を指定できる)
def uniform(low, up, size=None):
    try:
        return [random.uniform(a, b) for a, b in zip(low, up)]
    except TypeError:
        return [random.uniform(a, b) for a, b in zip([low] * size, [up] * size)]

toolbox.register("attr_float", uniform, BOUND_LOW, BOUND_UP, NDIM)
toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.attr_float)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

#適応度を評価する目的関数の指定
toolbox.register("evaluate", benchmarks.zdt1)

toolbox.register("mate", tools.cxSimulatedBinaryBounded, low=BOUND_LOW, up=BOUND_UP, eta=20.0)
toolbox.register("mutate", tools.mutPolynomialBounded, low=BOUND_LOW, up=BOUND_UP, eta=20.0, indpb=1.0/NDIM)

#選択アルゴリズムにNSGA-Ⅱを使った選択関数tools.selNSGA2を指定
toolbox.register("select", tools.selNSGA2)

def main(seed=None):
    random.seed(seed)
    #世代ループの回数
    NGEN = 250
    
    #世代内の個体数
    MU = 100
    
    #交叉率
    CXPB = 0.9

    #世代ループ中のログに何を出力するかの設定    
    stats = tools.Statistics(lambda ind: ind.fitness.values)
    
    #世代内の個体の適応度の最小値
    stats.register("min", np.min, axis=0)
    
    #世代内の個体の適応度の最大値
    stats.register("max", np.max, axis=0)
    
    logbook = tools.Logbook()
    logbook.header = "gen", "evals", "min", "max"
    
    pop = toolbox.population(n=MU)
    pop_ini = pop[:]
    
    invalid_ind = [ind for ind in pop if not ind.fitness.valid]
    fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)
    for ind, fit in zip(invalid_ind, fitnesses):
        ind.fitness.values = fit

    pop = toolbox.select(pop, len(pop))
    
    #適応度のminとmaxを算出する記述
    record = stats.compile(pop)
    logbook.record(gen=0, evals=len(invalid_ind), **record)
    print(logbook.stream)

    for gen in range(1, NGEN):

        offspring = tools.selTournamentDCD(pop, len(pop))
        offspring = [toolbox.clone(ind) for ind in offspring]
        
        #交叉と突然変異
        for ind1, ind2 in zip(offspring[::2], offspring[1::2]):
            if random.random() <= CXPB:
                toolbox.mate(ind1, ind2)
            
            toolbox.mutate(ind1)
            toolbox.mutate(ind2)
            del ind1.fitness.values, ind2.fitness.values
        
        invalid_ind = [ind for ind in offspring if not ind.fitness.valid]
        fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)
        for ind, fit in zip(invalid_ind, fitnesses):
            ind.fitness.values = fit

        pop = toolbox.select(pop + offspring, MU)
        record = stats.compile(pop)
        logbook.record(gen=gen, evals=len(invalid_ind), **record)
        print(logbook.stream)

    #最終世代のハイパーボリュームを出力
    #個体内の適応度は2こあるので、適応度空間は2次元になり、ハイパーボリュームは所謂面積になります。
    print("Final population hypervolume is %f" % hypervolume(pop, [11.0, 11.0]))

    return pop, pop_ini, logbook
        
In [3]:
if __name__ == "__main__":
    pop, pop_ini, stats = main(64)

    fitnesses_ini = np.array([list(pop_ini[i].fitness.values) for i in range(len(pop_ini))])
    fitnesses = np.array([list(pop[i].fitness.values) for i in range(len(pop))])

    # plt.plot(fitnesses_ini[:,0], fitnesses_ini[:,1], "b.", label="Initial")
    # plt.plot(fitnesses[:,0], fitnesses[:,1], "r.", label="Optimized" )
    # plt.legend(loc="upper right")
    # plt.title("fitnesses")
    # plt.xlabel("f1")
    # plt.ylabel("f2")
    # plt.grid(True)
    # plt.savefig("fitnesses.png", dpi=300)
gen	evals	min                    	max                    
0  	100  	[0.00776997 2.62064288]	[0.99151989 5.4725374 ]
1  	100  	[0.00776997 2.62064288]	[0.9747426  5.78429803]
2  	100  	[0.0066606  2.62064288]	[0.98169821 5.71095328]
3  	100  	[0.00453496 2.30171896]	[0.98169821 5.44634658]
4  	100  	[1.86879579e-03 2.30171896e+00]	[0.90650838 5.21355838]
5  	100  	[1.23896591e-03 2.10149660e+00]	[0.90660299 5.21355838]
6  	100  	[8.86062841e-04 1.92992834e+00]	[0.90517986 4.97438952]
7  	100  	[6.73784153e-04 1.92920779e+00]	[0.90517986 4.5247554 ]
8  	100  	[6.73784153e-04 1.64930097e+00]	[0.90517986 4.23140595]
9  	100  	[6.73784153e-04 1.58967349e+00]	[0.88858703 3.97908873]
10 	100  	[6.52539372e-05 1.53436394e+00]	[0.84033775 3.77519649]
11 	100  	[6.52539372e-05 1.52616522e+00]	[0.84033775 3.71077393]
12 	100  	[6.52539372e-05 1.16352217e+00]	[0.91270576 3.64949076]
13 	100  	[5.49007925e-06 1.16352217e+00]	[0.91037379 3.35606278]
14 	100  	[5.49007925e-06 1.01544024e+00]	[0.93984216 3.38364711]
15 	100  	[5.49007925e-06 9.01006701e-01]	[0.91037379 3.38271187]
16 	100  	[5.49007925e-06 8.62506727e-01]	[0.91037379 3.22193461]
17 	100  	[5.49007925e-06 8.31159724e-01]	[0.83466572 2.95700895]
18 	100  	[5.49007925e-06 6.92196479e-01]	[0.83466572 2.86685585]
19 	100  	[5.49007925e-06 6.92196479e-01]	[0.83466572 2.41105087]
20 	100  	[5.49007925e-06 6.92196479e-01]	[0.86495411 2.27852442]
21 	100  	[5.49007925e-06 6.23833876e-01]	[0.86495411 2.13695006]
22 	100  	[5.49007925e-06 6.23833876e-01]	[0.84114259 2.08403167]
23 	100  	[5.49007925e-06 6.23833876e-01]	[0.85113207 2.02548506]
24 	100  	[5.49007925e-06 5.65299881e-01]	[0.87153919 1.9722724 ]
25 	100  	[5.49007925e-06 5.43230907e-01]	[0.87153919 1.86674287]
26 	100  	[5.49007925e-06 4.83575472e-01]	[0.87153919 1.85957421]
27 	100  	[5.49007925e-06 4.65802237e-01]	[0.87693219 1.81732597]
28 	100  	[5.49007925e-06 4.65802237e-01]	[0.87153919 1.79293054]
29 	100  	[5.49007925e-06 4.60183287e-01]	[0.87153919 1.79293054]
30 	100  	[5.49007925e-06 3.91547269e-01]	[0.87092442 1.77320666]
31 	100  	[3.86467187e-07 3.91547269e-01]	[0.87092442 1.76308468]
32 	100  	[3.86467187e-07 3.89684899e-01]	[0.87092442 1.68969462]
33 	100  	[3.86467187e-07 3.86910794e-01]	[0.87092442 1.60200492]
34 	100  	[3.86467187e-07 3.47269232e-01]	[0.88027785 1.55143541]
35 	100  	[3.86467187e-07 3.30972656e-01]	[0.97236767 1.51589327]
36 	100  	[3.86467187e-07 3.06805531e-01]	[0.98906681 1.50727694]
37 	100  	[3.86467187e-07 2.82487309e-01]	[0.98906681 1.49026367]
38 	100  	[3.86467187e-07 2.82487309e-01]	[0.96867735 1.49026367]
39 	100  	[3.86467187e-07 2.82487309e-01]	[0.96867735 1.49026367]
40 	100  	[3.86467187e-07 2.16984139e-01]	[0.97934339 1.47259789]
41 	100  	[3.86467187e-07 2.16984139e-01]	[0.97934339 1.44163317]
42 	100  	[3.86467187e-07 1.91401728e-01]	[0.98944748 1.36424421]
43 	100  	[3.86467187e-07 1.90808722e-01]	[0.98944748 1.36424421]
44 	100  	[3.86467187e-07 1.87666522e-01]	[0.98944748 1.35972157]
45 	100  	[3.86467187e-07 1.76590011e-01]	[0.98944748 1.34648007]
46 	100  	[3.86467187e-07 1.69194842e-01]	[0.99378593 1.34648007]
47 	100  	[3.86467187e-07 1.68107627e-01]	[0.99413809 1.34473855]
48 	100  	[3.86467187e-07 1.68107627e-01]	[0.99413809 1.34473855]
49 	100  	[3.86467187e-07 1.48227037e-01]	[0.99440927 1.30547813]
50 	100  	[3.86467187e-07 1.31753747e-01]	[0.99219624 1.29046675]
51 	100  	[3.86467187e-07 1.28480176e-01]	[0.98065673 1.26177267]
52 	100  	[3.86467187e-07 1.25231139e-01]	[0.97884505 1.26177267]
53 	100  	[3.86467187e-07 1.16198729e-01]	[0.978463   1.26177267]
54 	100  	[3.86467187e-07 1.16198729e-01]	[0.96437598 1.26177267]
55 	100  	[2.75721288e-08 1.14917531e-01]	[0.96437598 1.28130039]
56 	100  	[2.75721288e-08 1.14917531e-01]	[0.96437598 1.28130039]
57 	100  	[2.75721288e-08 1.13581655e-01]	[0.96437598 1.23078307]
58 	100  	[2.75721288e-08 1.03279006e-01]	[0.96437598 1.1993321 ]
59 	100  	[2.75721288e-08 9.06663046e-02]	[0.96437598 1.19455097]
60 	100  	[2.75721288e-08 9.06663046e-02]	[0.96437598 1.18300777]
61 	100  	[2.75721288e-08 8.83564916e-02]	[0.96437598 1.16365439]
62 	100  	[2.75721288e-08 7.66924088e-02]	[0.96608947 1.15656912]
63 	100  	[2.75721288e-08 7.66924088e-02]	[0.96608947 1.15656912]
64 	100  	[2.75721288e-08 7.00893642e-02]	[0.97708404 1.13649825]
65 	100  	[2.75721288e-08 6.62666663e-02]	[0.99737417 1.1451109 ]
66 	100  	[2.75721288e-08 5.39383238e-02]	[0.99737417 1.10782019]
67 	100  	[2.75721288e-08 5.20781739e-02]	[0.99741504 1.10772763]
68 	100  	[2.75721288e-08 4.71824381e-02]	[0.99741504 1.10772763]
69 	100  	[2.75721288e-08 4.71824381e-02]	[0.99741504 1.10772763]
70 	100  	[2.75721288e-08 4.71824381e-02]	[0.99741504 1.09784342]
71 	100  	[2.75721288e-08 4.14401895e-02]	[0.99200416 1.09784342]
72 	100  	[2.75721288e-08 4.10908876e-02]	[0.99200416 1.09784342]
73 	100  	[2.75721288e-08 4.10908876e-02]	[0.99200416 1.09784342]
74 	100  	[2.75721288e-08 4.10908876e-02]	[0.99200416 1.09784342]
75 	100  	[2.75721288e-08 4.05585127e-02]	[0.99200416 1.09784342]
76 	100  	[2.75721288e-08 3.56211735e-02]	[0.99200416 1.09784342]
77 	100  	[2.75721288e-08 3.56211735e-02]	[0.99200416 1.09625828]
78 	100  	[2.75721288e-08 3.54594836e-02]	[0.99200416 1.08292693]
79 	100  	[2.75721288e-08 3.30501757e-02]	[0.99200416 1.08292693]
80 	100  	[2.75721288e-08 3.12803911e-02]	[0.99200416 1.08292693]
81 	100  	[2.75721288e-08 3.12803911e-02]	[0.99200416 1.08292693]
82 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.08141216]
83 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.08141216]
84 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.08141216]
85 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.08141216]
86 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.06894269]
87 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.06894269]
88 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.06894269]
89 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.06894269]
90 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.06894269]
91 	100  	[2.75721288e-08 2.40319658e-02]	[0.99200416 1.05930462]
92 	100  	[2.75721288e-08 2.29164676e-02]	[0.99200416 1.05861278]
93 	100  	[2.75721288e-08 2.23173242e-02]	[0.99195789 1.054934  ]
94 	100  	[2.75721288e-08 2.23173242e-02]	[0.99195789 1.054934  ]
95 	100  	[2.75721288e-08 2.23173242e-02]	[0.99195789 1.054934  ]
96 	100  	[2.75721288e-08 1.97788559e-02]	[0.99195789 1.05438103]
97 	100  	[2.75721288e-08 1.94199406e-02]	[0.99195789 1.05438103]
98 	100  	[2.75721288e-08 1.94199406e-02]	[0.99195789 1.05438103]
99 	100  	[2.75721288e-08 1.87035176e-02]	[0.99195789 1.05070555]
100	100  	[2.75721288e-08 1.79526614e-02]	[0.99195789 1.04041405]
101	100  	[2.75721288e-08 1.79526614e-02]	[0.99195789 1.04041405]
102	100  	[2.75721288e-08 1.37191101e-02]	[0.99716381 1.04041405]
103	100  	[2.75721288e-08 1.37191101e-02]	[0.99716381 1.04041405]
104	100  	[2.75721288e-08 1.37191101e-02]	[0.99716381 1.04041405]
105	100  	[2.75721288e-08 1.37191101e-02]	[0.99716381 1.04034714]
106	100  	[2.75721288e-08 1.37191101e-02]	[0.99716381 1.04034714]
107	100  	[2.75721288e-08 1.13803211e-02]	[0.99716381 1.04034714]
108	100  	[2.75721288e-08 1.13803211e-02]	[0.99716381 1.03712085]
109	100  	[2.75721288e-08 1.13803211e-02]	[0.99716381 1.03712085]
110	100  	[2.75721288e-08 1.13529007e-02]	[0.99716381 1.03712085]
111	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.03712085]
112	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.03712085]
113	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.02854974]
114	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.02854974]
115	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.02693505]
116	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.0266798 ]
117	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.0266798 ]
118	100  	[2.75721288e-08 1.05540335e-02]	[0.99716381 1.0266798 ]
119	100  	[2.75721288e-08 1.03358146e-02]	[0.99823482 1.02465151]
120	100  	[2.75721288e-08 1.03358146e-02]	[0.99823482 1.02465151]
121	100  	[2.75721288e-08 1.03358146e-02]	[0.99823482 1.01771077]
122	100  	[2.75721288e-08 1.03358146e-02]	[0.99823482 1.01771077]
123	100  	[2.75721288e-08 1.03358146e-02]	[0.99823482 1.01771077]
124	100  	[2.75721288e-08 1.03242772e-02]	[0.99823482 1.01771077]
125	100  	[2.75721288e-08 1.03242772e-02]	[0.99823482 1.01432629]
126	100  	[2.75721288e-08 8.89423852e-03]	[0.99792932 1.01432629]
127	100  	[2.75721288e-08 8.89423852e-03]	[0.99792932 1.01266269]
128	100  	[2.75721288e-08 8.89423852e-03]	[0.99792932 1.01266269]
129	100  	[2.75721288e-08 8.42297163e-03]	[0.99792932 1.01266269]
130	100  	[2.75721288e-08 8.42297163e-03]	[0.99792932 1.01266269]
131	100  	[2.75721288e-08 8.42297163e-03]	[0.99792932 1.01266269]
132	100  	[2.75721288e-08 8.42297163e-03]	[0.99792932 1.01266269]
133	100  	[2.75721288e-08 7.52639232e-03]	[0.99792932 1.01199636]
134	100  	[2.75721288e-08 7.52639232e-03]	[0.99792932 1.01199636]
135	100  	[2.75721288e-08 7.52639232e-03]	[0.99792932 1.01199636]
136	100  	[2.75721288e-08 7.52639232e-03]	[0.99792932 1.01199636]
137	100  	[2.75721288e-08 7.10123225e-03]	[0.99792932 1.01177784]
138	100  	[2.75721288e-08 7.10123225e-03]	[0.99792932 1.01129551]
139	100  	[2.75721288e-08 5.95957360e-03]	[0.99792932 1.01129551]
140	100  	[2.75721288e-08 5.63724007e-03]	[0.99932113 1.01129214]
141	100  	[2.75721288e-08 5.63724007e-03]	[0.99932113 1.01129214]
142	100  	[2.75721288e-08 5.63724007e-03]	[0.99932113 1.01129214]
143	100  	[2.75721288e-08 5.63724007e-03]	[0.99932113 1.01129214]
144	100  	[2.75721288e-08 5.62391650e-03]	[0.99932113 1.01129214]
145	100  	[2.75721288e-08 5.62391650e-03]	[0.99932113 1.01129214]
146	100  	[2.75721288e-08 5.62391650e-03]	[0.99932113 1.01129214]
147	100  	[2.75721288e-08 5.62391650e-03]	[0.99932113 1.01129214]
148	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.01129214]
149	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.00983606]
150	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.00983606]
151	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.00983606]
152	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.00983606]
153	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.00983606]
154	100  	[2.75721288e-08 5.48194981e-03]	[0.99932113 1.00983606]
155	100  	[2.75721288e-08 5.29071652e-03]	[0.99929601 1.00983606]
156	100  	[2.75721288e-08 5.29071652e-03]	[0.99929601 1.0080807 ]
157	100  	[2.75721288e-08 4.96223053e-03]	[0.99929601 1.0080807 ]
158	100  	[2.75721288e-08 4.08290835e-03]	[0.99931093 1.0080807 ]
159	100  	[2.75721288e-08 4.08290835e-03]	[0.99931093 1.0080807 ]
160	100  	[2.75721288e-08 3.69582949e-03]	[0.99931093 1.00718486]
161	100  	[2.75721288e-08 3.69582949e-03]	[0.99931093 1.00573259]
162	100  	[2.75721288e-08 3.69582949e-03]	[0.99931093 1.00573259]
163	100  	[2.75721288e-08 3.53459084e-03]	[0.99931093 1.00573259]
164	100  	[2.75721288e-08 3.53459084e-03]	[0.99931093 1.00573259]
165	100  	[2.75721288e-08 3.53459084e-03]	[0.99931093 1.00573259]
166	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.0052621 ]
167	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.0052621 ]
168	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.0052621 ]
169	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.0052621 ]
170	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.0052621 ]
171	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.00518432]
172	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.00517572]
173	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.00517572]
174	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.00517572]
175	100  	[2.75721288e-08 3.13237650e-03]	[0.99931093 1.00517572]
176	100  	[2.75721288e-08 2.89482605e-03]	[0.99931093 1.00500253]
177	100  	[2.75721288e-08 2.47674885e-03]	[0.99931093 1.00499449]
178	100  	[2.75721288e-08 2.47674885e-03]	[0.99931093 1.00499449]
179	100  	[2.75721288e-08 2.47674885e-03]	[0.99931093 1.00499449]
180	100  	[2.75721288e-08 2.47674885e-03]	[0.99931093 1.00436338]
181	100  	[2.75721288e-08 2.47364488e-03]	[0.99931093 1.00364383]
182	100  	[2.75721288e-08 2.47364488e-03]	[0.99931093 1.00364383]
183	100  	[2.75721288e-08 2.43018650e-03]	[0.99931093 1.00364383]
184	100  	[2.75721288e-08 2.43018650e-03]	[0.99931093 1.00364383]
185	100  	[2.75721288e-08 2.43018650e-03]	[0.99931093 1.00364383]
186	100  	[2.75721288e-08 2.43018650e-03]	[0.99931093 1.00352374]
187	100  	[2.75721288e-08 2.43018650e-03]	[0.99931093 1.00350382]
188	100  	[2.75721288e-08 2.42765929e-03]	[0.99931093 1.00350382]
189	100  	[2.75721288e-08 1.93621438e-03]	[0.99931093 1.00350382]
190	100  	[2.75721288e-08 1.84102929e-03]	[0.99931093 1.00350382]
191	100  	[2.75721288e-08 1.59663263e-03]	[0.99931093 1.00293946]
192	100  	[2.75721288e-08 1.59663263e-03]	[0.99931093 1.00293946]
193	100  	[2.75721288e-08 1.59663263e-03]	[0.99931093 1.00292705]
194	100  	[2.75721288e-08 1.59663263e-03]	[0.99931093 1.00233749]
195	100  	[2.75721288e-08 1.59663263e-03]	[0.99931093 1.00233749]
196	100  	[2.75721288e-08 1.59663263e-03]	[0.99931093 1.00233749]
197	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.00233749]
198	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.00233749]
199	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.00233535]
200	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.0021634 ]
201	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.0021634 ]
202	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.0019511 ]
203	100  	[2.75721288e-08 1.57928158e-03]	[0.99931093 1.0019511 ]
204	100  	[2.03932935e-08 1.57928158e-03]	[0.99931093 1.00254293]
205	100  	[2.03932935e-08 1.57928158e-03]	[0.99931093 1.00254293]
206	100  	[2.03932935e-08 1.57928158e-03]	[0.99931093 1.00254293]
207	100  	[2.03932935e-08 1.52683110e-03]	[0.99931093 1.00254293]
208	100  	[2.03932935e-08 1.52683110e-03]	[0.99931093 1.00237734]
209	100  	[2.03932935e-08 1.31079898e-03]	[0.99931093 1.00237734]
210	100  	[2.03932935e-08 1.24204530e-03]	[0.99931093 1.00236881]
211	100  	[2.03932935e-08 1.23044080e-03]	[0.99931093 1.00216839]
212	100  	[2.03932935e-08 1.23044080e-03]	[0.99931093 1.00216839]
213	100  	[2.03932935e-08 1.23044080e-03]	[0.99931093 1.00216839]
214	100  	[2.03932935e-08 1.23044080e-03]	[0.99931093 1.00205903]
215	100  	[2.03932935e-08 1.16546834e-03]	[0.99969878 1.00205903]
216	100  	[2.03932935e-08 1.16546834e-03]	[0.99969878 1.00205903]
217	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00205903]
218	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187112]
219	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187063]
220	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187063]
221	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187063]
222	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187063]
223	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187063]
224	100  	[2.03932935e-08 9.44135018e-04]	[0.99969878 1.00187063]
225	100  	[2.03932935e-08 9.43716093e-04]	[0.99969878 1.00186962]
226	100  	[2.03932935e-08 9.43716093e-04]	[0.99969878 1.00186962]
227	100  	[2.03932935e-08 9.43716093e-04]	[0.99969878 1.00186962]
228	100  	[2.03932935e-08 9.43716093e-04]	[0.99969878 1.00186704]
229	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.001729  ]
230	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.001729  ]
231	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.0017256 ]
232	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.00143428]
233	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.00143428]
234	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.00138913]
235	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.00138913]
236	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.00117979]
237	100  	[2.03932935e-08 7.88281952e-04]	[0.99978976 1.00117979]
238	100  	[2.03932935e-08 7.84320194e-04]	[0.99978976 1.00117979]
239	100  	[2.03932935e-08 7.72889218e-04]	[0.99978976 1.00117979]
240	100  	[2.03932935e-08 7.72889218e-04]	[0.99978976 1.00117979]
241	100  	[2.03932935e-08 7.54361263e-04]	[0.99978976 1.00117718]
242	100  	[2.03932935e-08 7.54361263e-04]	[0.99978976 1.00117718]
243	100  	[2.03932935e-08 7.54361263e-04]	[0.99978976 1.00117718]
244	100  	[2.03932935e-08 7.54361263e-04]	[0.99978976 1.00114239]
245	100  	[2.03932935e-08 7.46266976e-04]	[0.99978976 1.00114239]
246	100  	[2.03932935e-08 7.46266976e-04]	[0.99978976 1.00114239]
247	100  	[2.03932935e-08 7.46266976e-04]	[0.99978976 1.00114239]
248	100  	[2.03932935e-08 7.46266976e-04]	[0.99978976 1.00114239]
249	100  	[2.03932935e-08 7.46266976e-04]	[0.99978976 1.00114239]
Final population hypervolume is 120.652006

初期状態の描画

In [4]:
plt.plot(fitnesses_ini[:,0], fitnesses_ini[:,1], "b.", label="Initial")
Out[4]:
[<matplotlib.lines.Line2D at 0x7f9653071ba8>]

収束状態の描画

In [5]:
plt.plot(fitnesses[:,0], fitnesses[:,1], "r.", label="Optimized" )
Out[5]:
[<matplotlib.lines.Line2D at 0x7f9652ff3160>]

初期・収束状態の描画

In [6]:
plt.plot(fitnesses_ini[:,0], fitnesses_ini[:,1], "b.", label="Initial")
plt.plot(fitnesses[:,0], fitnesses[:,1], "r.", label="Optimized" )
Out[6]:
[<matplotlib.lines.Line2D at 0x7f9653009d30>]

凡例・ラベルを加えて描画

In [7]:
plt.plot(fitnesses_ini[:,0], fitnesses_ini[:,1], "b.", label="Initial")
plt.plot(fitnesses[:,0], fitnesses[:,1], "r.", label="Optimized" )
plt.legend(loc="upper right")
plt.title("fitnesses")
plt.xlabel("f1")
plt.ylabel("f3")
plt.grid(True)