Introduction
The phytoclass package uses non-negative matrix factorization and simulated annealing to determine the biomass of different phytoplankton groups from pigment concentrations. The methodology is discussed in (Hayward, Pinkerton, and Gutierrez‐Rodriguez 2023) and is similar to the CHEMTAX method of Mackey et al. (1996).
For ease of use, most functions have default options. However the user also has the option to set their own parameters within the program, and instructions on how to do this are listed for each function.
It is important to highlight that naming conventions for phytoplankton groups and their pigments should be adhered to when using the default samples. For example, the user should ensure that pigment names in their sample matrix (S) match the same pigment names in the pigment – Chl a ratio matrix (F).
At present the use of DV Chl a with Prochlorococcus is not supported, however it will be in a future release.
The main function of the package is simulated_annealing() with an associated helper function Cluster()
Other helper functions covered in this document are:
- Matrix_checks
- Bounded_weights
- Steepest_Desc
- NNLS_MF
Main function: simulated_annealing()
This is the main function for the phytoclass package.
It takes in the inputs (listed below) and returns the updated pigment to Chl a ratios, the Chl a biomass of each phytoplankton group, error associated with each group, and a graph displaying the Chl a concentration for each group.
It is important that samples are clustered appropriately before using the function (see the Cluster function).
Arguments:
S = Sample matrix – a matrix of pigment samples. Ensure that Chl a is the final column
F = Pigment to Chl a matrix. If left blank default values will be used. Ensure that pigment columns are in the same order as S and column naming conventions match.
user_defined_min_max = If blank default values are used. To create different min_max values, follow the same structure as the phytoclass::min_max file. See the example below.
do_matrix_checks = this should only be set to true when using the default values. This will remove pigment columns that have column sums of 0. Set to FALSE if using customised names for pigments and phytoplankton groups.
niter = number of iterations. Default value is 500.
step = step ratio used. Default value is 0.009.
weight.upper.bound = the upper limit of the weights applied. Default value is 30.
When using the default values, the only argument required is the sample matrix. However, make sure that the pigment names match those in the built-in pigment to Chl matrix Fm.
For the examples that follow the argument niter equals one for processing speed, but should be set much higher to obtain convergence.
Cluster function
Prior to analysis using simulated annealing, pigment samples require clustering.
The Cluster function divides all pigment concentrations by the total Chl a concentration. Following this the data undergoes BoxCox transformation, and the data is hierarchically clustered using the Ward method based on the Manhattan distances between pigment samples. The DynamicTreeCut method of (Langfelder, Zhang, and Horvath 2008) is then used to prune the dendogram into reasonable clusters of specified size(s).
The function returns a list of the clusters and the cluster dendrogram.
An example, using the built-in sample data set Sm:
Cluster.result <- Cluster(Sm, 14)
#> Registered S3 method overwritten by 'generics':
#> method from
#> as.character.dev_topic butcher
#> ..done.
# list of clusters
Cluster.result$cluster.list
#> [[1]]
#> Per X19but Fuco Neox Pra Viol X19hex
#> 1 0.0000 0.03024000 0.0622500 0.005570000 0.01407000 0.007590000 0.08224000
#> 2 0.0000 0.01084000 0.0286400 0.001110000 0.00351000 0.001440000 0.01497000
#> 3 0.0000 0.01560000 0.2172000 0.006400000 0.00920000 0.000000000 0.01740000
#> 4 0.0000 0.01770000 0.2347000 0.007000000 0.01150000 0.000000000 0.01890000
#> 5 0.0000 0.02520000 0.2952000 0.009900000 0.01300000 0.000000000 0.02110000
#> 6 0.0102 0.02220000 0.2275000 0.007600000 0.01070000 0.000000000 0.01900000
#> 7 0.0000 0.01510000 0.1417000 0.004000000 0.00800000 0.002600000 0.02550000
#> 8 0.0000 0.04520000 0.4484000 0.003700000 0.00650000 0.000000000 0.13170000
#> 9 0.0000 0.05180000 0.6228000 0.004900000 0.00750000 0.004000000 0.13210000
#> 10 0.0000 0.02200000 0.1090000 0.004000000 0.00800000 0.003000000 0.04200000
#> 11 0.0000 0.04906269 0.5266418 0.017334346 0.03446357 0.000000000 0.12044287
#> 12 0.0000 0.02052662 0.2714934 0.017692288 0.01994758 0.000000000 0.03011548
#> 13 0.0000 0.02216177 0.1654257 0.012242414 0.01956286 0.000000000 0.02721049
#> 14 0.0000 0.01438545 0.2555594 0.020671983 0.04736366 0.011507712 0.02167651
#> 15 0.0000 0.02619187 0.6025477 0.038948613 0.04929322 0.034893958 0.10082727
#> 16 0.0000 0.02662521 0.2205439 0.024444776 0.06623835 0.027029275 0.04015983
#> 17 0.0000 0.06542364 0.6603459 0.044215705 0.11285620 0.064560275 0.13896777
#> 18 0.0000 0.05315834 0.2584586 0.016123905 0.04701666 0.011387548 0.08065818
#> 19 0.0000 0.06040911 0.4494852 0.027862628 0.07757631 0.025258248 0.10999693
#> 20 0.0000 0.07577285 0.3920489 0.017239170 0.05136883 0.020899111 0.12859331
#> 21 0.0000 0.06067605 0.4112795 0.021768249 0.07620416 0.022592896 0.08973832
#> 22 0.0000 0.04388275 0.6257830 0.012373717 0.03347165 0.013495185 0.12822965
#> 23 0.0000 0.03971444 0.4332551 0.014402749 0.02657611 0.010560487 0.09220387
#> 24 0.0000 0.03092146 0.1639481 0.013383240 0.01262176 0.008793182 0.05881285
#> 25 0.0000 0.02725515 0.1966991 0.009916299 0.01832477 0.009112193 0.05488214
#> 26 0.0000 0.01678833 0.1755048 0.008821737 0.02676049 0.006637964 0.02189435
#> 27 0.0000 0.02444961 0.1273596 0.007049435 0.01323978 0.004447137 0.02218985
#> 28 0.0000 0.01567523 0.1052905 0.006144340 0.01372236 0.006294480 0.02208074
#> 29 0.0000 0.03108003 0.0874373 0.011728700 0.02004430 0.005772257 0.04855466
#> Allo Zea Lut ChlcMGDG18 ChlcMGDG14 Chl_b Tchla Clust
#> 1 0.001880000 0.002010000 0 0 0 0.08661000 0.4585100 1
#> 2 0.001440000 0.001910000 0 0 0 0.01473000 0.1457100 1
#> 3 0.005800000 0.003600000 0 0 0 0.05700000 0.6127000 1
#> 4 0.005400000 0.003800000 0 0 0 0.06190000 0.6207000 1
#> 5 0.001400000 0.007600000 0 0 0 0.05780000 0.5302000 1
#> 6 0.000000000 0.003000000 0 0 0 0.04530000 0.4057000 1
#> 7 0.000800000 0.001000000 0 0 0 0.03120000 0.2117000 1
#> 8 0.004400000 0.002300000 0 0 0 0.00930000 0.6885000 1
#> 9 0.059700000 0.003500000 0 0 0 0.01210000 1.0849000 1
#> 10 0.003000000 0.003000000 0 0 0 0.03200000 0.2060000 1
#> 11 0.029990012 0.039966194 0 0 0 0.15325050 1.0396607 1
#> 12 0.000000000 0.030828916 0 0 0 0.09243326 0.4812043 1
#> 13 0.000000000 0.017661542 0 0 0 0.08720595 0.3409079 1
#> 14 0.009032764 0.018938989 0 0 0 0.14213442 0.4892902 1
#> 15 0.031610292 0.036313122 0 0 0 0.16461333 1.3811642 1
#> 16 0.007170750 0.013507988 0 0 0 0.18532190 0.5711149 1
#> 17 0.016001053 0.028670688 0 0 0 0.41729467 1.7413395 1
#> 18 0.010093841 0.016835362 0 0 0 0.13198111 0.5776707 1
#> 19 0.019249598 0.020581908 0 0 0 0.26015615 1.0739310 1
#> 20 0.024550418 0.020066576 0 0 0 0.22391720 0.9909010 1
#> 21 0.016719215 0.019212773 0 0 0 0.23686078 0.9520484 1
#> 22 0.018189726 0.017601736 0 0 0 0.15579381 1.2494685 1
#> 23 0.014131906 0.012984478 0 0 0 0.12090732 0.9190665 1
#> 24 0.011139374 0.012782671 0 0 0 0.05213182 0.3486558 1
#> 25 0.013767971 0.012392348 0 0 0 0.08734698 0.4556423 1
#> 26 0.008302439 0.010946550 0 0 0 0.07005955 0.3497736 1
#> 27 0.005887899 0.010324368 0 0 0 0.03627212 0.2367185 1
#> 28 0.004908419 0.009914413 0 0 0 0.03735579 0.2117071 1
#> 29 0.009256850 0.009871839 0 0 0 0.09414383 0.3014690 1
# plot of clusters
plot(Cluster.result$cluster.plot)
Example without clustering
The example here uses the built-in sample matrix Sm.
set.seed("7683")
Results <- simulated_annealing(Sm, niter = 1)
Results$`condition number`
#> [1] 728.0411
Results$RMSE
#> [1] 0.02819993
Results$MAE
#> Per X19but Fuco Neox Pra Viol
#> 8.532288e-05 1.029630e-05 4.746166e-03 4.346108e-03 3.364625e-03 2.253839e-03
#> X19hex Allo Zea Chl_b Tchla
#> 2.883243e-04 1.750370e-04 7.460491e-05 7.255182e-03 6.520774e-02
Results$Error
#> Per X19but Fuco Neox Pra
#> [1,] -4.522442e-04 2.998121e-05 -0.0138200899 -7.840801e-04 -0.0061179974
#> [2,] -6.216036e-04 4.120877e-05 -0.0189955299 -3.067019e-04 -0.0007864679
#> [3,] -5.332655e-04 3.535246e-05 -0.0162960147 2.472446e-03 -0.0044775819
#> [4,] -4.648612e-04 3.081764e-05 -0.0142056529 2.503969e-03 -0.0035775433
#> [5,] -1.111827e-04 7.370779e-06 -0.0033976227 5.620855e-03 -0.0019343731
#> [6,] -3.887731e-05 2.577344e-06 -0.0011880485 5.380674e-03 -0.0014102286
#> [7,] 0.000000e+00 -1.481838e-05 0.0068306578 3.359748e-03 -0.0003564754
#> [8,] 0.000000e+00 -1.239137e-05 0.0057119070 1.898147e-03 0.0019983654
#> [9,] 0.000000e+00 -6.424739e-06 0.0029615376 1.695727e-03 0.0014498199
#> [10,] 0.000000e+00 -1.403169e-05 0.0064680253 3.314125e-03 -0.0004392935
#> [11,] 0.000000e+00 -5.989623e-06 0.0027609674 2.862882e-03 -0.0018901051
#> [12,] 0.000000e+00 -5.165725e-06 0.0023811845 1.096601e-02 -0.0037115649
#> [13,] 0.000000e+00 -3.440096e-06 0.0015857411 8.055950e-03 -0.0035585943
#> [14,] 0.000000e+00 -1.123305e-05 0.0051779691 7.804847e-03 0.0054590882
#> [15,] -1.010735e-04 6.700599e-06 -0.0030886974 9.669789e-03 0.0025703235
#> [16,] 0.000000e+00 -4.939879e-06 0.0022770788 6.187837e-03 0.0102135493
#> [17,] -7.204535e-05 4.776196e-06 -0.0022016276 2.825672e-03 0.0026713678
#> [18,] 0.000000e+00 -8.860647e-06 0.0040843897 3.472132e-03 0.0062625846
#> [19,] 0.000000e+00 -2.472896e-06 0.0011399021 2.714729e-03 0.0027338804
#> [20,] 0.000000e+00 -1.852945e-06 0.0008541308 -4.167585e-05 -0.0016094239
#> [21,] 0.000000e+00 -3.466027e-06 0.0015976945 6.460336e-04 0.0045334465
#> [22,] -2.188674e-05 1.450966e-06 -0.0006688349 2.342643e-04 -0.0016432033
#> [23,] -5.732325e-05 3.800204e-06 -0.0017517363 2.974590e-03 -0.0018193671
#> [24,] 0.000000e+00 -1.079130e-05 0.0049743407 1.254368e-02 -0.0003315649
#> [25,] 0.000000e+00 -3.197543e-06 0.0014739346 3.631535e-03 -0.0025215078
#> [26,] 0.000000e+00 -5.441175e-06 0.0025081554 3.279447e-03 0.0073943172
#> [27,] 0.000000e+00 -8.340946e-06 0.0038448294 7.443059e-03 0.0043155685
#> [28,] 0.000000e+00 -8.806090e-06 0.0040592414 6.023247e-03 0.0063530778
#> [29,] 0.000000e+00 -2.892364e-06 0.0013332597 7.323287e-03 -0.0054334560
#> Viol X19hex Allo Zea Chl_b
#> [1,] -2.991785e-03 -8.395552e-04 -5.248057e-04 -6.019496e-04 0.0118460542
#> [2,] -6.174530e-04 -1.153957e-03 -7.213385e-04 -2.414874e-04 -0.0002826714
#> [3,] -3.719736e-03 -9.899649e-04 -6.188268e-04 -2.071689e-04 0.0068938258
#> [4,] -4.002116e-03 -8.629777e-04 -5.394471e-04 -1.805944e-04 0.0055741998
#> [5,] -4.044827e-03 -2.064018e-04 -1.290217e-04 -4.319348e-05 0.0020210463
#> [6,] -4.096586e-03 -7.217263e-05 -4.511509e-05 -1.510349e-05 0.0014604394
#> [7,] -1.885126e-06 4.149549e-04 2.593882e-04 -7.434065e-05 -0.0003949694
#> [8,] -7.464511e-04 3.469920e-04 2.169046e-04 7.261464e-05 -0.0037816724
#> [9,] 7.348941e-04 1.799101e-04 1.124618e-04 3.764960e-05 -0.0036888128
#> [10,] -4.075866e-05 3.929254e-04 2.456176e-04 8.222706e-05 -0.0002753353
#> [11,] -4.979837e-03 1.677257e-04 1.048453e-04 3.509978e-05 0.0046831916
#> [12,] -6.385044e-03 1.446543e-04 0.000000e+00 3.027165e-05 0.0041467486
#> [13,] -8.325314e-03 9.633202e-05 0.000000e+00 2.015930e-05 0.0063670271
#> [14,] 5.678401e-04 3.145559e-04 1.966288e-04 6.582677e-05 -0.0143182751
#> [15,] 1.336983e-03 -1.876350e-04 -1.172906e-04 -3.926616e-05 -0.0113128399
#> [16,] 4.803235e-03 1.383300e-04 8.647006e-05 2.894817e-05 -0.0247241794
#> [17,] 1.245298e-03 -1.337464e-04 -8.360487e-05 -2.798897e-05 -0.0074741412
#> [18,] 8.773357e-04 2.481222e-04 1.551011e-04 5.192425e-05 -0.0136479985
#> [19,] 1.315879e-03 6.924779e-05 4.328678e-05 1.449141e-05 -0.0071702762
#> [20,] -7.203085e-04 5.188750e-05 3.243486e-05 1.085844e-05 0.0034916023
#> [21,] 2.093974e-03 9.705818e-05 6.067104e-05 2.031126e-05 -0.0096961674
#> [22,] -7.499585e-04 -4.063098e-05 -2.539842e-05 -8.502801e-06 0.0032340526
#> [23,] -7.845869e-04 -1.064160e-04 -6.652064e-05 -2.226957e-05 0.0019007062
#> [24,] 1.897016e-04 3.021857e-04 1.888962e-04 6.323807e-05 -0.0059962848
#> [25,] -1.046001e-03 8.953990e-05 5.597137e-05 1.873792e-05 0.0033507415
#> [26,] 1.410100e-03 1.523677e-04 9.524499e-05 3.188581e-05 -0.0161049681
#> [27,] 2.173429e-03 2.335691e-04 1.460040e-04 4.887876e-05 -0.0129150333
#> [28,] 3.070484e-03 2.465944e-04 1.541461e-04 5.160454e-05 -0.0163412589
#> [29,] -2.289536e-03 8.099405e-05 5.062936e-05 1.694954e-05 0.0073057578
#> Tchla
#> [1,] 0.189874712
#> [2,] 0.260980269
#> [3,] 0.223891532
#> [4,] 0.195171976
#> [5,] 0.046680061
#> [6,] 0.016322641
#> [7,] -0.093846653
#> [8,] -0.078476095
#> [9,] -0.040688672
#> [10,] -0.088864432
#> [11,] -0.037933031
#> [12,] -0.032715180
#> [13,] -0.021786554
#> [14,] -0.071140303
#> [15,] 0.042435725
#> [16,] -0.031284868
#> [17,] 0.030248241
#> [18,] -0.056115578
#> [19,] -0.015661155
#> [20,] -0.011734934
#> [21,] -0.021950782
#> [22,] 0.009189147
#> [23,] 0.024067168
#> [24,] -0.068342646
#> [25,] -0.020250440
#> [26,] -0.034459637
#> [27,] -0.052824249
#> [28,] -0.055770064
#> [29,] -0.018317703
Results$`F matrix`
#> Per X19but Fuco Neox Pra Viol X19hex Allo Zea
#> Prasinophytes 0.0000 0.0000 0.0000 0.0718 0.2373 0.0621 0.0000 0.000 0.0297
#> Chlorophytes 0.0000 0.0000 0.0000 0.0418 0.0000 0.4047 0.0000 0.000 0.0103
#> Cryptophytes 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.402 0.0000
#> Diatoms-2 0.0000 0.0000 0.7769 0.0000 0.0000 0.0000 0.0000 0.000 0.0000
#> Dinoflagellates-1 0.4665 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.000 0.0000
#> Haptophytes 0.0000 0.1387 0.0973 0.0000 0.0000 0.0000 0.5726 0.000 0.0000
#> Pelagophytes 0.0000 1.1648 0.9055 0.0000 0.0000 0.0000 0.0000 0.000 0.0000
#> Syn 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.000 1.2008
#> Chl_b Tchla
#> Prasinophytes 0.8920 1
#> Chlorophytes 0.6174 1
#> Cryptophytes 0.0000 1
#> Diatoms-2 0.0000 1
#> Dinoflagellates-1 0.0000 1
#> Haptophytes 0.0000 1
#> Pelagophytes 0.0000 1
#> Syn 0.0000 1
Results$`Class abundances`
#> Prasinophytes Chlorophytes Cryptophytes Diatoms-2 Dinoflagellates-1
#> 1 0.11415345 0.017760362 8.210281e-03 0.09464098 0.0010566129
#> 2 0.02596671 0.002535096 6.660287e-03 0.05327371 0.0004995775
#> 3 0.08644760 0.000000000 2.425845e-02 0.43415727 0.0016497735
#> 4 0.09150323 0.000000000 2.133523e-02 0.43803319 0.0014148487
#> 5 0.06841045 0.000000000 4.141719e-03 0.39271201 0.0002503224
#> 6 0.05109922 0.000000000 8.693199e-05 0.28070172 0.0226109310
#> 7 0.02874819 0.000963134 1.425962e-03 0.13714426 0.0000000000
#> 8 0.01397285 0.000000000 8.867831e-03 0.45558900 0.0000000000
#> 9 0.01813906 0.003064060 1.377094e-01 0.69375518 0.0000000000
#> 10 0.02909102 0.001821201 6.067940e-03 0.09750384 0.0000000000
#> 11 0.15022669 0.000000000 6.901425e-02 0.58178234 0.0000000000
#> 12 0.09304273 0.000000000 0.000000e+00 0.30656949 0.0000000000
#> 13 0.08888919 0.000000000 0.000000e+00 0.18193124 0.0000000000
#> 14 0.15296582 0.000000000 1.910311e-02 0.26801862 0.0000000000
#> 15 0.19585190 0.054422260 8.585848e-02 0.82403425 0.0005781949
#> 16 0.21437060 0.016654663 1.651401e-02 0.23921925 0.0000000000
#> 17 0.46513088 0.087085634 4.294163e-02 0.84545970 0.0005388426
#> 18 0.14896006 0.000000000 2.206536e-02 0.24626376 0.0000000000
#> 19 0.29334798 0.008823141 4.622372e-02 0.50203773 0.0000000000
#> 20 0.22449402 0.019414622 5.954199e-02 0.42003254 0.0000000000
#> 21 0.27270519 0.002177163 3.956266e-02 0.44719765 0.0000000000
#> 22 0.15966551 0.013751518 4.617374e-02 0.77977476 0.0001096826
#> 23 0.13066475 0.010663096 3.706702e-02 0.54808753 0.0002164486
#> 24 0.04753960 0.011474616 2.401721e-02 0.15520283 0.0000000000
#> 25 0.08334978 0.011075382 3.283349e-02 0.21698830 0.0000000000
#> 26 0.08525731 0.000000000 1.917424e-02 0.19407363 0.0000000000
#> 27 0.04231253 0.001053833 1.304852e-02 0.12406303 0.0000000000
#> 28 0.04149765 0.004643577 1.081055e-02 0.10600086 0.0000000000
#> 29 0.09507180 0.002534130 2.211667e-02 0.07857270 0.0000000000
#> Haptophytes Pelagophytes Syn
#> 1 0.21004894 0.012639373 0.000000000
#> 2 0.04445565 0.010248827 0.002070137
#> 3 0.04890870 0.014588293 0.002689922
#> 4 0.04988337 0.016002411 0.002527718
#> 5 0.04063556 0.018789815 0.005260123
#> 6 0.03431373 0.015565380 0.001322075
#> 7 0.03697534 0.006443106 0.000000000
#> 8 0.19882409 0.010000516 0.001245711
#> 9 0.21414986 0.015902305 0.002180125
#> 10 0.06157777 0.008592416 0.001345809
#> 11 0.19541771 0.015982106 0.027237631
#> 12 0.04912996 0.010692079 0.021770069
#> 13 0.04539578 0.012816440 0.011875242
#> 14 0.03243077 0.006887679 0.009884176
#> 15 0.19139905 0.001523416 0.027496641
#> 16 0.06560214 0.013661036 0.005093240
#> 17 0.25822016 0.028809222 0.013153418
#> 18 0.12565300 0.025906675 0.008821836
#> 19 0.18607885 0.028150523 0.009269014
#> 20 0.21934822 0.037471166 0.010598432
#> 21 0.14981024 0.032063958 0.008531546
#> 22 0.22795899 0.011174393 0.010859876
#> 23 0.16878169 0.015564580 0.008021373
#> 24 0.08978395 0.012605268 0.008032291
#> 25 0.09208545 0.011550302 0.007759552
#> 26 0.03561157 0.009251359 0.006405479
#> 27 0.03476806 0.014792389 0.006680167
#> 28 0.03444581 0.007980578 0.006328068
#> 29 0.08163696 0.015995444 0.005541267
Results$Figure
Example with clustering
Clust1 <- Cluster(Sm, minSamplesPerCluster = 14)$cluster.list[[1]]
#> ..done.
# Remove the cluster column/label
Clust1$Clust <- NULL
set.seed("7683")
Results <- simulated_annealing(Clust1, niter = 1)
Results$`condition number`
#> [1] 728.0411
Results$RMSE
#> [1] 0.02819993
Results$MAE
#> Per X19but Fuco Neox Pra Viol
#> 8.532288e-05 1.029630e-05 4.746166e-03 4.346108e-03 3.364625e-03 2.253839e-03
#> X19hex Allo Zea Chl_b Tchla
#> 2.883243e-04 1.750370e-04 7.460491e-05 7.255182e-03 6.520774e-02
Results$Error
#> Per X19but Fuco Neox Pra
#> [1,] -4.522442e-04 2.998121e-05 -0.0138200899 -7.840801e-04 -0.0061179974
#> [2,] -6.216036e-04 4.120877e-05 -0.0189955299 -3.067019e-04 -0.0007864679
#> [3,] -5.332655e-04 3.535246e-05 -0.0162960147 2.472446e-03 -0.0044775819
#> [4,] -4.648612e-04 3.081764e-05 -0.0142056529 2.503969e-03 -0.0035775433
#> [5,] -1.111827e-04 7.370779e-06 -0.0033976227 5.620855e-03 -0.0019343731
#> [6,] -3.887731e-05 2.577344e-06 -0.0011880485 5.380674e-03 -0.0014102286
#> [7,] 0.000000e+00 -1.481838e-05 0.0068306578 3.359748e-03 -0.0003564754
#> [8,] 0.000000e+00 -1.239137e-05 0.0057119070 1.898147e-03 0.0019983654
#> [9,] 0.000000e+00 -6.424739e-06 0.0029615376 1.695727e-03 0.0014498199
#> [10,] 0.000000e+00 -1.403169e-05 0.0064680253 3.314125e-03 -0.0004392935
#> [11,] 0.000000e+00 -5.989623e-06 0.0027609674 2.862882e-03 -0.0018901051
#> [12,] 0.000000e+00 -5.165725e-06 0.0023811845 1.096601e-02 -0.0037115649
#> [13,] 0.000000e+00 -3.440096e-06 0.0015857411 8.055950e-03 -0.0035585943
#> [14,] 0.000000e+00 -1.123305e-05 0.0051779691 7.804847e-03 0.0054590882
#> [15,] -1.010735e-04 6.700599e-06 -0.0030886974 9.669789e-03 0.0025703235
#> [16,] 0.000000e+00 -4.939879e-06 0.0022770788 6.187837e-03 0.0102135493
#> [17,] -7.204535e-05 4.776196e-06 -0.0022016276 2.825672e-03 0.0026713678
#> [18,] 0.000000e+00 -8.860647e-06 0.0040843897 3.472132e-03 0.0062625846
#> [19,] 0.000000e+00 -2.472896e-06 0.0011399021 2.714729e-03 0.0027338804
#> [20,] 0.000000e+00 -1.852945e-06 0.0008541308 -4.167585e-05 -0.0016094239
#> [21,] 0.000000e+00 -3.466027e-06 0.0015976945 6.460336e-04 0.0045334465
#> [22,] -2.188674e-05 1.450966e-06 -0.0006688349 2.342643e-04 -0.0016432033
#> [23,] -5.732325e-05 3.800204e-06 -0.0017517363 2.974590e-03 -0.0018193671
#> [24,] 0.000000e+00 -1.079130e-05 0.0049743407 1.254368e-02 -0.0003315649
#> [25,] 0.000000e+00 -3.197543e-06 0.0014739346 3.631535e-03 -0.0025215078
#> [26,] 0.000000e+00 -5.441175e-06 0.0025081554 3.279447e-03 0.0073943172
#> [27,] 0.000000e+00 -8.340946e-06 0.0038448294 7.443059e-03 0.0043155685
#> [28,] 0.000000e+00 -8.806090e-06 0.0040592414 6.023247e-03 0.0063530778
#> [29,] 0.000000e+00 -2.892364e-06 0.0013332597 7.323287e-03 -0.0054334560
#> Viol X19hex Allo Zea Chl_b
#> [1,] -2.991785e-03 -8.395552e-04 -5.248057e-04 -6.019496e-04 0.0118460542
#> [2,] -6.174530e-04 -1.153957e-03 -7.213385e-04 -2.414874e-04 -0.0002826714
#> [3,] -3.719736e-03 -9.899649e-04 -6.188268e-04 -2.071689e-04 0.0068938258
#> [4,] -4.002116e-03 -8.629777e-04 -5.394471e-04 -1.805944e-04 0.0055741998
#> [5,] -4.044827e-03 -2.064018e-04 -1.290217e-04 -4.319348e-05 0.0020210463
#> [6,] -4.096586e-03 -7.217263e-05 -4.511509e-05 -1.510349e-05 0.0014604394
#> [7,] -1.885126e-06 4.149549e-04 2.593882e-04 -7.434065e-05 -0.0003949694
#> [8,] -7.464511e-04 3.469920e-04 2.169046e-04 7.261464e-05 -0.0037816724
#> [9,] 7.348941e-04 1.799101e-04 1.124618e-04 3.764960e-05 -0.0036888128
#> [10,] -4.075866e-05 3.929254e-04 2.456176e-04 8.222706e-05 -0.0002753353
#> [11,] -4.979837e-03 1.677257e-04 1.048453e-04 3.509978e-05 0.0046831916
#> [12,] -6.385044e-03 1.446543e-04 0.000000e+00 3.027165e-05 0.0041467486
#> [13,] -8.325314e-03 9.633202e-05 0.000000e+00 2.015930e-05 0.0063670271
#> [14,] 5.678401e-04 3.145559e-04 1.966288e-04 6.582677e-05 -0.0143182751
#> [15,] 1.336983e-03 -1.876350e-04 -1.172906e-04 -3.926616e-05 -0.0113128399
#> [16,] 4.803235e-03 1.383300e-04 8.647006e-05 2.894817e-05 -0.0247241794
#> [17,] 1.245298e-03 -1.337464e-04 -8.360487e-05 -2.798897e-05 -0.0074741412
#> [18,] 8.773357e-04 2.481222e-04 1.551011e-04 5.192425e-05 -0.0136479985
#> [19,] 1.315879e-03 6.924779e-05 4.328678e-05 1.449141e-05 -0.0071702762
#> [20,] -7.203085e-04 5.188750e-05 3.243486e-05 1.085844e-05 0.0034916023
#> [21,] 2.093974e-03 9.705818e-05 6.067104e-05 2.031126e-05 -0.0096961674
#> [22,] -7.499585e-04 -4.063098e-05 -2.539842e-05 -8.502801e-06 0.0032340526
#> [23,] -7.845869e-04 -1.064160e-04 -6.652064e-05 -2.226957e-05 0.0019007062
#> [24,] 1.897016e-04 3.021857e-04 1.888962e-04 6.323807e-05 -0.0059962848
#> [25,] -1.046001e-03 8.953990e-05 5.597137e-05 1.873792e-05 0.0033507415
#> [26,] 1.410100e-03 1.523677e-04 9.524499e-05 3.188581e-05 -0.0161049681
#> [27,] 2.173429e-03 2.335691e-04 1.460040e-04 4.887876e-05 -0.0129150333
#> [28,] 3.070484e-03 2.465944e-04 1.541461e-04 5.160454e-05 -0.0163412589
#> [29,] -2.289536e-03 8.099405e-05 5.062936e-05 1.694954e-05 0.0073057578
#> Tchla
#> [1,] 0.189874712
#> [2,] 0.260980269
#> [3,] 0.223891532
#> [4,] 0.195171976
#> [5,] 0.046680061
#> [6,] 0.016322641
#> [7,] -0.093846653
#> [8,] -0.078476095
#> [9,] -0.040688672
#> [10,] -0.088864432
#> [11,] -0.037933031
#> [12,] -0.032715180
#> [13,] -0.021786554
#> [14,] -0.071140303
#> [15,] 0.042435725
#> [16,] -0.031284868
#> [17,] 0.030248241
#> [18,] -0.056115578
#> [19,] -0.015661155
#> [20,] -0.011734934
#> [21,] -0.021950782
#> [22,] 0.009189147
#> [23,] 0.024067168
#> [24,] -0.068342646
#> [25,] -0.020250440
#> [26,] -0.034459637
#> [27,] -0.052824249
#> [28,] -0.055770064
#> [29,] -0.018317703
Results$`F matrix`
#> Per X19but Fuco Neox Pra Viol X19hex Allo Zea
#> Prasinophytes 0.0000 0.0000 0.0000 0.0718 0.2373 0.0621 0.0000 0.000 0.0297
#> Chlorophytes 0.0000 0.0000 0.0000 0.0418 0.0000 0.4047 0.0000 0.000 0.0103
#> Cryptophytes 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.402 0.0000
#> Diatoms-2 0.0000 0.0000 0.7769 0.0000 0.0000 0.0000 0.0000 0.000 0.0000
#> Dinoflagellates-1 0.4665 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.000 0.0000
#> Haptophytes 0.0000 0.1387 0.0973 0.0000 0.0000 0.0000 0.5726 0.000 0.0000
#> Pelagophytes 0.0000 1.1648 0.9055 0.0000 0.0000 0.0000 0.0000 0.000 0.0000
#> Syn 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.000 1.2008
#> Chl_b Tchla
#> Prasinophytes 0.8920 1
#> Chlorophytes 0.6174 1
#> Cryptophytes 0.0000 1
#> Diatoms-2 0.0000 1
#> Dinoflagellates-1 0.0000 1
#> Haptophytes 0.0000 1
#> Pelagophytes 0.0000 1
#> Syn 0.0000 1
Results$`Class abundances`
#> Prasinophytes Chlorophytes Cryptophytes Diatoms-2 Dinoflagellates-1
#> 1 0.11415345 0.017760362 8.210281e-03 0.09464098 0.0010566129
#> 2 0.02596671 0.002535096 6.660287e-03 0.05327371 0.0004995775
#> 3 0.08644760 0.000000000 2.425845e-02 0.43415727 0.0016497735
#> 4 0.09150323 0.000000000 2.133523e-02 0.43803319 0.0014148487
#> 5 0.06841045 0.000000000 4.141719e-03 0.39271201 0.0002503224
#> 6 0.05109922 0.000000000 8.693199e-05 0.28070172 0.0226109310
#> 7 0.02874819 0.000963134 1.425962e-03 0.13714426 0.0000000000
#> 8 0.01397285 0.000000000 8.867831e-03 0.45558900 0.0000000000
#> 9 0.01813906 0.003064060 1.377094e-01 0.69375518 0.0000000000
#> 10 0.02909102 0.001821201 6.067940e-03 0.09750384 0.0000000000
#> 11 0.15022669 0.000000000 6.901425e-02 0.58178234 0.0000000000
#> 12 0.09304273 0.000000000 0.000000e+00 0.30656949 0.0000000000
#> 13 0.08888919 0.000000000 0.000000e+00 0.18193124 0.0000000000
#> 14 0.15296582 0.000000000 1.910311e-02 0.26801862 0.0000000000
#> 15 0.19585190 0.054422260 8.585848e-02 0.82403425 0.0005781949
#> 16 0.21437060 0.016654663 1.651401e-02 0.23921925 0.0000000000
#> 17 0.46513088 0.087085634 4.294163e-02 0.84545970 0.0005388426
#> 18 0.14896006 0.000000000 2.206536e-02 0.24626376 0.0000000000
#> 19 0.29334798 0.008823141 4.622372e-02 0.50203773 0.0000000000
#> 20 0.22449402 0.019414622 5.954199e-02 0.42003254 0.0000000000
#> 21 0.27270519 0.002177163 3.956266e-02 0.44719765 0.0000000000
#> 22 0.15966551 0.013751518 4.617374e-02 0.77977476 0.0001096826
#> 23 0.13066475 0.010663096 3.706702e-02 0.54808753 0.0002164486
#> 24 0.04753960 0.011474616 2.401721e-02 0.15520283 0.0000000000
#> 25 0.08334978 0.011075382 3.283349e-02 0.21698830 0.0000000000
#> 26 0.08525731 0.000000000 1.917424e-02 0.19407363 0.0000000000
#> 27 0.04231253 0.001053833 1.304852e-02 0.12406303 0.0000000000
#> 28 0.04149765 0.004643577 1.081055e-02 0.10600086 0.0000000000
#> 29 0.09507180 0.002534130 2.211667e-02 0.07857270 0.0000000000
#> Haptophytes Pelagophytes Syn
#> 1 0.21004894 0.012639373 0.000000000
#> 2 0.04445565 0.010248827 0.002070137
#> 3 0.04890870 0.014588293 0.002689922
#> 4 0.04988337 0.016002411 0.002527718
#> 5 0.04063556 0.018789815 0.005260123
#> 6 0.03431373 0.015565380 0.001322075
#> 7 0.03697534 0.006443106 0.000000000
#> 8 0.19882409 0.010000516 0.001245711
#> 9 0.21414986 0.015902305 0.002180125
#> 10 0.06157777 0.008592416 0.001345809
#> 11 0.19541771 0.015982106 0.027237631
#> 12 0.04912996 0.010692079 0.021770069
#> 13 0.04539578 0.012816440 0.011875242
#> 14 0.03243077 0.006887679 0.009884176
#> 15 0.19139905 0.001523416 0.027496641
#> 16 0.06560214 0.013661036 0.005093240
#> 17 0.25822016 0.028809222 0.013153418
#> 18 0.12565300 0.025906675 0.008821836
#> 19 0.18607885 0.028150523 0.009269014
#> 20 0.21934822 0.037471166 0.010598432
#> 21 0.14981024 0.032063958 0.008531546
#> 22 0.22795899 0.011174393 0.010859876
#> 23 0.16878169 0.015564580 0.008021373
#> 24 0.08978395 0.012605268 0.008032291
#> 25 0.09208545 0.011550302 0.007759552
#> 26 0.03561157 0.009251359 0.006405479
#> 27 0.03476806 0.014792389 0.006680167
#> 28 0.03444581 0.007980578 0.006328068
#> 29 0.08163696 0.015995444 0.005541267
Results$Figure
Example using non-default values
#Create Fm (F matrix). Alternatively, a .csv file can be uploaded.
#Create Fm (F matrix). Alternatively, a .csv file can be uploaded.
Fu <- data.frame(
Per = c(0, 0, 0, 0, 1, 0, 0, 0),
X19but = c(0, 0, 0, 0, 0, 1, 1, 0),
Fuco = c(0, 0, 0, 1, 0, 1, 1, 0),
Pra = c(1, 0, 0, 0, 0, 0, 0, 0),
X19hex = c(0, 0, 0, 0, 0, 1, 0, 0),
Allo = c(0, 0, 1, 0, 0, 0, 0, 0),
Zea = c(1, 1, 0, 0, 0, 0, 0, 1),
Chl_b = c(1, 1, 0, 0, 0, 0, 0, 0),
Tchla = c(1, 1, 1, 1, 1, 1, 1, 1)
)
rownames(Fu) <- c(
"Prasinophytes", "Chlorophytes", "Cryptophytes"
, "Diatoms-2", "Dinoflagellates-1",
"Haptophytes", "Pelagophytes", "Syn"
)
Min_max <- data.frame(
Class = c(
"Syn", "Chlorophytes", "Chlorophytes", "Prasinophytes", "Prasinophytes",
"Prasinophytes", "Cryptophytes", "Diatoms-2", "Diatoms-2", "Pelagophytes",
"Pelagophytes", "Pelagophytes", "Dinoflagellates-1", "Haptophytes",
"Haptophytes", "Haptophytes", "Haptophytes", "Diatoms-2", "Cryptophytes",
"Prasinophytes", "Chlorophytes", "Syn", "Dinoflagellates-1", "Pelagophytes"
),
Pig_Abbrev = c(
"Zea", "Zea", "Chl_b", "Pra", "Zea", "Chl_b", "Allo", "Chl_c3",
"Fuco", "Chl_c3", "X19but", "Fuco", "Per", "X19but", "X19hex",
"Fuco", "Tchla", "Tchla", "Tchla", "Tchla", "Tchla", "Tchla", "Tchla",
"Tchla"
),
min = as.numeric(c(
0.0800, 0.0063, 0.1666, 0.0642, 0.0151, 0.4993, 0.2118, 0.0189,
0.3315, 0.1471, 0.2457, 0.3092, 0.3421, 0.0819, 0.2107, 0.0090,
1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000
)),
max = as.numeric(c(
1.2123, 0.0722, 0.9254, 0.4369, 0.1396, 0.9072, 0.5479, 0.1840,
0.9332, 0.2967, 1.0339, 1.2366, 0.8650, 0.2872, 1.3766, 0.4689,
1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000
))
)
set.seed("7683")
Results <- simulated_annealing(
S = Sm,
F = Fu,
user_defined_min_max = Min_max,
do_matrix_checks = TRUE,
niter = 1,
step = 0.01,
weight.upper.bound = 30
)
set.seed("7683")
Results <- simulated_annealing(
S = Sm,
F = Fu,
user_defined_min_max = Min_max,
do_matrix_checks = TRUE,
niter = 1,
step = 0.01,
weight.upper.bound = 30
)
Results$`condition number`
#> [1] 1246.385
Results$RMSE
#> [1] 0.02172976
Results$MAE
#> Per X19but Fuco Pra X19hex Allo
#> 5.760788e-05 2.969032e-05 3.341336e-03 2.608691e-03 1.264442e-04 1.467274e-04
#> Zea Chl_b Tchla
#> 1.377911e-03 4.665555e-03 4.794013e-02
Results$Error
#> Per X19but Fuco Pra X19hex
#> [1,] -1.540353e-04 -4.443987e-05 -5.001243e-03 2.387518e-03 -1.892591e-04
#> [2,] -4.407218e-04 -1.271502e-04 -1.430942e-02 2.905187e-03 -5.415031e-04
#> [3,] -2.789685e-04 -8.048366e-05 -9.057595e-03 2.016773e-03 -3.427612e-04
#> [4,] -2.566387e-04 -7.404139e-05 -8.332585e-03 1.971743e-03 -3.153251e-04
#> [5,] -6.912664e-05 -1.994334e-05 -2.244415e-03 4.556748e-04 -8.493406e-05
#> [6,] -3.495682e-05 -1.008520e-05 -1.134983e-03 6.271547e-04 -4.295051e-05
#> [7,] 0.000000e+00 3.199972e-05 3.601235e-03 4.125569e-04 1.362794e-04
#> [8,] 0.000000e+00 7.954242e-06 8.951668e-04 2.019758e-03 3.387527e-05
#> [9,] 0.000000e+00 1.592528e-06 1.792223e-04 1.446277e-03 6.782205e-06
#> [10,] 0.000000e+00 2.576880e-05 2.900009e-03 -4.195474e-04 1.097433e-04
#> [11,] 0.000000e+00 2.422799e-05 2.726607e-03 -5.535725e-04 1.031814e-04
#> [12,] 0.000000e+00 3.898821e-05 4.387716e-03 -8.908209e-04 1.660417e-04
#> [13,] 0.000000e+00 3.437586e-05 3.868644e-03 -7.854359e-04 1.463988e-04
#> [14,] 0.000000e+00 2.975730e-05 3.348873e-03 6.603140e-03 1.267294e-04
#> [15,] -1.863894e-04 -5.377415e-05 -6.051719e-03 1.505595e-03 -2.290116e-04
#> [16,] -2.192229e-06 -6.324676e-07 -7.117763e-05 1.112948e-02 -2.693533e-06
#> [17,] -1.352676e-04 -3.902530e-05 -4.391890e-03 1.844555e-03 -1.661997e-04
#> [18,] 0.000000e+00 1.660517e-05 1.868739e-03 6.898358e-03 7.071758e-05
#> [19,] -3.749984e-05 -1.081887e-05 -1.217551e-03 3.350522e-03 -4.607506e-05
#> [20,] 0.000000e+00 1.415749e-05 1.593278e-03 -8.877482e-05 6.029347e-05
#> [21,] -9.153627e-06 -2.640862e-06 -2.972014e-04 5.411871e-03 -1.124682e-05
#> [22,] -2.136934e-05 -6.165148e-06 -6.938230e-04 1.408642e-04 -2.625593e-05
#> [23,] -4.430863e-05 -1.278323e-05 -1.438619e-03 2.920773e-04 -5.444082e-05
#> [24,] 0.000000e+00 2.419299e-05 2.722668e-03 -5.527728e-04 1.030323e-04
#> [25,] 0.000000e+00 2.553948e-05 2.874202e-03 -5.835380e-04 1.087667e-04
#> [26,] 0.000000e+00 8.869575e-06 9.981780e-04 8.070696e-03 3.777346e-05
#> [27,] 0.000000e+00 2.948775e-05 3.318538e-03 5.160518e-03 1.255815e-04
#> [28,] 0.000000e+00 2.182335e-05 2.455990e-03 6.128883e-03 9.294058e-05
#> [29,] 0.000000e+00 4.369520e-05 4.917439e-03 -9.983685e-04 1.860877e-04
#> Allo Zea Chl_b Tchla
#> [1,] -2.400743e-04 -6.818570e-03 2.371929e-05 0.071755809
#> [2,] -6.868943e-04 -4.513605e-04 -7.234509e-03 0.205305833
#> [3,] -4.347911e-04 -1.149024e-03 -4.248508e-03 0.129954705
#> [4,] -3.999885e-04 -1.622101e-03 -3.691928e-03 0.119552557
#> [5,] -1.077385e-04 -7.079531e-05 -1.134723e-03 0.032201955
#> [6,] -5.448253e-05 -1.961634e-03 1.641019e-04 0.016284284
#> [7,] 1.728698e-04 -4.950825e-03 3.566148e-03 -0.051669059
#> [8,] 4.297063e-05 2.823614e-05 -3.824066e-03 -0.012843491
#> [9,] 8.603197e-06 5.653189e-06 -2.789617e-03 -0.002571410
#> [10,] 1.392089e-04 -7.300278e-04 1.780952e-03 -0.041608161
#> [11,] 1.308851e-04 8.600506e-05 1.378509e-03 -0.039120259
#> [12,] 0.000000e+00 1.384012e-04 2.218326e-03 -0.062953169
#> [13,] 0.000000e+00 1.220282e-04 1.955896e-03 -0.055505746
#> [14,] 1.607557e-04 1.056331e-04 -1.245496e-02 -0.048048281
#> [15,] -2.905002e-04 -1.908887e-04 -3.597588e-03 0.086827618
#> [16,] -3.416735e-06 -7.188582e-03 -1.599866e-02 0.001021228
#> [17,] -2.108236e-04 -4.764176e-03 -4.480252e-04 0.063013059
#> [18,] 8.970494e-05 5.894541e-05 -1.319301e-02 -0.026811910
#> [19,] -5.844601e-05 -3.814780e-03 -3.685879e-03 0.017468928
#> [20,] 7.648201e-05 -1.089069e-03 1.242080e-03 -0.022859707
#> [21,] -1.426654e-05 -4.000149e-03 -7.419989e-03 0.004264126
#> [22,] -3.330554e-05 -2.188518e-05 -3.507807e-04 0.009954692
#> [23,] -6.905795e-05 -4.537820e-05 -7.273323e-04 0.020640730
#> [24,] 1.306961e-04 8.588080e-05 1.376517e-03 -0.039063743
#> [25,] 1.379701e-04 9.066061e-05 1.453129e-03 -0.041237884
#> [26,] 4.791547e-05 3.148541e-05 -1.556718e-02 -0.014321454
#> [27,] 1.592996e-04 1.046763e-04 -9.655891e-03 -0.047613044
#> [28,] 1.178947e-04 7.746901e-05 -1.163294e-02 -0.035237552
#> [29,] 2.360515e-04 1.551102e-04 2.486142e-03 -0.070553421
Results$`F matrix`
#> Per X19but Fuco Pra X19hex Allo Zea Chl_b Tchla
#> Prasinophytes 0.0000 0.0000 0.0000 0.2279 0.000 0.0000 0.0919 0.8640 1
#> Chlorophytes 0.0000 0.0000 0.0000 0.0000 0.000 0.0000 0.0118 0.2268 1
#> Cryptophytes 0.0000 0.0000 0.0000 0.0000 0.000 0.3321 0.0000 0.0000 1
#> Diatoms-2 0.0000 0.0000 0.8419 0.0000 0.000 0.0000 0.0000 0.0000 1
#> Dinoflagellates-1 0.5176 0.0000 0.0000 0.0000 0.000 0.0000 0.0000 0.0000 1
#> Haptophytes 0.0000 0.1310 0.1053 0.0000 0.894 0.0000 0.0000 0.0000 1
#> Pelagophytes 0.0000 0.6849 0.5205 0.0000 0.000 0.0000 0.0000 0.0000 1
#> Syn 0.0000 0.0000 0.0000 0.0000 0.000 0.0000 0.5054 0.0000 1
Results$`Class abundances`
#> Prasinophytes Chlorophytes Cryptophytes Diatoms-2 Dinoflagellates-1
#> 1 0.06105833 0.1990376885 0.0070029011 0.05694234 2.482309e-04
#> 2 0.01828905 0.0350763698 0.0069735610 0.04052284 2.746169e-04
#> 3 0.04003214 0.1832299487 0.0233391511 0.31687606 6.315298e-04
#> 4 0.05174144 0.1584216877 0.0214629525 0.33514306 5.949039e-04
#> 5 0.05852206 0.0525924650 0.0048017729 0.35050118 1.348690e-04
#> 6 0.04628561 0.0289996797 0.0001257441 0.25875623 2.036438e-02
#> 7 0.03102206 0.0000000000 0.0019730073 0.13798702 0.000000e+00
#> 8 0.01627271 0.0000000000 0.0127580863 0.47748504 0.000000e+00
#> 9 0.02028450 0.0000000000 0.1788768956 0.68834971 0.000000e+00
#> 10 0.03304855 0.0009664837 0.0081552127 0.09931081 0.000000e+00
#> 11 0.14517490 0.0642408514 0.0832722198 0.53387535 0.000000e+00
#> 12 0.08117559 0.0451685318 0.0000000000 0.26589364 0.000000e+00
#> 13 0.07939196 0.0384453911 0.0000000000 0.15590970 0.000000e+00
#> 14 0.16292612 0.0000000000 0.0243302871 0.26087948 0.000000e+00
#> 15 0.23598080 0.0000000000 0.1144974301 0.83377275 1.014099e-03
#> 16 0.23590672 0.0000000000 0.0216475409 0.23819570 4.798564e-06
#> 17 0.53052134 0.0653254799 0.0567307653 0.83706307 9.394163e-04
#> 18 0.16187643 0.0000000000 0.0285198402 0.24256379 0.000000e+00
#> 19 0.32075065 0.0000000000 0.0603616163 0.49828819 1.553036e-04
#> 20 0.21661296 0.1104834137 0.0703885346 0.37615700 0.000000e+00
#> 21 0.29258255 0.0000000000 0.0508481651 0.43735952 3.321923e-05
#> 22 0.14814749 0.1387954008 0.0560138433 0.71755858 9.554773e-05
#> 23 0.11891731 0.1062375285 0.0445581140 0.49948575 1.474983e-04
#> 24 0.05295877 0.0077005651 0.0308795322 0.15235979 0.000000e+00
#> 25 0.07661799 0.0601020386 0.0381094140 0.19072492 0.000000e+00
#> 26 0.09081140 0.0000000000 0.0242271266 0.18713018 0.000000e+00
#> 27 0.04316930 0.0000000000 0.0159703163 0.11605087 0.000000e+00
#> 28 0.04569986 0.0000000000 0.0136732671 0.10235937 0.000000e+00
#> 29 0.07940435 0.0555712748 0.0240573205 0.06305842 0.000000e+00
#> Haptophytes Pelagophytes Syn
#> 1 0.10417599 0.03004452 0.000000000
#> 2 0.02454977 0.01838375 0.001640034
#> 3 0.02474948 0.02384169 0.000000000
#> 4 0.02644976 0.02688619 0.000000000
#> 5 0.02514533 0.03427030 0.004232025
#> 6 0.02194347 0.02922489 0.000000000
#> 7 0.02572588 0.01499203 0.000000000
#> 8 0.14368310 0.03689270 0.001408358
#> 9 0.14705969 0.04714670 0.003182514
#> 10 0.04321779 0.02130115 0.000000000
#> 11 0.12510901 0.04264135 0.045347038
#> 12 0.02981800 0.02091672 0.038231851
#> 13 0.02730204 0.02387892 0.015979875
#> 14 0.02195285 0.01488997 0.004311483
#> 15 0.13347029 0.01970454 0.042724278
#> 16 0.04501592 0.03034426 0.000000000
#> 17 0.17633325 0.07442616 0.000000000
#> 18 0.08546430 0.05722432 0.002022010
#> 19 0.12743977 0.06693543 0.000000000
#> 20 0.13765510 0.07960397 0.000000000
#> 21 0.10124657 0.06997838 0.000000000
#> 22 0.14614628 0.03732076 0.005390572
#> 23 0.10723226 0.03975156 0.002736478
#> 24 0.06098498 0.03021600 0.013556133
#> 25 0.05682837 0.02600165 0.007257886
#> 26 0.02379894 0.01928751 0.004518430
#> 27 0.02258920 0.02823695 0.010701883
#> 28 0.02304180 0.01696960 0.009963192
#> 29 0.04749637 0.03065805 0.001223182
Results$Figure
Helper functions
Matrix_checks
This function will perform checks on the F and S matrices. If the columns sum is 0 or very small it will be eliminated from both the S and F matrix. To use this function, naming for both pigments and phytoplankton classes must follow the same conventions as the default values. The output of this function will be new S and F matrices.
Arguments:
S = S matrix
F = F matrix
MC <- Matrix_checks(Sm, Fm)
Snew <- MC$Snew
Fnew <- MC$Fnew
Steep_Desc
This algorithm will perform the steepest descent algorithm without being bound by any limits. The results may show unrealistic pig:Chl a ratios for certain groups, although the error can often be very low.
Arguments:
F = F matrix
S = S matrix
num.loops = the number of loops/iterations to perform
MC <- Matrix_checks(Sm, Fm)
Snew <- MC$Snew
Fnew <- MC$Fnew
SDRes <- Steepest_Desc(Fnew, Snew, num.loops = 10)
Bounded_weights
This function determines the weights to use for the S matrix, for which the default upper bound is 30 in the simulated_annealing() function call.
Arguments:
S = sample matrix
weight.upper.bound = maximum weights upper bound
Bounded_weights(Sm, weight.upper.bound = 30)
#> Per X19but Fuco Neox Pra Viol X19hex
#> 30.000000 30.000000 3.405156 30.000000 30.000000 30.000000 15.742517
#> Allo Zea Lut ChlcMGDG18 ChlcMGDG14 Chl_b Tchla
#> 30.000000 30.000000 30.000000 30.000000 30.000000 9.185585 1.000000
NNLS_MF
This performs non-negative least least squares matrix factorization between the S and F matrices. Ensure that Chl a is the final column and that the columns in S and F are in the same order. If the weights are left blank then no weights will be used.
Arguments:
Fn = F matrix
S = sample matrix
cm = weights for each column
MC <- Matrix_checks(Sm, Fm)
Snew <- MC$Snew
Fnew <- MC$Fnew
cm <- Bounded_weights(Snew, weight.upper.bound = 30)
Results <- NNLS_MF(Fnew, Snew, cm)
Results$`F matrix`
#> Per X19but Fuco Neox Pra Viol X19hex Allo Zea Chl_b Tchla
#> Prasinophytes 0 0 0 1 1 1 0 0 1 1 1
#> Chlorophytes 0 0 0 1 0 1 0 0 1 1 1
#> Cryptophytes 0 0 0 0 0 0 0 1 0 0 1
#> Diatoms-2 0 0 1 0 0 0 0 0 0 0 1
#> Dinoflagellates-1 1 0 0 0 0 0 0 0 0 0 1
#> Haptophytes 0 1 1 0 0 0 1 0 0 0 1
#> Pelagophytes 0 1 1 0 0 0 0 0 0 0 1
#> Syn 0 0 0 0 0 0 0 0 1 0 1
Results$RMSE
#> [1] 0.1127568
Results$`C matrix`
#> Prasinophytes Chlorophytes Cryptophytes Diatoms-2 Dinoflagellates-1
#> [1,] 0.088117948 0.00000000 0.0217204089 0.4901801 0.0037567947
#> [2,] 0.055584649 0.00000000 0.0373938768 0.6222451 0.0027804911
#> [3,] 0.023402989 0.00000000 0.0237891848 0.8898721 0.0015045577
#> [4,] 0.025080760 0.00000000 0.0208394859 0.8879702 0.0013748370
#> [5,] 0.027278768 0.00000000 0.0050338409 0.8891283 0.0007088272
#> [6,] 0.024427004 0.00000000 0.0006420380 0.8482800 0.0403115206
#> [7,] 0.029818901 0.00000000 0.0056863026 0.8501687 0.0004333909
#> [8,] 0.006998486 0.00000000 0.0097623255 0.8482667 0.0004993785
#> [9,] 0.007273723 0.00000000 0.0834778062 0.8126633 0.0005630781
#> [10,] 0.041423150 0.00000000 0.0248502005 0.7213906 0.0007292296
#> [11,] 0.033785036 0.00000000 0.0480895900 0.7854960 0.0007137484
#> [12,] 0.047211598 0.00000000 0.0005753971 0.8297532 0.0005753971
#> [13,] 0.065913285 0.00000000 0.0008208615 0.7888618 0.0008208615
#> [14,] 0.088836617 0.00000000 0.0299819886 0.8287089 0.0006540520
#> [15,] 0.058417376 0.00000000 0.0440282484 0.8389594 0.0009788646
#> [16,] 0.125844391 0.00000000 0.0258929304 0.7449531 0.0010843156
#> [17,] 0.085675844 0.00000000 0.0205483370 0.7943691 0.0012253888
#> [18,] 0.080155362 0.00000000 0.0327531006 0.6997688 0.0009135323
#> [19,] 0.077226096 0.00000000 0.0355593296 0.7586179 0.0010293554
#> [20,] 0.065007214 0.00000000 0.0509516342 0.7059805 0.0011235075
#> [21,] 0.078274256 0.00000000 0.0339483113 0.7547636 0.0009751164
#> [22,] 0.031530158 0.00000000 0.0263143309 0.8543388 0.0008336558
#> [23,] 0.037075351 0.00000000 0.0290232371 0.8314658 0.0009196788
#> [24,] 0.062767108 0.00151289 0.0562106906 0.6948740 0.0008153781
#> [25,] 0.058367609 0.00000000 0.0575224093 0.7466852 0.0009684633
#> [26,] 0.069420509 0.00000000 0.0401302883 0.8048198 0.0007330733
#> [27,] 0.060138593 0.00000000 0.0395615803 0.7292408 0.0006281012
#> [28,] 0.075116512 0.00000000 0.0391858968 0.7480381 0.0007317574
#> [29,] 0.109413008 0.00000000 0.0750124557 0.5374235 0.0015472772
#> Haptophytes Pelagophytes Syn
#> [1,] 0.39622477 0.00000000 0.0000000000
#> [2,] 0.28199589 0.00000000 0.0000000000
#> [3,] 0.06143118 0.00000000 0.0000000000
#> [4,] 0.06473471 0.00000000 0.0000000000
#> [5,] 0.06518414 0.01266611 0.0000000000
#> [6,] 0.07389414 0.01244533 0.0000000000
#> [7,] 0.11389271 0.00000000 0.0000000000
#> [8,] 0.13447311 0.00000000 0.0000000000
#> [9,] 0.09602212 0.00000000 0.0000000000
#> [10,] 0.21160678 0.00000000 0.0000000000
#> [11,] 0.10185148 0.00000000 0.0300641351
#> [12,] 0.07127730 0.00000000 0.0506071021
#> [13,] 0.11859426 0.00000000 0.0249889572
#> [14,] 0.05181846 0.00000000 0.0000000000
#> [15,] 0.05761614 0.00000000 0.0000000000
#> [16,] 0.10222524 0.00000000 0.0000000000
#> [17,] 0.09818131 0.00000000 0.0000000000
#> [18,] 0.18640925 0.00000000 0.0000000000
#> [19,] 0.12756732 0.00000000 0.0000000000
#> [20,] 0.17693716 0.00000000 0.0000000000
#> [21,] 0.13203875 0.00000000 0.0000000000
#> [22,] 0.08698308 0.00000000 0.0000000000
#> [23,] 0.10151595 0.00000000 0.0000000000
#> [24,] 0.18371728 0.00000000 0.0001026917
#> [25,] 0.13645632 0.00000000 0.0000000000
#> [26,] 0.08489631 0.00000000 0.0000000000
#> [27,] 0.14672943 0.01494256 0.0087589477
#> [28,] 0.13363978 0.00000000 0.0032879586
#> [29,] 0.27660378 0.00000000 0.0000000000
References
samples <- phytoclass::Sm
# samples <- read.csv()
F_matrix <- phytoclass::Fm
# F_matrix <- read.csv("custom_F_matrix.csv")
min_max_matrix <- phytoclass::min_max
write.csv(min_max_matrix, file="eg_minMax.csv")
phytoclass::simulated_annealing(
samples,
Fmat = F_matrix,
user_defined_min_max = min_max_matrix
)
#>
#> Condition number = 393
#> Iterations: 001 of 500
#> Current error: 0.0285
#> Neighbour's error: 0.0285
#> Temperature (%): 99.1
#> Iterations: 002 of 500
#> Current error: 0.0263
#> Neighbour's error: 0.0263
#> Temperature (%): 98.21
#> Iterations: 003 of 500
#> Current error: 0.0257
#> Neighbour's error: 0.0257
#> Temperature (%): 97.32
#> Iterations: 004 of 500
#> Current error: 0.0257
#> Neighbour's error: 0.0275
#> Temperature (%): 96.45
#> Iterations: 005 of 500
#> Current error: 0.0257
#> Neighbour's error: 0.026
#> Temperature (%): 95.58
#> Iterations: 006 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0255
#> Temperature (%): 94.72
#> Iterations: 007 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0268
#> Temperature (%): 93.87
#> Iterations: 008 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0261
#> Temperature (%): 93.02
#> Iterations: 009 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0255
#> Temperature (%): 92.19
#> Iterations: 010 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0264
#> Temperature (%): 91.36
#> Iterations: 011 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0284
#> Temperature (%): 90.53
#> Iterations: 012 of 500
#> Current error: 0.0255
#> Neighbour's error: 0.0255
#> Temperature (%): 89.72
#> Iterations: 013 of 500
#> Current error: 0.0245
#> Neighbour's error: 0.0245
#> Temperature (%): 88.91
#> Iterations: 014 of 500
#> Current error: 0.0245
#> Neighbour's error: 0.0256
#> Temperature (%): 88.11
#> Iterations: 015 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.0237
#> Temperature (%): 87.32
#> Iterations: 016 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.0269
#> Temperature (%): 86.53
#> Iterations: 017 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.0257
#> Temperature (%): 85.75
#> Iterations: 018 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.0272
#> Temperature (%): 84.98
#> Iterations: 019 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.0263
#> Temperature (%): 84.22
#> Iterations: 020 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.028
#> Temperature (%): 83.46
#> Iterations: 021 of 500
#> Current error: 0.0237
#> Neighbour's error: 0.0274
#> Temperature (%): 82.71
#> Iterations: 022 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0198
#> Temperature (%): 81.96
#> Iterations: 023 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0234
#> Temperature (%): 81.23
#> Iterations: 024 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0269
#> Temperature (%): 80.49
#> Iterations: 025 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0247
#> Temperature (%): 79.77
#> Iterations: 026 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0265
#> Temperature (%): 79.05
#> Iterations: 027 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0242
#> Temperature (%): 78.34
#> Iterations: 028 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0238
#> Temperature (%): 77.64
#> Iterations: 029 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0237
#> Temperature (%): 76.94
#> Iterations: 030 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0262
#> Temperature (%): 76.24
#> Iterations: 031 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0249
#> Temperature (%): 75.56
#> Iterations: 032 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0254
#> Temperature (%): 74.88
#> Iterations: 033 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0276
#> Temperature (%): 74.2
#> Iterations: 034 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0252
#> Temperature (%): 73.54
#> Iterations: 035 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0257
#> Temperature (%): 72.87
#> Iterations: 036 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0231
#> Temperature (%): 72.22
#> Iterations: 037 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0238
#> Temperature (%): 71.57
#> Iterations: 038 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0242
#> Temperature (%): 70.92
#> Iterations: 039 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0249
#> Temperature (%): 70.29
#> Iterations: 040 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0242
#> Temperature (%): 69.65
#> Iterations: 041 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0281
#> Temperature (%): 69.03
#> Iterations: 042 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0263
#> Temperature (%): 68.41
#> Iterations: 043 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0224
#> Temperature (%): 67.79
#> Iterations: 044 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0259
#> Temperature (%): 67.18
#> Iterations: 045 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0231
#> Temperature (%): 66.58
#> Iterations: 046 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0251
#> Temperature (%): 65.98
#> Iterations: 047 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0229
#> Temperature (%): 65.38
#> Iterations: 048 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0267
#> Temperature (%): 64.79
#> Iterations: 049 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0251
#> Temperature (%): 64.21
#> Iterations: 050 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0252
#> Temperature (%): 63.63
#> Iterations: 051 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0266
#> Temperature (%): 63.06
#> Iterations: 052 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0254
#> Temperature (%): 62.49
#> Iterations: 053 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0242
#> Temperature (%): 61.93
#> Iterations: 054 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0263
#> Temperature (%): 61.37
#> Iterations: 055 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.023
#> Temperature (%): 60.82
#> Iterations: 056 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0238
#> Temperature (%): 60.27
#> Iterations: 057 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0233
#> Temperature (%): 59.73
#> Iterations: 058 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0241
#> Temperature (%): 59.19
#> Iterations: 059 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0258
#> Temperature (%): 58.66
#> Iterations: 060 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.023
#> Temperature (%): 58.13
#> Iterations: 061 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0258
#> Temperature (%): 57.61
#> Iterations: 062 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0251
#> Temperature (%): 57.09
#> Iterations: 063 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0253
#> Temperature (%): 56.58
#> Iterations: 064 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.024
#> Temperature (%): 56.07
#> Iterations: 065 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.025
#> Temperature (%): 55.56
#> Iterations: 066 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0231
#> Temperature (%): 55.06
#> Iterations: 067 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0242
#> Temperature (%): 54.57
#> Iterations: 068 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.02
#> Temperature (%): 54.08
#> Iterations: 069 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0241
#> Temperature (%): 53.59
#> Iterations: 070 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0251
#> Temperature (%): 53.11
#> Iterations: 071 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0207
#> Temperature (%): 52.63
#> Iterations: 072 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.023
#> Temperature (%): 52.16
#> Iterations: 073 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0251
#> Temperature (%): 51.69
#> Iterations: 074 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0216
#> Temperature (%): 51.22
#> Iterations: 075 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0241
#> Temperature (%): 50.76
#> Iterations: 076 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0242
#> Temperature (%): 50.3
#> Iterations: 077 of 500
#> Current error: 0.0198
#> Neighbour's error: 0.0235
#> Temperature (%): 49.85
#> Iterations: 078 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0194
#> Temperature (%): 49.4
#> Iterations: 079 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0226
#> Temperature (%): 48.96
#> Iterations: 080 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.023
#> Temperature (%): 48.52
#> Iterations: 081 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0196
#> Temperature (%): 48.08
#> Iterations: 082 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.024
#> Temperature (%): 47.65
#> Iterations: 083 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0217
#> Temperature (%): 47.22
#> Iterations: 084 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0216
#> Temperature (%): 46.79
#> Iterations: 085 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0239
#> Temperature (%): 46.37
#> Iterations: 086 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0208
#> Temperature (%): 45.96
#> Iterations: 087 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0199
#> Temperature (%): 45.54
#> Iterations: 088 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0241
#> Temperature (%): 45.13
#> Iterations: 089 of 500
#> Current error: 0.0194
#> Neighbour's error: 0.0223
#> Temperature (%): 44.73
#> Iterations: 090 of 500
#> Current error: 0.0193
#> Neighbour's error: 0.0193
#> Temperature (%): 44.32
#> Iterations: 091 of 500
#> Current error: 0.017
#> Neighbour's error: 0.017
#> Temperature (%): 43.92
#> Iterations: 092 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0188
#> Temperature (%): 43.53
#> Iterations: 093 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0185
#> Temperature (%): 43.14
#> Iterations: 094 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0192
#> Temperature (%): 42.75
#> Iterations: 095 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0184
#> Temperature (%): 42.36
#> Iterations: 096 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0189
#> Temperature (%): 41.98
#> Iterations: 097 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0231
#> Temperature (%): 41.6
#> Iterations: 098 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0194
#> Temperature (%): 41.23
#> Iterations: 099 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0219
#> Temperature (%): 40.86
#> Iterations: 100 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0213
#> Temperature (%): 40.49
#> Iterations: 101 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0215
#> Temperature (%): 40.13
#> Iterations: 102 of 500
#> Current error: 0.017
#> Neighbour's error: 0.02
#> Temperature (%): 39.77
#> Iterations: 103 of 500
#> Current error: 0.017
#> Neighbour's error: 0.017
#> Temperature (%): 39.41
#> Iterations: 104 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0211
#> Temperature (%): 39.05
#> Iterations: 105 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0175
#> Temperature (%): 38.7
#> Iterations: 106 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0208
#> Temperature (%): 38.35
#> Iterations: 107 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0186
#> Temperature (%): 38.01
#> Iterations: 108 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0212
#> Temperature (%): 37.67
#> Iterations: 109 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0237
#> Temperature (%): 37.33
#> Iterations: 110 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0226
#> Temperature (%): 36.99
#> Iterations: 111 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0195
#> Temperature (%): 36.66
#> Iterations: 112 of 500
#> Current error: 0.017
#> Neighbour's error: 0.0209
#> Temperature (%): 36.33
#> Iterations: 113 of 500
#> Current error: 0.0208
#> Neighbour's error: 0.0208
#> Temperature (%): 36
#> Iterations: 114 of 500
#> Current error: 0.0208
#> Neighbour's error: 0.0222
#> Temperature (%): 35.68
#> Iterations: 115 of 500
#> Current error: 0.0186
#> Neighbour's error: 0.0186
#> Temperature (%): 35.36
#> Iterations: 116 of 500
#> Current error: 0.0186
#> Neighbour's error: 0.0201
#> Temperature (%): 35.04
#> Iterations: 117 of 500
#> Current error: 0.0186
#> Neighbour's error: 0.0193
#> Temperature (%): 34.72
#> Iterations: 118 of 500
#> Current error: 0.0186
#> Neighbour's error: 0.0206
#> Temperature (%): 34.41
#> Iterations: 119 of 500
#> Current error: 0.0186
#> Neighbour's error: 0.0195
#> Temperature (%): 34.1
#> Iterations: 120 of 500
#> Current error: 0.0181
#> Neighbour's error: 0.0181
#> Temperature (%): 33.79
#> Iterations: 121 of 500
#> Current error: 0.0181
#> Neighbour's error: 0.0185
#> Temperature (%): 33.49
#> Iterations: 122 of 500
#> Current error: 0.0181
#> Neighbour's error: 0.0186
#> Temperature (%): 33.19
#> Iterations: 123 of 500
#> Current error: 0.0181
#> Neighbour's error: 0.0189
#> Temperature (%): 32.89
#> Iterations: 124 of 500
#> Current error: 0.0181
#> Neighbour's error: 0.0224
#> Temperature (%): 32.59
#> Iterations: 125 of 500
#> Current error: 0.0181
#> Neighbour's error: 0.0183
#> Temperature (%): 32.3
#> Iterations: 126 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0154
#> Temperature (%): 32.01
#> Iterations: 127 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0188
#> Temperature (%): 31.72
#> Iterations: 128 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.02
#> Temperature (%): 31.44
#> Iterations: 129 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0199
#> Temperature (%): 31.15
#> Iterations: 130 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.016
#> Temperature (%): 30.87
#> Iterations: 131 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0188
#> Temperature (%): 30.59
#> Iterations: 132 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0194
#> Temperature (%): 30.32
#> Iterations: 133 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0162
#> Temperature (%): 30.05
#> Iterations: 134 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0211
#> Temperature (%): 29.78
#> Iterations: 135 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0188
#> Temperature (%): 29.51
#> Iterations: 136 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0194
#> Temperature (%): 29.24
#> Iterations: 137 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.019
#> Temperature (%): 28.98
#> Iterations: 138 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0211
#> Temperature (%): 28.72
#> Iterations: 139 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0199
#> Temperature (%): 28.46
#> Iterations: 140 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.023
#> Temperature (%): 28.2
#> Iterations: 141 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0188
#> Temperature (%): 27.95
#> Iterations: 142 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0211
#> Temperature (%): 27.7
#> Iterations: 143 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0191
#> Temperature (%): 27.45
#> Iterations: 144 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0198
#> Temperature (%): 27.2
#> Iterations: 145 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0169
#> Temperature (%): 26.96
#> Iterations: 146 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0169
#> Temperature (%): 26.71
#> Iterations: 147 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0168
#> Temperature (%): 26.47
#> Iterations: 148 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0162
#> Temperature (%): 26.24
#> Iterations: 149 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0187
#> Temperature (%): 26
#> Iterations: 150 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0194
#> Temperature (%): 25.77
#> Iterations: 151 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0186
#> Temperature (%): 25.53
#> Iterations: 152 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0182
#> Temperature (%): 25.3
#> Iterations: 153 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0204
#> Temperature (%): 25.08
#> Iterations: 154 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0187
#> Temperature (%): 24.85
#> Iterations: 155 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0192
#> Temperature (%): 24.63
#> Iterations: 156 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 24.41
#> Iterations: 157 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0178
#> Temperature (%): 24.19
#> Iterations: 158 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0178
#> Temperature (%): 23.97
#> Iterations: 159 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0184
#> Temperature (%): 23.75
#> Iterations: 160 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0185
#> Temperature (%): 23.54
#> Iterations: 161 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0178
#> Temperature (%): 23.33
#> Iterations: 162 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0192
#> Temperature (%): 23.12
#> Iterations: 163 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0185
#> Temperature (%): 22.91
#> Iterations: 164 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0174
#> Temperature (%): 22.7
#> Iterations: 165 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0204
#> Temperature (%): 22.5
#> Iterations: 166 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0184
#> Temperature (%): 22.3
#> Iterations: 167 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0182
#> Temperature (%): 22.1
#> Iterations: 168 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0192
#> Temperature (%): 21.9
#> Iterations: 169 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0177
#> Temperature (%): 21.7
#> Iterations: 170 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0185
#> Temperature (%): 21.5
#> Iterations: 171 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0168
#> Temperature (%): 21.31
#> Iterations: 172 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0169
#> Temperature (%): 21.12
#> Iterations: 173 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0195
#> Temperature (%): 20.93
#> Iterations: 174 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0166
#> Temperature (%): 20.74
#> Iterations: 175 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0184
#> Temperature (%): 20.55
#> Iterations: 176 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0182
#> Temperature (%): 20.37
#> Iterations: 177 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0181
#> Temperature (%): 20.19
#> Iterations: 178 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0194
#> Temperature (%): 20
#> Iterations: 179 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0192
#> Temperature (%): 19.82
#> Iterations: 180 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.019
#> Temperature (%): 19.65
#> Iterations: 181 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0181
#> Temperature (%): 19.47
#> Iterations: 182 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0187
#> Temperature (%): 19.29
#> Iterations: 183 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0184
#> Temperature (%): 19.12
#> Iterations: 184 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0168
#> Temperature (%): 18.95
#> Iterations: 185 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0202
#> Temperature (%): 18.78
#> Iterations: 186 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0192
#> Temperature (%): 18.61
#> Iterations: 187 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0178
#> Temperature (%): 18.44
#> Iterations: 188 of 500
#> Current error: 0.0182
#> Neighbour's error: 0.0182
#> Temperature (%): 18.27
#> Iterations: 189 of 500
#> Current error: 0.0178
#> Neighbour's error: 0.0178
#> Temperature (%): 18.11
#> Iterations: 190 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0167
#> Temperature (%): 17.95
#> Iterations: 191 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0173
#> Temperature (%): 17.79
#> Iterations: 192 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0192
#> Temperature (%): 17.63
#> Iterations: 193 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0172
#> Temperature (%): 17.47
#> Iterations: 194 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0182
#> Temperature (%): 17.31
#> Iterations: 195 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0173
#> Temperature (%): 17.15
#> Iterations: 196 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0191
#> Temperature (%): 17
#> Iterations: 197 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0183
#> Temperature (%): 16.85
#> Iterations: 198 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0184
#> Temperature (%): 16.69
#> Iterations: 199 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0173
#> Temperature (%): 16.54
#> Iterations: 200 of 500
#> Current error: 0.0167
#> Neighbour's error: 0.0187
#> Temperature (%): 16.4
#> Iterations: 201 of 500
#> Current error: 0.0166
#> Neighbour's error: 0.0166
#> Temperature (%): 16.25
#> Iterations: 202 of 500
#> Current error: 0.0166
#> Neighbour's error: 0.0178
#> Temperature (%): 16.1
#> Iterations: 203 of 500
#> Current error: 0.0166
#> Neighbour's error: 0.0166
#> Temperature (%): 15.96
#> Iterations: 204 of 500
#> Current error: 0.0162
#> Neighbour's error: 0.0162
#> Temperature (%): 15.81
#> Iterations: 205 of 500
#> Current error: 0.0162
#> Neighbour's error: 0.0166
#> Temperature (%): 15.67
#> Iterations: 206 of 500
#> Current error: 0.0162
#> Neighbour's error: 0.0162
#> Temperature (%): 15.53
#> Iterations: 207 of 500
#> Current error: 0.0162
#> Neighbour's error: 0.0176
#> Temperature (%): 15.39
#> Iterations: 208 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0159
#> Temperature (%): 15.25
#> Iterations: 209 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0178
#> Temperature (%): 15.11
#> Iterations: 210 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0161
#> Temperature (%): 14.98
#> Iterations: 211 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.019
#> Temperature (%): 14.84
#> Iterations: 212 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0169
#> Temperature (%): 14.71
#> Iterations: 213 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0171
#> Temperature (%): 14.58
#> Iterations: 214 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0172
#> Temperature (%): 14.45
#> Iterations: 215 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0178
#> Temperature (%): 14.32
#> Iterations: 216 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.017
#> Temperature (%): 14.19
#> Iterations: 217 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0179
#> Temperature (%): 14.06
#> Iterations: 218 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0172
#> Temperature (%): 13.93
#> Iterations: 219 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0166
#> Temperature (%): 13.81
#> Iterations: 220 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0174
#> Temperature (%): 13.68
#> Iterations: 221 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0172
#> Temperature (%): 13.56
#> Iterations: 222 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0167
#> Temperature (%): 13.44
#> Iterations: 223 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0163
#> Temperature (%): 13.32
#> Iterations: 224 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0165
#> Temperature (%): 13.2
#> Iterations: 225 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0172
#> Temperature (%): 13.08
#> Iterations: 226 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0172
#> Temperature (%): 12.96
#> Iterations: 227 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0161
#> Temperature (%): 12.84
#> Iterations: 228 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0177
#> Temperature (%): 12.73
#> Iterations: 229 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.017
#> Temperature (%): 12.61
#> Iterations: 230 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0159
#> Temperature (%): 12.5
#> Iterations: 231 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0161
#> Temperature (%): 12.39
#> Iterations: 232 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0174
#> Temperature (%): 12.28
#> Iterations: 233 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.017
#> Temperature (%): 12.17
#> Iterations: 234 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0168
#> Temperature (%): 12.06
#> Iterations: 235 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0177
#> Temperature (%): 11.95
#> Iterations: 236 of 500
#> Current error: 0.0159
#> Neighbour's error: 0.0175
#> Temperature (%): 11.84
#> Iterations: 237 of 500
#> Current error: 0.0156
#> Neighbour's error: 0.0156
#> Temperature (%): 11.73
#> Iterations: 238 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0154
#> Temperature (%): 11.63
#> Iterations: 239 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 11.52
#> Iterations: 240 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0154
#> Temperature (%): 11.42
#> Iterations: 241 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0175
#> Temperature (%): 11.32
#> Iterations: 242 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 11.22
#> Iterations: 243 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0165
#> Temperature (%): 11.11
#> Iterations: 244 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0167
#> Temperature (%): 11.01
#> Iterations: 245 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 10.92
#> Iterations: 246 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 10.82
#> Iterations: 247 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0163
#> Temperature (%): 10.72
#> Iterations: 248 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0158
#> Temperature (%): 10.62
#> Iterations: 249 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0161
#> Temperature (%): 10.53
#> Iterations: 250 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 10.43
#> Iterations: 251 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0163
#> Temperature (%): 10.34
#> Iterations: 252 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 10.25
#> Iterations: 253 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0164
#> Temperature (%): 10.15
#> Iterations: 254 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 10.06
#> Iterations: 255 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0161
#> Temperature (%): 9.97
#> Iterations: 256 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0158
#> Temperature (%): 9.88
#> Iterations: 257 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0155
#> Temperature (%): 9.79
#> Iterations: 258 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0161
#> Temperature (%): 9.71
#> Iterations: 259 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 9.62
#> Iterations: 260 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.016
#> Temperature (%): 9.53
#> Iterations: 261 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 9.45
#> Iterations: 262 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0166
#> Temperature (%): 9.36
#> Iterations: 263 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0167
#> Temperature (%): 9.28
#> Iterations: 264 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0157
#> Temperature (%): 9.19
#> Iterations: 265 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0164
#> Temperature (%): 9.11
#> Iterations: 266 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0165
#> Temperature (%): 9.03
#> Iterations: 267 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 8.95
#> Iterations: 268 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 8.87
#> Iterations: 269 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0158
#> Temperature (%): 8.79
#> Iterations: 270 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0163
#> Temperature (%): 8.71
#> Iterations: 271 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0155
#> Temperature (%): 8.63
#> Iterations: 272 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0158
#> Temperature (%): 8.55
#> Iterations: 273 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0154
#> Temperature (%): 8.47
#> Iterations: 274 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0158
#> Temperature (%): 8.4
#> Iterations: 275 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0159
#> Temperature (%): 8.32
#> Iterations: 276 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0157
#> Temperature (%): 8.25
#> Iterations: 277 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0156
#> Temperature (%): 8.17
#> Iterations: 278 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0162
#> Temperature (%): 8.1
#> Iterations: 279 of 500
#> Current error: 0.0154
#> Neighbour's error: 0.0162
#> Temperature (%): 8.03
#> Iterations: 280 of 500
#> Current error: 0.0152
#> Neighbour's error: 0.0152
#> Temperature (%): 7.95
#> Iterations: 281 of 500
#> Current error: 0.0152
#> Neighbour's error: 0.0154
#> Temperature (%): 7.88
#> Iterations: 282 of 500
#> Current error: 0.0152
#> Neighbour's error: 0.0157
#> Temperature (%): 7.81
#> Iterations: 283 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0151
#> Temperature (%): 7.74
#> Iterations: 284 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0158
#> Temperature (%): 7.67
#> Iterations: 285 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0154
#> Temperature (%): 7.6
#> Iterations: 286 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0158
#> Temperature (%): 7.53
#> Iterations: 287 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0152
#> Temperature (%): 7.47
#> Iterations: 288 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0159
#> Temperature (%): 7.4
#> Iterations: 289 of 500
#> Current error: 0.0151
#> Neighbour's error: 0.0156
#> Temperature (%): 7.33
#> Iterations: 290 of 500
#> Current error: 0.015
#> Neighbour's error: 0.015
#> Temperature (%): 7.27
#> Iterations: 291 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0157
#> Temperature (%): 7.2
#> Iterations: 292 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 7.14
#> Iterations: 293 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 7.07
#> Iterations: 294 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 7.01
#> Iterations: 295 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 6.95
#> Iterations: 296 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 6.88
#> Iterations: 297 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 6.82
#> Iterations: 298 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0157
#> Temperature (%): 6.76
#> Iterations: 299 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 6.7
#> Iterations: 300 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 6.64
#> Iterations: 301 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 6.58
#> Iterations: 302 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 6.52
#> Iterations: 303 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 6.46
#> Iterations: 304 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 6.4
#> Iterations: 305 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 6.35
#> Iterations: 306 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0158
#> Temperature (%): 6.29
#> Iterations: 307 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 6.23
#> Iterations: 308 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 6.18
#> Iterations: 309 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 6.12
#> Iterations: 310 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 6.07
#> Iterations: 311 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 6.01
#> Iterations: 312 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 5.96
#> Iterations: 313 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 5.9
#> Iterations: 314 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 5.85
#> Iterations: 315 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 5.8
#> Iterations: 316 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0159
#> Temperature (%): 5.74
#> Iterations: 317 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 5.69
#> Iterations: 318 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 5.64
#> Iterations: 319 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 5.59
#> Iterations: 320 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 5.54
#> Iterations: 321 of 500
#> Current error: 0.015
#> Neighbour's error: 0.015
#> Temperature (%): 5.49
#> Iterations: 322 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0157
#> Temperature (%): 5.44
#> Iterations: 323 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 5.39
#> Iterations: 324 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 5.34
#> Iterations: 325 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 5.3
#> Iterations: 326 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 5.25
#> Iterations: 327 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 5.2
#> Iterations: 328 of 500
#> Current error: 0.015
#> Neighbour's error: 0.015
#> Temperature (%): 5.15
#> Iterations: 329 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 5.11
#> Iterations: 330 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 5.06
#> Iterations: 331 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 5.02
#> Iterations: 332 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 4.97
#> Iterations: 333 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 4.93
#> Iterations: 334 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 4.88
#> Iterations: 335 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0154
#> Temperature (%): 4.84
#> Iterations: 336 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0156
#> Temperature (%): 4.79
#> Iterations: 337 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 4.75
#> Iterations: 338 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 4.71
#> Iterations: 339 of 500
#> Current error: 0.015
#> Neighbour's error: 0.015
#> Temperature (%): 4.67
#> Iterations: 340 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 4.62
#> Iterations: 341 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 4.58
#> Iterations: 342 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 4.54
#> Iterations: 343 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0153
#> Temperature (%): 4.5
#> Iterations: 344 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 4.46
#> Iterations: 345 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0155
#> Temperature (%): 4.42
#> Iterations: 346 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 4.38
#> Iterations: 347 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0151
#> Temperature (%): 4.34
#> Iterations: 348 of 500
#> Current error: 0.015
#> Neighbour's error: 0.0152
#> Temperature (%): 4.3
#> Iterations: 349 of 500
#> Current error: 0.015
#> Neighbour's error: 0.015
#> Temperature (%): 4.26
#> Iterations: 350 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 4.22
#> Iterations: 351 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0155
#> Temperature (%): 4.19
#> Iterations: 352 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 4.15
#> Iterations: 353 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 4.11
#> Iterations: 354 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 4.07
#> Iterations: 355 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 4.04
#> Iterations: 356 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 4
#> Iterations: 357 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.97
#> Iterations: 358 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.93
#> Iterations: 359 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 3.89
#> Iterations: 360 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 3.86
#> Iterations: 361 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.82
#> Iterations: 362 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 3.79
#> Iterations: 363 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.76
#> Iterations: 364 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 3.72
#> Iterations: 365 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.69
#> Iterations: 366 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.66
#> Iterations: 367 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 3.62
#> Iterations: 368 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 3.59
#> Iterations: 369 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.56
#> Iterations: 370 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.53
#> Iterations: 371 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 3.49
#> Iterations: 372 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.46
#> Iterations: 373 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.43
#> Iterations: 374 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 3.4
#> Iterations: 375 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.37
#> Iterations: 376 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.34
#> Iterations: 377 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.31
#> Iterations: 378 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.28
#> Iterations: 379 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.25
#> Iterations: 380 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.22
#> Iterations: 381 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.19
#> Iterations: 382 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 3.16
#> Iterations: 383 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.13
#> Iterations: 384 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.11
#> Iterations: 385 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 3.08
#> Iterations: 386 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 3.05
#> Iterations: 387 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 3.02
#> Iterations: 388 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 3
#> Iterations: 389 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.97
#> Iterations: 390 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.94
#> Iterations: 391 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.92
#> Iterations: 392 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.89
#> Iterations: 393 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0153
#> Temperature (%): 2.86
#> Iterations: 394 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 2.84
#> Iterations: 395 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.81
#> Iterations: 396 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.79
#> Iterations: 397 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.76
#> Iterations: 398 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.74
#> Iterations: 399 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.71
#> Iterations: 400 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.69
#> Iterations: 401 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.66
#> Iterations: 402 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.64
#> Iterations: 403 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.62
#> Iterations: 404 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.59
#> Iterations: 405 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.57
#> Iterations: 406 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.55
#> Iterations: 407 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.52
#> Iterations: 408 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.5
#> Iterations: 409 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.48
#> Iterations: 410 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.46
#> Iterations: 411 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.43
#> Iterations: 412 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.41
#> Iterations: 413 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.39
#> Iterations: 414 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.37
#> Iterations: 415 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.35
#> Iterations: 416 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.33
#> Iterations: 417 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.31
#> Iterations: 418 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.28
#> Iterations: 419 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.26
#> Iterations: 420 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 2.24
#> Iterations: 421 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.22
#> Iterations: 422 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.2
#> Iterations: 423 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.18
#> Iterations: 424 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.16
#> Iterations: 425 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.14
#> Iterations: 426 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.13
#> Iterations: 427 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.11
#> Iterations: 428 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.09
#> Iterations: 429 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.07
#> Iterations: 430 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 2.05
#> Iterations: 431 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 2.03
#> Iterations: 432 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 2.01
#> Iterations: 433 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.99
#> Iterations: 434 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 1.98
#> Iterations: 435 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.96
#> Iterations: 436 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.94
#> Iterations: 437 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.92
#> Iterations: 438 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.91
#> Iterations: 439 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.89
#> Iterations: 440 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 1.87
#> Iterations: 441 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.86
#> Iterations: 442 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.84
#> Iterations: 443 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.82
#> Iterations: 444 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.81
#> Iterations: 445 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.79
#> Iterations: 446 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.77
#> Iterations: 447 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.76
#> Iterations: 448 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.74
#> Iterations: 449 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.73
#> Iterations: 450 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0152
#> Temperature (%): 1.71
#> Iterations: 451 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.7
#> Iterations: 452 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.68
#> Iterations: 453 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.66
#> Iterations: 454 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.65
#> Iterations: 455 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.63
#> Iterations: 456 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.62
#> Iterations: 457 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.61
#> Iterations: 458 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.59
#> Iterations: 459 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.58
#> Iterations: 460 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.56
#> Iterations: 461 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.55
#> Iterations: 462 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.53
#> Iterations: 463 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.52
#> Iterations: 464 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.51
#> Iterations: 465 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.49
#> Iterations: 466 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.48
#> Iterations: 467 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.47
#> Iterations: 468 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.45
#> Iterations: 469 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.44
#> Iterations: 470 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.43
#> Iterations: 471 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.41
#> Iterations: 472 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0151
#> Temperature (%): 1.4
#> Iterations: 473 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.39
#> Iterations: 474 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.38
#> Iterations: 475 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.36
#> Iterations: 476 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.35
#> Iterations: 477 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.34
#> Iterations: 478 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.33
#> Iterations: 479 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.32
#> Iterations: 480 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.3
#> Iterations: 481 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.29
#> Iterations: 482 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.28
#> Iterations: 483 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.27
#> Iterations: 484 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.26
#> Iterations: 485 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.25
#> Iterations: 486 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.24
#> Iterations: 487 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.22
#> Iterations: 488 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.21
#> Iterations: 489 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.2
#> Iterations: 490 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.19
#> Iterations: 491 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.18
#> Iterations: 492 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.17
#> Iterations: 493 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.16
#> Iterations: 494 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.15
#> Iterations: 495 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.14
#> Iterations: 496 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.13
#> Iterations: 497 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.12
#> Iterations: 498 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.11
#> Iterations: 499 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.0149
#> Temperature (%): 1.1
#> Iterations: 500 of 500
#> Current error: 0.0149
#> Neighbour's error: 0.015
#> Temperature (%): 1.09
#> $`F matrix`
#> Per X19but Fuco Neox Pra Viol
#> Prasinophytes 0.0000000 0.0000000 0.0000000 0.10182858 0.2218301 0.04514280
#> Chlorophytes 0.0000000 0.0000000 0.0000000 0.01059029 0.0000000 0.01506751
#> Cryptophytes 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.00000000
#> Diatoms-2 0.0000000 0.0000000 0.7272645 0.00000000 0.0000000 0.00000000
#> Dinoflagellates-1 0.3437968 0.0000000 0.0000000 0.00000000 0.0000000 0.00000000
#> Haptophytes 0.0000000 0.1290161 0.3125049 0.00000000 0.0000000 0.00000000
#> Pelagophytes 0.0000000 1.0920202 0.7309849 0.00000000 0.0000000 0.00000000
#> Syn 0.0000000 0.0000000 0.0000000 0.00000000 0.0000000 0.00000000
#> X19hex Allo Zea Chl_b Tchla
#> Prasinophytes 0.000000 0.0000000 0.132330631 0.9051608 1
#> Chlorophytes 0.000000 0.0000000 0.008485678 0.1666440 1
#> Cryptophytes 0.000000 0.4646961 0.000000000 0.0000000 1
#> Diatoms-2 0.000000 0.0000000 0.000000000 0.0000000 1
#> Dinoflagellates-1 0.000000 0.0000000 0.000000000 0.0000000 1
#> Haptophytes 1.077477 0.0000000 0.000000000 0.0000000 1
#> Pelagophytes 0.000000 0.0000000 0.000000000 0.0000000 1
#> Syn 0.000000 0.0000000 1.204566937 0.0000000 1
#>
#> $RMSE
#> [1] 0.01491279
#>
#> $`condition number`
#> [1] 1667.503
#>
#> $`Class abundances`
#> Prasinophytes Chlorophytes Cryptophytes Diatoms-2 Dinoflagellates-1
#> 1 0.04939037 0.2674506283 0.004336731 0.03779280 1.958845e-04
#> 2 0.01530428 0.0541707929 0.004550274 0.04039466 5.166035e-04
#> 3 0.03861085 0.1925752392 0.014903701 0.33265519 8.924546e-04
#> 4 0.04886145 0.1652013847 0.013819600 0.35545934 8.661670e-04
#> 5 0.06349946 0.0227570950 0.003296498 0.39802849 2.463754e-04
#> 6 0.04661294 0.0085694556 0.000000000 0.28530634 2.950709e-02
#> 7 0.02894467 0.0001189124 0.001392688 0.15063574 0.000000e+00
#> 8 0.01630621 0.0000000000 0.009074061 0.51844382 0.000000e+00
#> 9 0.02208744 0.0000000000 0.129343573 0.77632649 6.638112e-05
#> 10 0.03206256 0.0067671950 0.006034346 0.10968673 0.000000e+00
#> 11 0.16146478 0.0130018934 0.064368301 0.64240339 0.000000e+00
#> 12 0.09724987 0.0000000000 0.000000000 0.32861638 0.000000e+00
#> 13 0.09342096 0.0030390955 0.000000000 0.19784230 0.000000e+00
#> 14 0.15438398 0.0000000000 0.017061724 0.29034083 0.000000e+00
#> 15 0.22868486 0.0640121013 0.076782468 0.88284069 1.513680e-03
#> 16 0.22734357 0.0000000000 0.015607501 0.27030547 5.156988e-05
#> 17 0.42512005 0.2952389173 0.034618265 0.81189544 6.975029e-05
#> 18 0.16142251 0.0000000000 0.021550951 0.28080052 0.000000e+00
#> 19 0.30983739 0.0000000000 0.044002929 0.56613534 5.545317e-04
#> 20 0.19769743 0.1764933517 0.049604298 0.40226666 0.000000e+00
#> 21 0.28016993 0.0000000000 0.037213977 0.50145175 2.704295e-04
#> 22 0.13939336 0.1599654858 0.038434719 0.76882138 0.000000e+00
#> 23 0.11341284 0.1264773637 0.030605891 0.53606462 4.790042e-05
#> 24 0.05793571 0.0200318027 0.022893016 0.17091093 0.000000e+00
#> 25 0.07776052 0.0740261180 0.027468711 0.21076162 0.000000e+00
#> 26 0.08747986 0.0000000000 0.017332751 0.21258301 0.000000e+00
#> 27 0.04541103 0.0000000000 0.011978105 0.13766871 0.000000e+00
#> 28 0.04769479 0.0000000000 0.010215066 0.11960531 0.000000e+00
#> 29 0.08270267 0.0681509675 0.018295620 0.06930753 0.000000e+00
#> Haptophytes Pelagophytes Syn
#> 1 0.07982418 0.019519402 0.000000e+00
#> 2 0.01921001 0.011400539 1.628353e-04
#> 3 0.01878320 0.014279361 0.000000e+00
#> 4 0.02027310 0.016218971 0.000000e+00
#> 5 0.02058727 0.021784807 0.000000e+00
#> 6 0.01754595 0.018158231 0.000000e+00
#> 7 0.02086295 0.009745035 0.000000e+00
#> 8 0.11849494 0.026136800 4.416415e-05
#> 9 0.12340901 0.033163648 5.034586e-04
#> 10 0.03677786 0.014671307 0.000000e+00
#> 11 0.11150925 0.031645856 1.526727e-02
#> 12 0.02671662 0.014830549 1.379091e-02
#> 13 0.02510424 0.017210330 4.290956e-03
#> 14 0.01786675 0.009636891 0.000000e+00
#> 15 0.10471079 0.014409234 8.210369e-03
#> 16 0.03763774 0.020169093 0.000000e+00
#> 17 0.12953501 0.044862054 0.000000e+00
#> 18 0.07433616 0.039560550 0.000000e+00
#> 19 0.10777707 0.045623692 0.000000e+00
#> 20 0.11262193 0.052217323 0.000000e+00
#> 21 0.08584220 0.047100119 0.000000e+00
#> 22 0.11713177 0.025721767 0.000000e+00
#> 23 0.08605538 0.026402504 0.000000e+00
#> 24 0.05227917 0.020954375 3.650770e-03
#> 25 0.04745310 0.017666775 5.054191e-04
#> 26 0.01975543 0.012622539 0.000000e+00
#> 27 0.01955124 0.018963443 3.145990e-03
#> 28 0.01987291 0.011578312 2.740704e-03
#> 29 0.04162188 0.021390295 0.000000e+00
#>
#> $Figure
#>
#> $MAE
#> Per X19but Fuco Neox Pra Viol
#> 5.734827e-05 1.618389e-07 2.417536e-03 2.571818e-03 3.669760e-03 4.677463e-03
#> X19hex Allo Zea Chl_b Tchla
#> 4.663162e-05 7.203730e-05 3.161054e-03 5.510024e-03 3.109256e-02
#>
#> $Error
#> Per X19but Fuco Neox Pra
#> [1,] -8.577831e-05 1.381492e-07 -2.063661e-03 -0.0025966114 0.0047804940
#> [2,] -5.749745e-04 9.260178e-07 -1.383278e-02 -0.0019536153 0.0046580476
#> [3,] -2.811511e-04 4.528043e-07 -6.763953e-03 0.0013016896 0.0018880688
#> [4,] -2.641549e-04 4.254312e-07 -6.355056e-03 0.0011656854 0.0021007296
#> [5,] -8.395392e-05 1.352109e-07 -2.019769e-03 0.0036497393 -0.0004395582
#> [6,] 8.465033e-06 -1.363325e-08 2.036524e-04 0.0036465100 0.0004122764
#> [7,] 0.000000e+00 -3.306304e-07 4.938929e-03 0.0014960184 0.0016495230
#> [8,] 0.000000e+00 -8.362179e-08 1.249135e-03 0.0014833165 0.0020669338
#> [9,] -1.143248e-05 1.841243e-08 -2.750433e-04 0.0013439278 0.0013270945
#> [10,] 0.000000e+00 -1.474631e-07 2.202792e-03 0.0010768938 0.0010763834
#> [11,] 0.000000e+00 -6.505119e-09 9.717292e-05 0.0003555022 -0.0007165001
#> [12,] 0.000000e+00 -1.169847e-07 1.747508e-03 0.0076158168 -0.0026932229
#> [13,] 0.000000e+00 -1.499343e-08 2.239706e-04 0.0038150560 -0.0018515353
#> [14,] 0.000000e+00 -2.999291e-07 4.480316e-03 0.0029530645 0.0086944960
#> [15,] -1.889647e-04 3.043346e-07 -4.546125e-03 0.0070897568 0.0015653142
#> [16,] -1.485495e-05 2.392444e-08 -3.573813e-04 0.0012815187 0.0137769592
#> [17,] -7.258521e-06 1.169012e-08 -1.746260e-04 -0.0006089940 0.0057610304
#> [18,] 0.000000e+00 -1.736456e-08 2.593903e-04 -0.0003554585 0.0091071800
#> [19,] -8.506424e-05 1.369991e-07 -2.046481e-03 -0.0009625304 0.0058478397
#> [20,] 0.000000e+00 -1.563948e-07 2.336212e-03 -0.0031145718 0.0025325210
#> [21,] -4.732099e-05 7.621222e-08 -1.138452e-03 -0.0031064384 0.0083251579
#> [22,] 0.000000e+00 -4.469120e-08 6.675934e-04 -0.0016384017 0.0008970395
#> [23,] -9.726323e-06 1.566461e-08 -2.339966e-04 0.0009417425 0.0009243646
#> [24,] 0.000000e+00 -1.111440e-07 1.660259e-03 0.0098215567 -0.0011097659
#> [25,] 0.000000e+00 -1.940096e-07 2.898100e-03 0.0006594636 -0.0001966912
#> [26,] 0.000000e+00 -7.301175e-08 1.090643e-03 -0.0004811976 0.0097967983
#> [27,] 0.000000e+00 -1.324818e-07 1.979001e-03 0.0044732965 0.0054059004
#> [28,] 0.000000e+00 -7.823179e-08 1.168620e-03 0.0026283454 0.0065041628
#> [29,] 0.000000e+00 -2.073877e-07 3.097941e-03 0.0029660154 0.0003174594
#> Viol X19hex Allo Zea Chl_b
#> [1,] 0.0021341282 -3.980574e-05 -6.346148e-05 -8.539068e-03 0.0016187021
#> [2,] 0.0015409736 -2.668191e-04 -4.253842e-04 -1.641041e-04 -0.0083997959
#> [3,] -0.0042560160 -1.304692e-04 -2.080044e-04 -2.369373e-03 -0.0011074103
#> [4,] -0.0041646937 -1.225820e-04 -1.954300e-04 -3.107937e-03 -0.0005930229
#> [5,] -0.0031810505 -3.895913e-05 -6.211174e-05 -6.148674e-04 -0.0006069997
#> [6,] -0.0029874735 3.928230e-06 0.000000e+00 -4.354772e-03 0.0019544752
#> [7,] 0.0025321416 9.526650e-05 1.518814e-04 -7.560982e-03 0.0034113781
#> [8,] -0.0005665106 2.409445e-05 3.841328e-05 1.481902e-05 -0.0044188375
#> [9,] 0.0015173494 -5.305283e-06 -8.458105e-06 -3.262956e-06 -0.0039143837
#> [10,] 0.0031448873 4.248943e-05 6.774003e-05 -3.601321e-03 0.0001372254
#> [11,] -0.0037313124 1.874359e-06 2.988252e-06 1.152804e-06 0.0022745599
#> [12,] -0.0047579814 3.370750e-05 0.000000e+00 2.073143e-05 0.0004585198
#> [13,] -0.0061931664 4.320146e-06 0.000000e+00 2.657058e-06 0.0023698565
#> [14,] 0.0035830416 8.642036e-05 1.377782e-04 -3.852492e-03 -0.0141359545
#> [15,] 0.0100488672 -8.768975e-05 -1.398020e-04 -5.393261e-05 -0.0122948654
#> [16,] 0.0142654434 -6.893492e-06 -1.099015e-05 -1.378015e-02 -0.0156516900
#> [17,] 0.0124696043 -3.368344e-06 -5.370081e-06 -9.071320e-03 -0.0045188899
#> [18,] 0.0033653770 5.003353e-06 7.976744e-06 -3.884239e-03 -0.0125875390
#> [19,] 0.0056481790 -3.947438e-05 -6.293319e-05 -8.606335e-03 -0.0026800671
#> [20,] 0.0044371616 4.506296e-05 7.184296e-05 -4.741583e-03 0.0016793558
#> [21,] 0.0054093625 -2.195948e-05 -3.500955e-05 -8.796012e-03 -0.0048765063
#> [22,] 0.0020253533 1.287714e-05 2.052976e-05 -1.094054e-03 0.0002390519
#> [23,] 0.0021224280 -4.513536e-06 -7.195838e-06 -1.786489e-03 -0.0012733070
#> [24,] 0.0080603358 3.202457e-05 5.105612e-05 1.969636e-05 -0.0085304680
#> [25,] 0.0046891211 5.590116e-05 8.912207e-05 3.438139e-05 -0.0015427371
#> [26,] 0.0037077934 2.103731e-05 3.353935e-05 -1.369673e-03 -0.0162940160
#> [27,] 0.0046924073 3.817276e-05 6.085805e-05 2.347773e-05 -0.0143228516
#> [28,] 0.0094095264 2.254139e-05 3.593728e-05 1.386383e-05 -0.0164931204
#> [29,] 0.0010047447 5.975587e-05 9.526755e-05 -4.187808e-03 0.0014051073
#> Tchla
#> [1,] 0.026541275
#> [2,] 0.177906940
#> [3,] 0.086992962
#> [4,] 0.081734024
#> [5,] 0.025976778
#> [6,] -0.002619226
#> [7,] -0.063520845
#> [8,] -0.016065453
#> [9,] 0.003537404
#> [10,] -0.028330677
#> [11,] -0.001249766
#> [12,] -0.022475152
#> [13,] -0.002880544
#> [14,] -0.057622505
#> [15,] 0.058468896
#> [16,] 0.004596374
#> [17,] 0.002245910
#> [18,] -0.003336086
#> [19,] 0.026320329
#> [20,] -0.030046631
#> [21,] 0.014641923
#> [22,] -0.008586092
#> [23,] 0.003009491
#> [24,] -0.021353023
#> [25,] -0.037273213
#> [26,] -0.014027048
#> [27,] -0.025452451
#> [28,] -0.015029924
#> [29,] -0.039843418