all files / lib/nodeo/ Utils.js

93.75% Statements 15/16
100% Branches 2/2
80% Functions 4/5
93.33% Lines 14/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                            339× 339× 10576×   339×       500× 500× 11248×   500×                           21568×    
/**
 * Utility functions for NodEO
 * 
 * @license GPL v3
 * @package nodeo
 * @author J. J. Merelo <jjmerelo@gmail.com>
 */
 
// To avoid uncomprehensible radix complaint at charAt
/*jshint -W065 */
/*jshint smarttabs:true */
 
var Utils = exports;
 
// Create a random chromosome
Utils.random= function (length){
    var chromosome = '';
    for ( var i = 0; i < length; i++ ){
	chromosome = chromosome + ((Math.random() >0.5)? "1": "0") ;
    }
    return chromosome;
};
 
// Computes maxOnes fitness
Utils.max_ones = function (chromosome){
    var ones = 0;
    for ( var i=0; i < chromosome.length; i++ ){ 
	ones += parseInt(chromosome.charAt(i));
    }
    return ones;
};
 
// Computes maxOnes fitness
Utils.max_ones_m = function (chromosome){
    return chromosome.string.match(/1/).size;
};
 
/**
* Sum of the floats contained in chromosome (being a vector of floats)
* @author Víctor Rivas <vrivas@ujaen.es>
* @date 26-Oct-2015
* @params chromosome [vector of floats] The chromosome whose members are going to be summed up.
* @return [float] The sum of the values contained in the vector
*/
Utils.sum_ones = function ( chromosome ) {
    return chromosome.reduce( function( prev, curr ) { return prev+curr; }, 0);
}