view main/ga/inst/__ga_scores__.m @ 9711:d221e75701b0 octave-forge

ga: improve error message
author slackydeb
date Thu, 15 Mar 2012 02:23:42 +0000
parents 2d730c084382
children f21fb48bc6a0
line wrap: on
line source

## Copyright (C) 2008, 2010 Luca Favatella <slackydeb@gmail.com>
##
## 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 <http://www.gnu.org/licenses/>.

## Author: Luca Favatella <slackydeb@gmail.com>
## Version: 5.5.1

function Scores = __ga_scores__ (problem, Population)
  if (strcmp (problem.options.Vectorized, "on")) ## using vectorized evaluation
    if (strcmp (problem.options.UseParallel, "always"))
      warning ("'Vectorized' option is 'on': ignoring 'UseParallel' \
          option, even if it is 'always'");
    endif
    Scores = problem.fitnessfcn (Population);
  else ## not using vectorized evaluation
    if (! strcmp (problem.options.Vectorized, "off"))
      error ("'Vectorized' option must be 'on' or 'off'");
    endif
    if (strcmp (problem.options.UseParallel, "always")) ## using parallel evaluation
      error ("TODO: implement parallel evaluation of objective function");
    else ## using serial evaluation (i.e. loop)
      if (! strcmp (problem.options.UseParallel, "never"))
        error ("'UseParallel' option must be 'always' or 'never'");
      endif
      [nrP ncP] = size (Population);
      tmp = zeros (nrP, 1);
      for index = 1:nrP
        tmp(index, 1) = problem.fitnessfcn (Population(index, 1:ncP));
      endfor
      Scores = tmp(1:nrP, 1);
    endif
  endif
endfunction