fork download
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3.  
  4. def cal_pop_fitness(equation_inputs, pop):
  5. # Вычисление функции приспособленности (фитнесс-функции)
  6. # Изначальная функция к максимизации для каждого гена в популяции
  7. fitness = np.sum(pop*equation_inputs, axis=1)
  8. return fitness
  9.  
  10. def select_mating_pool(pop, fitness, num_parents):
  11. # Выбор лучших представителей популяции для дальнейшего скрещивания
  12. parents = np.empty((num_parents, pop.shape[1]))
  13. for parent_num in range(num_parents):
  14. max_fitness_idx = np.where(fitness == np.max(fitness))
  15. parents[parent_num, :] = pop[max_fitness_idx, :]
  16. fitness[max_fitness_idx] = -99999999999
  17. return parents
  18.  
  19. def crossover(parents, offspring_size):
  20. # Выполнениее кроссовера с заменой половины генов (в центре)
  21. offspring = np.empty(offspring_size)
  22. crossover_point = np.uint8(offspring_size[1]/2)
  23.  
  24. for k in range(offspring_size[0]):
  25. parent1_idx = k%parents.shape[0]
  26. parent2_idx = (k+1)%parents.shape[0]
  27. offspring[k, 0:crossover_point] = parents[parent1_idx, 0:crossover_point]
  28. offspring[k, crossover_point:] = parents[parent2_idx, crossover_point:]
  29. return offspring
  30.  
  31. def mutation(offspring_crossover):
  32. # Мутация случайного гена у каждого из детей
  33. for idx in range(offspring_crossover.shape[0]):
  34. random_value = np.random.uniform(-1, 1)
  35. rand_idx = np.random.randint(0, 2)
  36. offspring_crossover[idx, rand_idx] = offspring_crossover[idx, rand_idx] + random_value
  37. return offspring_crossover
  38.  
  39. """
  40. Цель данного алгоритма в скорейшей максимизации следующей функции:
  41. Y = w1x1+w2x2+w3x3+w4x4+w5x5+6wx6
  42. где (x1,x2,x3,x4,x5,x6)=(8,-2,5,5,4,-4.7)
  43. То есть требуется отталкиваясь от начальных случайных значений (w1,w2,w3,w4,w5,w6)
  44. Найти такие значения, чтобы результат функции Y был максимальным
  45. """
  46.  
  47. # Коэффициенты заданного уравнения
  48. equation_inputs = [8,-2,5,5,4,-4.7]
  49.  
  50. # Количество переменных
  51. num_weights = len(equation_inputs)
  52.  
  53. """
  54. Параметры генетического алгоритма:
  55. количество особей в популяции
  56. количество родительский особей
  57. """
  58. sol_per_pop = 8
  59. num_parents_mating = 4
  60.  
  61. pop_size = (sol_per_pop,num_weights)
  62.  
  63. new_population = np.random.uniform(low=-2.0, high=2.0, size=pop_size)
  64. print(new_population)
  65.  
  66. num_generations = 1000
  67. best_result = 0
  68. for generation in range(num_generations):
  69. print("Generation : ", generation)
  70. # Измерение функции приспособленности для каждой особи в популяции
  71. fitness = cal_pop_fitness(equation_inputs, new_population)
  72.  
  73. # Выбор наилучших особей для становления их родителями
  74. parents = select_mating_pool(new_population, fitness, num_parents_mating)
  75.  
  76. # Проведения кроссовера особей
  77. offspring_crossover = crossover(parents, offspring_size=(pop_size[0]-parents.shape[0], num_weights))
  78.  
  79. # Проведение мутации генов детей данного поколения
  80. offspring_mutation = mutation(offspring_crossover)
  81.  
  82. # Создание конечной популяции на данной итерации из выбранных родителей и их детей
  83. new_population[0:parents.shape[0], :] = parents
  84. new_population[parents.shape[0]:, :] = offspring_mutation
  85. # Лучший результат функции
  86. best_result = np.max(np.sum(new_population*equation_inputs, axis=1))
  87. print("Best result : ", best_result)
  88. # Получение конечного результата после последней итерации
  89. # Вычисление функции приспособленности для каждой особи на последней итерации
  90. fitness = cal_pop_fitness(equation_inputs, new_population)
  91. # Выбор особи с наилучшим показателем
  92. best_match_idx = np.where(fitness == np.max(fitness))
  93.  
  94. print("Best solution : ", new_population[best_match_idx, :])
  95. print("Best solution fitness : ", fitness[best_match_idx])
  96.  
Success #stdin #stdout 0.35s 27672KB
stdin
Standard input is empty
stdout
[[-0.57231126  1.83929251  1.47065527  1.89715678  1.22817642 -1.85310046]
 [ 0.44891426 -0.1925533  -1.1508666  -1.85582859 -0.4174814   1.82354754]
 [ 1.24560499 -1.06894792  0.2843557   1.29746335 -1.55236011  1.003624  ]
 [-1.13760621  1.18796834  0.63466603 -0.99418101  1.88224292 -1.98304632]
 [ 1.14400949  0.00448735 -0.16916063 -0.2863337  -0.94871897 -0.45053502]
 [-1.35477601 -0.93648041  1.85746349  0.75472876 -0.52970479  1.59702029]
 [ 1.98821345 -0.54872737  0.03308227  0.85699782 -1.49820013 -1.25786564]
 [ 0.4730343   1.32520118 -0.65831197  0.54359152  0.41992869 -0.4559159 ]]
Generation :  0
Best result :  30.851045326567064
Generation :  1
Best result :  37.565515562415996
Generation :  2
Best result :  37.565515562415996
Generation :  3
Best result :  37.841496735132665
Generation :  4
Best result :  37.841496735132665
Generation :  5
Best result :  42.08730610694576
Generation :  6
Best result :  42.08730610694576
Generation :  7
Best result :  46.286667106892466
Generation :  8
Best result :  46.70373003854519
Generation :  9
Best result :  46.70373003854519
Generation :  10
Best result :  50.56330798528349
Generation :  11
Best result :  55.24773399885122
Generation :  12
Best result :  56.37652121517981
Generation :  13
Best result :  56.37652121517981
Generation :  14
Best result :  63.67707596018417
Generation :  15
Best result :  64.14389762907378
Generation :  16
Best result :  64.80020376647576
Generation :  17
Best result :  65.71160344235429
Generation :  18
Best result :  66.39427064144212
Generation :  19
Best result :  66.39427064144212
Generation :  20
Best result :  66.8357724443123
Generation :  21
Best result :  67.57326686602728
Generation :  22
Best result :  70.29957431467481
Generation :  23
Best result :  71.7159719606124
Generation :  24
Best result :  74.4004019337532
Generation :  25
Best result :  78.34490651798185
Generation :  26
Best result :  80.90863026111651
Generation :  27
Best result :  87.65937129258982
Generation :  28
Best result :  87.65937129258982
Generation :  29
Best result :  89.20845887069062
Generation :  30
Best result :  90.8434430002341
Generation :  31
Best result :  91.17365362100442
Generation :  32
Best result :  91.3842956501757
Generation :  33
Best result :  96.05866191905862
Generation :  34
Best result :  96.80050130465428
Generation :  35
Best result :  97.66228673135849
Generation :  36
Best result :  99.06317611121726
Generation :  37
Best result :  100.79271134243389
Generation :  38
Best result :  101.71393434722175
Generation :  39
Best result :  102.70907528902866
Generation :  40
Best result :  104.28986538507799
Generation :  41
Best result :  110.97096487295367
Generation :  42
Best result :  110.97096487295367
Generation :  43
Best result :  110.97096487295367
Generation :  44
Best result :  118.07956999047407
Generation :  45
Best result :  118.07956999047407
Generation :  46
Best result :  123.27746122449257
Generation :  47
Best result :  123.27746122449257
Generation :  48
Best result :  123.27746122449257
Generation :  49
Best result :  124.64103418991486
Generation :  50
Best result :  126.14967824688345
Generation :  51
Best result :  131.85395269283413
Generation :  52
Best result :  131.85395269283413
Generation :  53
Best result :  131.9821307504712
Generation :  54
Best result :  137.5202718736464
Generation :  55
Best result :  137.5202718736464
Generation :  56
Best result :  138.317153412329
Generation :  57
Best result :  140.83159002733325
Generation :  58
Best result :  141.7459516032975
Generation :  59
Best result :  143.7083650744937
Generation :  60
Best result :  143.7083650744937
Generation :  61
Best result :  146.39999620888173
Generation :  62
Best result :  146.39999620888173
Generation :  63
Best result :  153.15830301885723
Generation :  64
Best result :  153.44731320436003
Generation :  65
Best result :  155.39682091557154
Generation :  66
Best result :  155.39682091557154
Generation :  67
Best result :  155.39682091557154
Generation :  68
Best result :  157.0633419952657
Generation :  69
Best result :  157.99683017683773
Generation :  70
Best result :  158.4146192848659
Generation :  71
Best result :  158.4146192848659
Generation :  72
Best result :  160.01620729763874
Generation :  73
Best result :  162.28859587501336
Generation :  74
Best result :  167.64828108015337
Generation :  75
Best result :  167.64828108015337
Generation :  76
Best result :  172.63686336198086
Generation :  77
Best result :  172.63686336198086
Generation :  78
Best result :  173.729411771172
Generation :  79
Best result :  174.86715380339348
Generation :  80
Best result :  181.853785626584
Generation :  81
Best result :  181.853785626584
Generation :  82
Best result :  183.78725294178201
Generation :  83
Best result :  185.87611326271363
Generation :  84
Best result :  187.69093472262432
Generation :  85
Best result :  195.35555679464358
Generation :  86
Best result :  196.98985566204217
Generation :  87
Best result :  198.5435888954246
Generation :  88
Best result :  204.91066932433435
Generation :  89
Best result :  207.44342864974763
Generation :  90
Best result :  208.36593996485738
Generation :  91
Best result :  208.36593996485738
Generation :  92
Best result :  215.5305772548248
Generation :  93
Best result :  216.10280665266123
Generation :  94
Best result :  222.20430397159902
Generation :  95
Best result :  222.20430397159902
Generation :  96
Best result :  222.20430397159902
Generation :  97
Best result :  223.7188330184837
Generation :  98
Best result :  229.23634502009
Generation :  99
Best result :  230.94546226794515
Generation :  100
Best result :  230.94546226794515
Generation :  101
Best result :  230.98792064357295
Generation :  102
Best result :  233.27170616112605
Generation :  103
Best result :  235.47780701277256
Generation :  104
Best result :  236.7882951394565
Generation :  105
Best result :  236.7882951394565
Generation :  106
Best result :  236.7882951394565
Generation :  107
Best result :  236.7882951394565
Generation :  108
Best result :  241.00167951806088
Generation :  109
Best result :  242.36536452859676
Generation :  110
Best result :  242.36536452859676
Generation :  111
Best result :  248.1962739217295
Generation :  112
Best result :  248.1962739217295
Generation :  113
Best result :  252.40301168113103
Generation :  114
Best result :  259.8305227311899
Generation :  115
Best result :  260.53657310208183
Generation :  116
Best result :  267.15909201319766
Generation :  117
Best result :  268.90944497896976
Generation :  118
Best result :  268.90944497896976
Generation :  119
Best result :  269.94183208141817
Generation :  120
Best result :  274.31962156614964
Generation :  121
Best result :  274.31962156614964
Generation :  122
Best result :  279.3493671089137
Generation :  123
Best result :  285.53436780478285
Generation :  124
Best result :  286.6997147475795
Generation :  125
Best result :  287.3760020827285
Generation :  126
Best result :  287.8436948640127
Generation :  127
Best result :  290.6537759597668
Generation :  128
Best result :  292.5912481040335
Generation :  129
Best result :  296.97872311493734
Generation :  130
Best result :  297.42112117184183
Generation :  131
Best result :  297.42112117184183
Generation :  132
Best result :  304.2219249723802
Generation :  133
Best result :  304.2219249723802
Generation :  134
Best result :  310.516405730383
Generation :  135
Best result :  310.516405730383
Generation :  136
Best result :  311.0752754721723
Generation :  137
Best result :  311.0752754721723
Generation :  138
Best result :  312.25216905075945
Generation :  139
Best result :  317.680110097685
Generation :  140
Best result :  318.4072950674081
Generation :  141
Best result :  324.7625519344691
Generation :  142
Best result :  324.7625519344691
Generation :  143
Best result :  325.093039874734
Generation :  144
Best result :  326.91032705937187
Generation :  145
Best result :  326.9736046595201
Generation :  146
Best result :  328.6333942085755
Generation :  147
Best result :  329.2473371516388
Generation :  148
Best result :  330.2075229980601
Generation :  149
Best result :  330.6946858443994
Generation :  150
Best result :  330.8819815077062
Generation :  151
Best result :  334.08974971001214
Generation :  152
Best result :  338.34822756078586
Generation :  153
Best result :  338.34822756078586
Generation :  154
Best result :  338.34822756078586
Generation :  155
Best result :  342.2647266427433
Generation :  156
Best result :  342.2647266427433
Generation :  157
Best result :  342.76448887748757
Generation :  158
Best result :  342.76448887748757
Generation :  159
Best result :  343.1642401805385
Generation :  160
Best result :  349.10109513000634
Generation :  161
Best result :  349.10109513000634
Generation :  162
Best result :  354.8782969915296
Generation :  163
Best result :  354.8782969915296
Generation :  164
Best result :  356.73894497647984
Generation :  165
Best result :  357.3703701005833
Generation :  166
Best result :  360.9124150830743
Generation :  167
Best result :  360.9124150830743
Generation :  168
Best result :  360.9124150830743
Generation :  169
Best result :  362.16876555511476
Generation :  170
Best result :  367.72612598868125
Generation :  171
Best result :  371.4285031080543
Generation :  172
Best result :  371.4285031080543
Generation :  173
Best result :  371.4285031080543
Generation :  174
Best result :  373.34810364145164
Generation :  175
Best result :  374.2303213837821
Generation :  176
Best result :  374.81312587780883
Generation :  177
Best result :  376.53587632276503
Generation :  178
Best result :  380.8353995594937
Generation :  179
Best result :  382.8073059330592
Generation :  180
Best result :  382.8073059330592
Generation :  181
Best result :  383.86666906659354
Generation :  182
Best result :  389.3280580657556
Generation :  183
Best result :  389.3280580657556
Generation :  184
Best result :  390.1685481125486
Generation :  185
Best result :  390.8761033977777
Generation :  186
Best result :  392.12945917655315
Generation :  187
Best result :  392.33623539193707
Generation :  188
Best result :  397.20022422628665
Generation :  189
Best result :  397.20022422628665
Generation :  190
Best result :  400.89762958153744
Generation :  191
Best result :  402.76634962698483
Generation :  192
Best result :  403.50090297720976
Generation :  193
Best result :  411.0529005479781
Generation :  194
Best result :  412.1638787282567
Generation :  195
Best result :  419.4499236715651
Generation :  196
Best result :  420.1193567437623
Generation :  197
Best result :  423.86975051606225
Generation :  198
Best result :  425.33641093831113
Generation :  199
Best result :  425.33641093831113
Generation :  200
Best result :  426.8888651629852
Generation :  201
Best result :  426.8888651629852
Generation :  202
Best result :  427.97281458926966
Generation :  203
Best result :  427.97281458926966
Generation :  204
Best result :  427.97281458926966
Generation :  205
Best result :  428.77781834353914
Generation :  206
Best result :  429.0843335312328
Generation :  207
Best result :  429.0843335312328
Generation :  208
Best result :  430.68230874842993
Generation :  209
Best result :  430.68230874842993
Generation :  210
Best result :  433.7763573589692
Generation :  211
Best result :  434.00405421491917
Generation :  212
Best result :  434.4654225710609
Generation :  213
Best result :  435.52960844337224
Generation :  214
Best result :  436.9935469467749
Generation :  215
Best result :  442.6329160846459
Generation :  216
Best result :  442.6329160846459
Generation :  217
Best result :  444.59858298133565
Generation :  218
Best result :  445.3562713804308
Generation :  219
Best result :  445.3562713804308
Generation :  220
Best result :  446.97843181521466
Generation :  221
Best result :  451.0213341707996
Generation :  222
Best result :  451.0213341707996
Generation :  223
Best result :  453.1110296105469
Generation :  224
Best result :  454.2722703661651
Generation :  225
Best result :  454.2722703661651
Generation :  226
Best result :  460.9663503785224
Generation :  227
Best result :  460.9663503785224
Generation :  228
Best result :  461.92149123203694
Generation :  229
Best result :  466.66915482752995
Generation :  230
Best result :  472.2079187242048
Generation :  231
Best result :  476.3727659445075
Generation :  232
Best result :  476.81243298907566
Generation :  233
Best result :  476.81243298907566
Generation :  234
Best result :  480.9539261247978
Generation :  235
Best result :  482.3074866474842
Generation :  236
Best result :  487.6221970026428
Generation :  237
Best result :  487.8795415500356
Generation :  238
Best result :  488.71605892306843
Generation :  239
Best result :  488.71605892306843
Generation :  240
Best result :  493.3396459952885
Generation :  241
Best result :  493.3396459952885
Generation :  242
Best result :  494.34594610597037
Generation :  243
Best result :  501.6990565345776
Generation :  244
Best result :  503.54251300224826
Generation :  245
Best result :  503.54251300224826
Generation :  246
Best result :  508.17325624637044
Generation :  247
Best result :  508.17325624637044
Generation :  248
Best result :  508.17325624637044
Generation :  249
Best result :  515.2980264024335
Generation :  250
Best result :  515.2980264024335
Generation :  251
Best result :  515.2980264024335
Generation :  252
Best result :  521.8094903390098
Generation :  253
Best result :  521.8094903390098
Generation :  254
Best result :  526.0819014116584
Generation :  255
Best result :  526.0819014116584
Generation :  256
Best result :  529.2026937001676
Generation :  257
Best result :  529.2026937001676
Generation :  258
Best result :  534.4917565256702
Generation :  259
Best result :  534.4917565256702
Generation :  260
Best result :  534.4917565256702
Generation :  261
Best result :  539.2558905010441
Generation :  262
Best result :  539.3470916810686
Generation :  263
Best result :  540.1486695670553
Generation :  264
Best result :  540.1486695670553
Generation :  265
Best result :  540.8827735045575
Generation :  266
Best result :  541.841948462322
Generation :  267
Best result :  549.6633913083566
Generation :  268
Best result :  549.6633913083566
Generation :  269
Best result :  549.6633913083566
Generation :  270
Best result :  549.6633913083566
Generation :  271
Best result :  550.1844142739551
Generation :  272
Best result :  550.8872504276166
Generation :  273
Best result :  552.7581665722919
Generation :  274
Best result :  557.405571872268
Generation :  275
Best result :  557.405571872268
Generation :  276
Best result :  562.4878862184806
Generation :  277
Best result :  562.4878862184806
Generation :  278
Best result :  564.2996026154542
Generation :  279
Best result :  569.3698983218612
Generation :  280
Best result :  574.1185503277298
Generation :  281
Best result :  575.9390321426922
Generation :  282
Best result :  575.9390321426922
Generation :  283
Best result :  575.9390321426922
Generation :  284
Best result :  579.7846640235375
Generation :  285
Best result :  579.7846640235375
Generation :  286
Best result :  585.0280721152794
Generation :  287
Best result :  587.5045096787607
Generation :  288
Best result :  589.003115680702
Generation :  289
Best result :  594.8809699677963
Generation :  290
Best result :  598.1961747606689
Generation :  291
Best result :  605.8457950912291
Generation :  292
Best result :  605.8457950912291
Generation :  293
Best result :  609.4816728968921
Generation :  294
Best result :  609.4816728968921
Generation :  295
Best result :  610.5016130215502
Generation :  296
Best result :  611.7704372501183
Generation :  297
Best result :  611.7704372501183
Generation :  298
Best result :  612.2136545834123
Generation :  299
Best result :  615.1861749825642
Generation :  300
Best result :  619.2989915333882
Generation :  301
Best result :  619.2989915333882
Generation :  302
Best result :  621.3055609507154
Generation :  303
Best result :  625.5018681016383
Generation :  304
Best result :  632.7157588269421
Generation :  305
Best result :  632.7157588269421
Generation :  306
Best result :  635.7194632404
Generation :  307
Best result :  635.7194632404
Generation :  308
Best result :  637.0256188971655
Generation :  309
Best result :  642.7186794270203
Generation :  310
Best result :  644.5234992488296
Generation :  311
Best result :  647.2646804142101
Generation :  312
Best result :  649.0479833827044
Generation :  313
Best result :  653.7591668813297
Generation :  314
Best result :  653.924368394994
Generation :  315
Best result :  655.0079949628383
Generation :  316
Best result :  660.5101516880761
Generation :  317
Best result :  662.0194948255931
Generation :  318
Best result :  666.5388655468753
Generation :  319
Best result :  668.046902519755
Generation :  320
Best result :  668.7492648394033
Generation :  321
Best result :  668.7492648394033
Generation :  322
Best result :  669.4381428872119
Generation :  323
Best result :  676.8776278473163
Generation :  324
Best result :  677.7212369566345
Generation :  325
Best result :  678.8377702112372
Generation :  326
Best result :  682.6853101900497
Generation :  327
Best result :  682.6853101900497
Generation :  328
Best result :  684.2533387924495
Generation :  329
Best result :  684.2533387924495
Generation :  330
Best result :  686.3455056156487
Generation :  331
Best result :  688.017521227226
Generation :  332
Best result :  691.6829677794826
Generation :  333
Best result :  692.2454458611293
Generation :  334
Best result :  692.2454458611293
Generation :  335
Best result :  692.2454458611293
Generation :  336
Best result :  692.2454458611293
Generation :  337
Best result :  699.552400612483
Generation :  338
Best result :  700.7246376834742
Generation :  339
Best result :  700.7246376834742
Generation :  340
Best result :  705.9905748086014
Generation :  341
Best result :  706.1570937877099
Generation :  342
Best result :  712.3533623782457
Generation :  343
Best result :  712.3533623782457
Generation :  344
Best result :  712.3533623782457
Generation :  345
Best result :  712.3533623782457
Generation :  346
Best result :  715.3922899789849
Generation :  347
Best result :  716.6892963978903
Generation :  348
Best result :  716.916585160834
Generation :  349
Best result :  724.338415321064
Generation :  350
Best result :  724.338415321064
Generation :  351
Best result :  724.7549201359536
Generation :  352
Best result :  724.7549201359536
Generation :  353
Best result :  725.2294239178094
Generation :  354
Best result :  728.9368918747418
Generation :  355
Best result :  728.9368918747418
Generation :  356
Best result :  730.4913583154207
Generation :  357
Best result :  738.082467177465
Generation :  358
Best result :  741.412533564539
Generation :  359
Best result :  741.412533564539
Generation :  360
Best result :  748.1492005236843
Generation :  361
Best result :  749.108584645322
Generation :  362
Best result :  749.108584645322
Generation :  363
Best result :  756.8969909443578
Generation :  364
Best result :  757.0723888624088
Generation :  365
Best result :  764.7137078527206
Generation :  366
Best result :  765.9453415352369
Generation :  367
Best result :  767.180883871972
Generation :  368
Best result :  772.4707083205301
Generation :  369
Best result :  778.3165518519603
Generation :  370
Best result :  779.569008287152
Generation :  371
Best result :  779.8524910084343
Generation :  372
Best result :  779.8524910084343
Generation :  373
Best result :  784.4935749370388
Generation :  374
Best result :  786.9621349068098
Generation :  375
Best result :  790.031900523411
Generation :  376
Best result :  790.031900523411
Generation :  377
Best result :  790.7856834258691
Generation :  378
Best result :  794.2251254990733
Generation :  379
Best result :  796.6311123938756
Generation :  380
Best result :  798.9205545048056
Generation :  381
Best result :  800.0757395500877
Generation :  382
Best result :  805.9687025933856
Generation :  383
Best result :  808.0538120317312
Generation :  384
Best result :  808.1096711183741
Generation :  385
Best result :  811.69430966029
Generation :  386
Best result :  815.3649391296115
Generation :  387
Best result :  815.3649391296115
Generation :  388
Best result :  818.5266098530478
Generation :  389
Best result :  819.7285824259292
Generation :  390
Best result :  819.7285824259292
Generation :  391
Best result :  823.1284678203557
Generation :  392
Best result :  824.3589021519189
Generation :  393
Best result :  831.3742722259154
Generation :  394
Best result :  831.3742722259154
Generation :  395
Best result :  832.0484578315937
Generation :  396
Best result :  838.9005052532882
Generation :  397
Best result :  838.9005052532882
Generation :  398
Best result :  839.5604821362816
Generation :  399
Best result :  845.5637109878745
Generation :  400
Best result :  845.5637109878745
Generation :  401
Best result :  853.3411362093482
Generation :  402
Best result :  853.3411362093482
Generation :  403
Best result :  853.3411362093482
Generation :  404
Best result :  853.6580548084007
Generation :  405
Best result :  853.8705135211652
Generation :  406
Best result :  856.5058019167701
Generation :  407
Best result :  858.372981694763
Generation :  408
Best result :  858.372981694763
Generation :  409
Best result :  859.5383450181777
Generation :  410
Best result :  866.56075943487
Generation :  411
Best result :  866.56075943487
Generation :  412
Best result :  874.2777377415761
Generation :  413
Best result :  874.2777377415761
Generation :  414
Best result :  880.459617000567
Generation :  415
Best result :  884.8157685257585
Generation :  416
Best result :  886.3607145803546
Generation :  417
Best result :  886.3607145803546
Generation :  418
Best result :  889.4098425106348
Generation :  419
Best result :  889.4098425106348
Generation :  420
Best result :  889.9340521308442
Generation :  421
Best result :  895.3404676796983
Generation :  422
Best result :  895.3404676796983
Generation :  423
Best result :  895.3404676796983
Generation :  424
Best result :  902.7719036281388
Generation :  425
Best result :  902.929943325456
Generation :  426
Best result :  904.7210281305231
Generation :  427
Best result :  905.4750151219711
Generation :  428
Best result :  910.3024679796872
Generation :  429
Best result :  910.5998919294976
Generation :  430
Best result :  914.6502613039194
Generation :  431
Best result :  914.7897635995287
Generation :  432
Best result :  922.4243853161379
Generation :  433
Best result :  922.4243853161379
Generation :  434
Best result :  926.5237498511435
Generation :  435
Best result :  926.5237498511435
Generation :  436
Best result :  926.5237498511435
Generation :  437
Best result :  930.1973326791966
Generation :  438
Best result :  930.5228755868352
Generation :  439
Best result :  932.5127580491516
Generation :  440
Best result :  934.2337425908856
Generation :  441
Best result :  937.5242586668465
Generation :  442
Best result :  937.5242586668465
Generation :  443
Best result :  937.5242586668465
Generation :  444
Best result :  937.5242586668465
Generation :  445
Best result :  943.4025574586294
Generation :  446
Best result :  943.46053354794
Generation :  447
Best result :  945.3069258007672
Generation :  448
Best result :  948.92427060551
Generation :  449
Best result :  952.7094735027507
Generation :  450
Best result :  952.7094735027507
Generation :  451
Best result :  952.863658397188
Generation :  452
Best result :  958.518105485479
Generation :  453
Best result :  959.2742314456282
Generation :  454
Best result :  961.9821361554767
Generation :  455
Best result :  962.3807939727277
Generation :  456
Best result :  963.4619779465515
Generation :  457
Best result :  966.8765569181913
Generation :  458
Best result :  968.3638795053507
Generation :  459
Best result :  968.3638795053507
Generation :  460
Best result :  974.5927138992696
Generation :  461
Best result :  974.5927138992696
Generation :  462
Best result :  976.4474905318937
Generation :  463
Best result :  976.4474905318937
Generation :  464
Best result :  978.1273532189646
Generation :  465
Best result :  978.1273532189646
Generation :  466
Best result :  978.1273532189646
Generation :  467
Best result :  978.7018702964579
Generation :  468
Best result :  980.6057902208107
Generation :  469
Best result :  985.8636155870984
Generation :  470
Best result :  987.5046747107134
Generation :  471
Best result :  993.436732943883
Generation :  472
Best result :  993.4450769384443
Generation :  473
Best result :  997.0890257956642
Generation :  474
Best result :  1001.0069790722171
Generation :  475
Best result :  1001.0069790722171
Generation :  476
Best result :  1005.0765974302675
Generation :  477
Best result :  1005.0765974302675
Generation :  478
Best result :  1007.1028035368412
Generation :  479
Best result :  1011.2278202645613
Generation :  480
Best result :  1011.2278202645613
Generation :  481
Best result :  1016.5635759571298
Generation :  482
Best result :  1017.4592431851501
Generation :  483
Best result :  1017.4592431851501
Generation :  484
Best result :  1024.0221988230446
Generation :  485
Best result :  1024.0221988230446
Generation :  486
Best result :  1024.0221988230446
Generation :  487
Best result :  1024.4844898391375
Generation :  488
Best result :  1026.470442348884
Generation :  489
Best result :  1032.8784262586248
Generation :  490
Best result :  1032.8784262586248
Generation :  491
Best result :  1039.6965996039826
Generation :  492
Best result :  1039.6965996039826
Generation :  493
Best result :  1039.6965996039826
Generation :  494
Best result :  1039.6965996039826
Generation :  495
Best result :  1042.0660958192393
Generation :  496
Best result :  1049.4812485087589
Generation :  497
Best result :  1049.4812485087589
Generation :  498
Best result :  1054.9689614622812
Generation :  499
Best result :  1054.9689614622812
Generation :  500
Best result :  1062.5835125725475
Generation :  501
Best result :  1067.6390161462714
Generation :  502
Best result :  1069.5135885412437
Generation :  503
Best result :  1070.6761064549053
Generation :  504
Best result :  1072.4791782390457
Generation :  505
Best result :  1072.4791782390457
Generation :  506
Best result :  1074.554753890756
Generation :  507
Best result :  1074.554753890756
Generation :  508
Best result :  1074.554753890756
Generation :  509
Best result :  1081.1964586737847
Generation :  510
Best result :  1081.8508019152223
Generation :  511
Best result :  1084.5908982592175
Generation :  512
Best result :  1086.853633944442
Generation :  513
Best result :  1087.425543224119
Generation :  514
Best result :  1093.9928093151414
Generation :  515
Best result :  1097.590863588793
Generation :  516
Best result :  1097.590863588793
Generation :  517
Best result :  1099.041578517348
Generation :  518
Best result :  1100.8466465135436
Generation :  519
Best result :  1104.0343151491807
Generation :  520
Best result :  1104.918760973497
Generation :  521
Best result :  1104.918760973497
Generation :  522
Best result :  1104.918760973497
Generation :  523
Best result :  1109.165863677519
Generation :  524
Best result :  1116.7988123626794
Generation :  525
Best result :  1116.7988123626794
Generation :  526
Best result :  1116.7988123626794
Generation :  527
Best result :  1117.042268316534
Generation :  528
Best result :  1117.042268316534
Generation :  529
Best result :  1117.3182879493374
Generation :  530
Best result :  1119.8806165764083
Generation :  531
Best result :  1124.4562217544535
Generation :  532
Best result :  1131.056517575068
Generation :  533
Best result :  1131.5278348579168
Generation :  534
Best result :  1137.0315508423184
Generation :  535
Best result :  1137.0315508423184
Generation :  536
Best result :  1137.0315508423184
Generation :  537
Best result :  1137.0315508423184
Generation :  538
Best result :  1141.1841741951077
Generation :  539
Best result :  1144.8083142967564
Generation :  540
Best result :  1146.5494093669859
Generation :  541
Best result :  1149.1446385525596
Generation :  542
Best result :  1149.160144191402
Generation :  543
Best result :  1153.7545194361403
Generation :  544
Best result :  1153.7545194361403
Generation :  545
Best result :  1158.6636777030092
Generation :  546
Best result :  1159.677826406551
Generation :  547
Best result :  1160.8975816629888
Generation :  548
Best result :  1167.4942999079833
Generation :  549
Best result :  1169.3591717107738
Generation :  550
Best result :  1171.351963161633
Generation :  551
Best result :  1171.351963161633
Generation :  552
Best result :  1173.1388320445335
Generation :  553
Best result :  1174.5089163287498
Generation :  554
Best result :  1174.5089163287498
Generation :  555
Best result :  1181.5457971644598
Generation :  556
Best result :  1181.5457971644598
Generation :  557
Best result :  1184.3938523702618
Generation :  558
Best result :  1184.3938523702618
Generation :  559
Best result :  1188.334504175042
Generation :  560
Best result :  1188.334504175042
Generation :  561
Best result :  1190.8153130503238
Generation :  562
Best result :  1196.6231723942446
Generation :  563
Best result :  1197.7430003678971
Generation :  564
Best result :  1199.4147785184368
Generation :  565
Best result :  1203.0113897733231
Generation :  566
Best result :  1204.2906610411126
Generation :  567
Best result :  1210.40117328772
Generation :  568
Best result :  1211.1724164067489
Generation :  569
Best result :  1214.2942150759734
Generation :  570
Best result :  1215.698761060811
Generation :  571
Best result :  1216.1532019981685
Generation :  572
Best result :  1221.4327481144153
Generation :  573
Best result :  1221.4429586280817
Generation :  574
Best result :  1222.2063525761569
Generation :  575
Best result :  1222.9271096905145
Generation :  576
Best result :  1222.9271096905145
Generation :  577
Best result :  1228.5054991252196
Generation :  578
Best result :  1230.5163501189404
Generation :  579
Best result :  1233.6770052783004
Generation :  580
Best result :  1237.464331771664
Generation :  581
Best result :  1237.464331771664
Generation :  582
Best result :  1241.3274507050003
Generation :  583
Best result :  1244.8341359246742
Generation :  584
Best result :  1244.8341359246742
Generation :  585
Best result :  1244.8341359246742
Generation :  586
Best result :  1244.8341359246742
Generation :  587
Best result :  1245.9618354552792
Generation :  588
Best result :  1245.9618354552792
Generation :  589
Best result :  1252.3079055561348
Generation :  590
Best result :  1258.8364505087122
Generation :  591
Best result :  1259.5430701268103
Generation :  592
Best result :  1259.5430701268103
Generation :  593
Best result :  1259.5430701268103
Generation :  594
Best result :  1263.4465658871452
Generation :  595
Best result :  1265.4383557802726
Generation :  596
Best result :  1267.7145412790096
Generation :  597
Best result :  1267.7145412790096
Generation :  598
Best result :  1272.360891390737
Generation :  599
Best result :  1273.3031474701104
Generation :  600
Best result :  1279.0539927086654
Generation :  601
Best result :  1283.214039673119
Generation :  602
Best result :  1286.6582098567465
Generation :  603
Best result :  1288.0872889085013
Generation :  604
Best result :  1289.9329619939892
Generation :  605
Best result :  1291.636531496274
Generation :  606
Best result :  1292.7974744014696
Generation :  607
Best result :  1293.4659621900676
Generation :  608
Best result :  1297.632542415006
Generation :  609
Best result :  1299.01454560762
Generation :  610
Best result :  1299.0528965454114
Generation :  611
Best result :  1299.7119303099837
Generation :  612
Best result :  1306.438167738667
Generation :  613
Best result :  1308.8111713044966
Generation :  614
Best result :  1309.7060689504049
Generation :  615
Best result :  1309.7060689504049
Generation :  616
Best result :  1311.3585685016199
Generation :  617
Best result :  1311.3585685016199
Generation :  618
Best result :  1311.426380811142
Generation :  619
Best result :  1313.9783221686198
Generation :  620
Best result :  1319.7956166090719
Generation :  621
Best result :  1325.1247666729548
Generation :  622
Best result :  1332.1826831286237
Generation :  623
Best result :  1332.1826831286237
Generation :  624
Best result :  1332.1826831286237
Generation :  625
Best result :  1332.1826831286237
Generation :  626
Best result :  1339.2877724846594
Generation :  627
Best result :  1340.5106878475046
Generation :  628
Best result :  1340.5106878475046
Generation :  629
Best result :  1343.8035225964156
Generation :  630
Best result :  1343.956621821321
Generation :  631
Best result :  1347.9593821324656
Generation :  632
Best result :  1348.9817494112353
Generation :  633
Best result :  1349.8154667734145
Generation :  634
Best result :  1356.6733691695893
Generation :  635
Best result :  1358.2425364274343
Generation :  636
Best result :  1360.635563535768
Generation :  637
Best result :  1364.5022827076884
Generation :  638
Best result :  1365.4086841420135
Generation :  639
Best result :  1365.8002840057254
Generation :  640
Best result :  1366.6588957437361
Generation :  641
Best result :  1366.6588957437361
Generation :  642
Best result :  1370.7226985515526
Generation :  643
Best result :  1377.1787427557686
Generation :  644
Best result :  1377.608640534085
Generation :  645
Best result :  1378.5694112812528
Generation :  646
Best result :  1383.196365515749
Generation :  647
Best result :  1387.6795905650408
Generation :  648
Best result :  1387.7317375074651
Generation :  649
Best result :  1387.7317375074651
Generation :  650
Best result :  1395.0436204163998
Generation :  651
Best result :  1401.1771088848495
Generation :  652
Best result :  1406.257932913049
Generation :  653
Best result :  1406.257932913049
Generation :  654
Best result :  1409.3528181075692
Generation :  655
Best result :  1414.8748814973155
Generation :  656
Best result :  1414.8748814973155
Generation :  657
Best result :  1414.8748814973155
Generation :  658
Best result :  1421.6955594284332
Generation :  659
Best result :  1421.6955594284332
Generation :  660
Best result :  1423.2246167304572
Generation :  661
Best result :  1431.1495326695538
Generation :  662
Best result :  1431.1495326695538
Generation :  663
Best result :  1431.1495326695538
Generation :  664
Best result :  1431.1495326695538
Generation :  665
Best result :  1432.8499557476023
Generation :  666
Best result :  1435.362001578812
Generation :  667
Best result :  1440.7219564426143
Generation :  668
Best result :  1440.7219564426143
Generation :  669
Best result :  1440.7219564426143
Generation :  670
Best result :  1440.722376268692
Generation :  671
Best result :  1441.9625823145382
Generation :  672
Best result :  1443.1134464620222
Generation :  673
Best result :  1448.995407114289
Generation :  674
Best result :  1450.5686827901427
Generation :  675
Best result :  1450.5686827901427
Generation :  676
Best result :  1450.5686827901427
Generation :  677
Best result :  1456.4222641954789
Generation :  678
Best result :  1463.8889322311902
Generation :  679
Best result :  1465.2827605162058
Generation :  680
Best result :  1466.6632622081977
Generation :  681
Best result :  1469.6851017946374
Generation :  682
Best result :  1472.819802873733
Generation :  683
Best result :  1473.638680265339
Generation :  684
Best result :  1476.1826950271318
Generation :  685
Best result :  1476.1826950271318
Generation :  686
Best result :  1476.720046425508
Generation :  687
Best result :  1482.7220608317907
Generation :  688
Best result :  1484.5203002500105
Generation :  689
Best result :  1484.5203002500105
Generation :  690
Best result :  1485.698403928208
Generation :  691
Best result :  1489.106869782142
Generation :  692
Best result :  1491.6640286392364
Generation :  693
Best result :  1494.7086146244637
Generation :  694
Best result :  1496.577859862315
Generation :  695
Best result :  1499.2871523400368
Generation :  696
Best result :  1499.2871523400368
Generation :  697
Best result :  1500.558277323917
Generation :  698
Best result :  1501.0853979373953
Generation :  699
Best result :  1501.7969960427556
Generation :  700
Best result :  1506.349882154264
Generation :  701
Best result :  1506.349882154264
Generation :  702
Best result :  1508.3371507790903
Generation :  703
Best result :  1513.234064871687
Generation :  704
Best result :  1513.234064871687
Generation :  705
Best result :  1513.6275117864157
Generation :  706
Best result :  1515.0410821321377
Generation :  707
Best result :  1515.3808399420589
Generation :  708
Best result :  1519.8757806390495
Generation :  709
Best result :  1519.8757806390495
Generation :  710
Best result :  1524.4945981658557
Generation :  711
Best result :  1524.8935709490925
Generation :  712
Best result :  1524.8935709490925
Generation :  713
Best result :  1528.3591348866426
Generation :  714
Best result :  1528.3591348866426
Generation :  715
Best result :  1528.3591348866426
Generation :  716
Best result :  1529.0869635686504
Generation :  717
Best result :  1532.1929357881481
Generation :  718
Best result :  1536.3812522486774
Generation :  719
Best result :  1539.5188495538316
Generation :  720
Best result :  1542.7127980206192
Generation :  721
Best result :  1549.1333404509762
Generation :  722
Best result :  1549.1333404509762
Generation :  723
Best result :  1556.333003435703
Generation :  724
Best result :  1560.2752352052084
Generation :  725
Best result :  1563.7067595827216
Generation :  726
Best result :  1564.771357755557
Generation :  727
Best result :  1568.408202214157
Generation :  728
Best result :  1569.5691929171492
Generation :  729
Best result :  1575.684306421204
Generation :  730
Best result :  1576.3095476978347
Generation :  731
Best result :  1576.3095476978347
Generation :  732
Best result :  1576.3095476978347
Generation :  733
Best result :  1577.4110993151164
Generation :  734
Best result :  1577.4110993151164
Generation :  735
Best result :  1578.3407644170727
Generation :  736
Best result :  1580.8012936666248
Generation :  737
Best result :  1584.6670482460706
Generation :  738
Best result :  1584.6670482460706
Generation :  739
Best result :  1586.5092656810493
Generation :  740
Best result :  1592.4480452943926
Generation :  741
Best result :  1592.4480452943926
Generation :  742
Best result :  1592.4480452943926
Generation :  743
Best result :  1592.6092084133365
Generation :  744
Best result :  1600.2083142383385
Generation :  745
Best result :  1602.9689093742393
Generation :  746
Best result :  1604.491401388177
Generation :  747
Best result :  1612.064389491921
Generation :  748
Best result :  1617.0461476277003
Generation :  749
Best result :  1617.0461476277003
Generation :  750
Best result :  1620.7397353779565
Generation :  751
Best result :  1622.9609872953542
Generation :  752
Best result :  1622.9609872953542
Generation :  753
Best result :  1626.7166547621339
Generation :  754
Best result :  1626.7166547621339
Generation :  755
Best result :  1627.670463617841
Generation :  756
Best result :  1627.670463617841
Generation :  757
Best result :  1631.765562840272
Generation :  758
Best result :  1631.765562840272
Generation :  759
Best result :  1632.2163894266232
Generation :  760
Best result :  1632.2163894266232
Generation :  761
Best result :  1632.7057077018956
Generation :  762
Best result :  1640.5561856444922
Generation :  763
Best result :  1641.261247895625
Generation :  764
Best result :  1646.365860919713
Generation :  765
Best result :  1646.365860919713
Generation :  766
Best result :  1652.650461252941
Generation :  767
Best result :  1656.450849018557
Generation :  768
Best result :  1656.450849018557
Generation :  769
Best result :  1658.1738264126036
Generation :  770
Best result :  1661.2587778146221
Generation :  771
Best result :  1661.2587778146221
Generation :  772
Best result :  1661.9479733751702
Generation :  773
Best result :  1663.3962032743145
Generation :  774
Best result :  1663.3962032743145
Generation :  775
Best result :  1665.561539087909
Generation :  776
Best result :  1667.2942188290779
Generation :  777
Best result :  1667.2942188290779
Generation :  778
Best result :  1667.2942188290779
Generation :  779
Best result :  1670.9581578630516
Generation :  780
Best result :  1672.2389881054714
Generation :  781
Best result :  1679.556207619758
Generation :  782
Best result :  1679.556207619758
Generation :  783
Best result :  1687.0701820745307
Generation :  784
Best result :  1688.4278844181608
Generation :  785
Best result :  1695.0402881033058
Generation :  786
Best result :  1695.0402881033058
Generation :  787
Best result :  1695.0402881033058
Generation :  788
Best result :  1698.9817552937418
Generation :  789
Best result :  1699.0477336481752
Generation :  790
Best result :  1699.0477336481752
Generation :  791
Best result :  1700.618594879618
Generation :  792
Best result :  1702.158507735842
Generation :  793
Best result :  1702.158507735842
Generation :  794
Best result :  1709.0129810032447
Generation :  795
Best result :  1709.0129810032447
Generation :  796
Best result :  1715.677868386897
Generation :  797
Best result :  1717.210220753894
Generation :  798
Best result :  1722.1189406895985
Generation :  799
Best result :  1722.1189406895985
Generation :  800
Best result :  1729.017907881429
Generation :  801
Best result :  1729.017907881429
Generation :  802
Best result :  1729.017907881429
Generation :  803
Best result :  1729.4798899448695
Generation :  804
Best result :  1730.785948227456
Generation :  805
Best result :  1730.785948227456
Generation :  806
Best result :  1738.6710032251221
Generation :  807
Best result :  1739.5152574597857
Generation :  808
Best result :  1743.4353085187122
Generation :  809
Best result :  1749.4723202735586
Generation :  810
Best result :  1749.4723202735586
Generation :  811
Best result :  1749.4723202735586
Generation :  812
Best result :  1749.4723202735586
Generation :  813
Best result :  1752.4922777739098
Generation :  814
Best result :  1759.6735590707544
Generation :  815
Best result :  1759.6735590707544
Generation :  816
Best result :  1761.455163496615
Generation :  817
Best result :  1761.455163496615
Generation :  818
Best result :  1761.455163496615
Generation :  819
Best result :  1765.2168963829388
Generation :  820
Best result :  1765.4609152125422
Generation :  821
Best result :  1766.6391689515908
Generation :  822
Best result :  1773.2295464432968
Generation :  823
Best result :  1773.2295464432968
Generation :  824
Best result :  1775.1216005292206
Generation :  825
Best result :  1779.1640030117514
Generation :  826
Best result :  1779.1640030117514
Generation :  827
Best result :  1779.5011266458816
Generation :  828
Best result :  1780.8867429238514
Generation :  829
Best result :  1786.8597240181084
Generation :  830
Best result :  1788.8185018608085
Generation :  831
Best result :  1791.6174161207675
Generation :  832
Best result :  1793.7048463144845
Generation :  833
Best result :  1800.1337514216839
Generation :  834
Best result :  1800.1337514216839
Generation :  835
Best result :  1801.2661632038848
Generation :  836
Best result :  1801.6284916580541
Generation :  837
Best result :  1801.6284916580541
Generation :  838
Best result :  1803.722117455987
Generation :  839
Best result :  1803.722117455987
Generation :  840
Best result :  1809.4092053708014
Generation :  841
Best result :  1810.3102823759473
Generation :  842
Best result :  1811.3910092748863
Generation :  843
Best result :  1811.7455600306482
Generation :  844
Best result :  1812.8812685004827
Generation :  845
Best result :  1814.0275294147004
Generation :  846
Best result :  1815.2951632837826
Generation :  847
Best result :  1821.4803049004308
Generation :  848
Best result :  1823.26061836319
Generation :  849
Best result :  1824.169068979586
Generation :  850
Best result :  1827.216359116207
Generation :  851
Best result :  1832.5234548660696
Generation :  852
Best result :  1839.164362536077
Generation :  853
Best result :  1840.696784506333
Generation :  854
Best result :  1840.696784506333
Generation :  855
Best result :  1844.1614630496238
Generation :  856
Best result :  1845.8919560145828
Generation :  857
Best result :  1853.2749812613827
Generation :  858
Best result :  1853.2749812613827
Generation :  859
Best result :  1853.2749812613827
Generation :  860
Best result :  1854.806177693933
Generation :  861
Best result :  1855.7113006594182
Generation :  862
Best result :  1858.3736327028712
Generation :  863
Best result :  1858.3736327028712
Generation :  864
Best result :  1862.7884813346852
Generation :  865
Best result :  1869.1924944967875
Generation :  866
Best result :  1872.676729412682
Generation :  867
Best result :  1873.0613952738665
Generation :  868
Best result :  1874.699785669665
Generation :  869
Best result :  1876.7350471892314
Generation :  870
Best result :  1879.0313147503705
Generation :  871
Best result :  1879.410607832564
Generation :  872
Best result :  1880.4730058796972
Generation :  873
Best result :  1880.9892909288528
Generation :  874
Best result :  1888.313968580708
Generation :  875
Best result :  1888.313968580708
Generation :  876
Best result :  1893.6660545744332
Generation :  877
Best result :  1893.6660545744332
Generation :  878
Best result :  1895.3830254622296
Generation :  879
Best result :  1895.3830254622296
Generation :  880
Best result :  1898.2211771926766
Generation :  881
Best result :  1898.571936855004
Generation :  882
Best result :  1899.7802986780155
Generation :  883
Best result :  1904.4189508087397
Generation :  884
Best result :  1904.4189508087397
Generation :  885
Best result :  1905.4322679370132
Generation :  886
Best result :  1906.756971188998
Generation :  887
Best result :  1906.9247650163798
Generation :  888
Best result :  1908.8131866826309
Generation :  889
Best result :  1908.8131866826309
Generation :  890
Best result :  1911.789844116027
Generation :  891
Best result :  1915.2556534329726
Generation :  892
Best result :  1917.6590490461788
Generation :  893
Best result :  1917.6590490461788
Generation :  894
Best result :  1917.6590490461788
Generation :  895
Best result :  1924.7912497526343
Generation :  896
Best result :  1924.7912497526343
Generation :  897
Best result :  1931.6160267793364
Generation :  898
Best result :  1933.292361954461
Generation :  899
Best result :  1936.5202675732683
Generation :  900
Best result :  1938.0335968332183
Generation :  901
Best result :  1938.0335968332183
Generation :  902
Best result :  1940.1150661065897
Generation :  903
Best result :  1945.6990162625216
Generation :  904
Best result :  1948.1626497039497
Generation :  905
Best result :  1952.2537877365878
Generation :  906
Best result :  1956.3552996911922
Generation :  907
Best result :  1956.3552996911922
Generation :  908
Best result :  1956.3552996911922
Generation :  909
Best result :  1956.3552996911922
Generation :  910
Best result :  1961.74410202345
Generation :  911
Best result :  1961.9192341951211
Generation :  912
Best result :  1962.9809926385958
Generation :  913
Best result :  1969.476504912069
Generation :  914
Best result :  1971.2471185663899
Generation :  915
Best result :  1971.2471185663899
Generation :  916
Best result :  1974.5849156776137
Generation :  917
Best result :  1975.2979216917402
Generation :  918
Best result :  1975.2979216917402
Generation :  919
Best result :  1975.9341895542657
Generation :  920
Best result :  1975.9341895542657
Generation :  921
Best result :  1976.3780697012592
Generation :  922
Best result :  1976.8687975230157
Generation :  923
Best result :  1978.7611317256471
Generation :  924
Best result :  1978.7611317256471
Generation :  925
Best result :  1978.7611317256471
Generation :  926
Best result :  1986.0211666445118
Generation :  927
Best result :  1986.0211666445118
Generation :  928
Best result :  1986.0211666445118
Generation :  929
Best result :  1988.718717501942
Generation :  930
Best result :  1988.718717501942
Generation :  931
Best result :  1994.025520593911
Generation :  932
Best result :  1994.025520593911
Generation :  933
Best result :  1994.8871457975883
Generation :  934
Best result :  1996.3871805785727
Generation :  935
Best result :  2002.6899276338531
Generation :  936
Best result :  2002.6899276338531
Generation :  937
Best result :  2002.6899276338531
Generation :  938
Best result :  2002.6899276338531
Generation :  939
Best result :  2004.3823719920274
Generation :  940
Best result :  2008.1721048914271
Generation :  941
Best result :  2008.1721048914271
Generation :  942
Best result :  2015.310212214995
Generation :  943
Best result :  2015.310212214995
Generation :  944
Best result :  2015.310212214995
Generation :  945
Best result :  2015.310212214995
Generation :  946
Best result :  2021.1948504660716
Generation :  947
Best result :  2027.5010892090122
Generation :  948
Best result :  2029.2506783550825
Generation :  949
Best result :  2035.0847544416445
Generation :  950
Best result :  2035.0847544416445
Generation :  951
Best result :  2038.8189984973897
Generation :  952
Best result :  2038.8189984973897
Generation :  953
Best result :  2042.4452788685205
Generation :  954
Best result :  2047.5987679656637
Generation :  955
Best result :  2053.74114750439
Generation :  956
Best result :  2053.74114750439
Generation :  957
Best result :  2055.282912030895
Generation :  958
Best result :  2055.282912030895
Generation :  959
Best result :  2060.2788283671275
Generation :  960
Best result :  2060.7630352010533
Generation :  961
Best result :  2062.1996394952334
Generation :  962
Best result :  2063.478804649549
Generation :  963
Best result :  2069.6050065270983
Generation :  964
Best result :  2070.89149266401
Generation :  965
Best result :  2070.89149266401
Generation :  966
Best result :  2075.9014288085637
Generation :  967
Best result :  2075.9014288085637
Generation :  968
Best result :  2075.9014288085637
Generation :  969
Best result :  2079.429806097225
Generation :  970
Best result :  2079.429806097225
Generation :  971
Best result :  2083.7439136716634
Generation :  972
Best result :  2087.479728002132
Generation :  973
Best result :  2092.522501367102
Generation :  974
Best result :  2092.522501367102
Generation :  975
Best result :  2094.179650179683
Generation :  976
Best result :  2094.179650179683
Generation :  977
Best result :  2094.179650179683
Generation :  978
Best result :  2095.4489122828236
Generation :  979
Best result :  2097.36817672234
Generation :  980
Best result :  2097.36817672234
Generation :  981
Best result :  2102.233338586651
Generation :  982
Best result :  2104.1548530219225
Generation :  983
Best result :  2109.205037806053
Generation :  984
Best result :  2112.182166241901
Generation :  985
Best result :  2112.669513063416
Generation :  986
Best result :  2119.9210093493025
Generation :  987
Best result :  2120.658151782261
Generation :  988
Best result :  2122.5249363931157
Generation :  989
Best result :  2123.0452331867846
Generation :  990
Best result :  2123.2032991390556
Generation :  991
Best result :  2124.7016195859064
Generation :  992
Best result :  2125.759360611767
Generation :  993
Best result :  2132.0895413678086
Generation :  994
Best result :  2135.7125773477574
Generation :  995
Best result :  2135.7125773477574
Generation :  996
Best result :  2138.596142297455
Generation :  997
Best result :  2139.0572565451553
Generation :  998
Best result :  2143.1611142830443
Generation :  999
Best result :  2143.1611142830443
Best solution :  [[[ 2.47603606e+02 -6.95293975e+01  3.30822651e-02  1.89715678e+00
    1.22817642e+00 -1.85310046e+00]]]
Best solution fitness :  [2143.16111428]