X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fga-0.10.0%2F__ga_problem_update_state_at_each_generation__.m;fp=octave_packages%2Fga-0.10.0%2F__ga_problem_update_state_at_each_generation__.m;h=990fd5d1ba538f1167a1893e3d99149903c169cc;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/ga-0.10.0/__ga_problem_update_state_at_each_generation__.m b/octave_packages/ga-0.10.0/__ga_problem_update_state_at_each_generation__.m new file mode 100644 index 0000000..990fd5d --- /dev/null +++ b/octave_packages/ga-0.10.0/__ga_problem_update_state_at_each_generation__.m @@ -0,0 +1,48 @@ +## Copyright (C) 2008, 2010 Luca Favatella +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; If not, see . + +## Author: Luca Favatella +## Version: 1.3.1 + +function state = \ + __ga_problem_update_state_at_each_generation__ (state, problem, + private_state) + if ((state.Generation > 0) || isempty (problem.options.InitialScores)) + state.Score(1:problem.options.PopulationSize, 1) = \ + __ga_scores__ (problem, state.Population); + else ## (Generation == 0) && (! isempty (InitialScores)) + nrIS = rows (problem.options.InitialScores); + #assert (rows (problem.options.InitialPopulation) <= problem.options.PopulationSize); ## DEBUG + if (nrIS <= rows (problem.options.InitialPopulation)) + missing_rows = (nrIS+1):problem.options.PopulationSize; + state.Score(1:problem.options.PopulationSize, 1) = \ + [problem.options.InitialScores(:, 1); + (__ga_scores__ (problem, state.Population(missing_rows, :))) + ]; + else + error ("rows (InitialScores) > rows (InitialPopulation)"); + endif + endif + state.Expectation(1, 1:problem.options.PopulationSize) = \ + problem.options.FitnessScalingFcn (state.Score, private_state.nParents); + state.Best(state.Generation + 1, 1) = min (state.Score); +endfunction + + +%!error +%! state.Generation = 0; +%! problem = struct ("fitnessfcn", @rastriginsfcn, "nvars", 2, "options", gaoptimset ("Generations", 10, "InitialScores", [0; 0; 0])); +%! unused = 0; +%! __ga_problem_update_state_at_each_generation__ (state, problem, unused); \ No newline at end of file