Xavier Nayrac

Rubyiste accro au TDD, serial blogger, apprenti data scientist, heureux utilisateur de Vim, accordéoniste.
Si vous vous sentez particulièrement généreux, suivez moi sur Twitter.

Les algorithmes génétiques démystifiés 47: Économie

| Comments

Niveau : intermédiaire

La dernière fois on a vu la classe GeneticAlgorithm, qui faisait usage d’une classe IndividualFormatter. Cette classe est le sujet de l’article d’aujourd’hui.

Cette classe, IndividualFormatter, est responsable de la transformation d’un individu de la population en une chaîne de caractères qui véhicule des informations affichables sur cet individu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class IndividualFormatter

  def self.display(individual:, generation:, items:, capacity:)
    profit, cost = Score.profit_and_cost individual, items
    if cost > capacity
      "<invalid> Gen: #{generation} Profit: #{profit} Cost: #{cost}"
    else
      "VALID     Gen: #{generation} Profit: #{profit} Cost: #{cost}"
    end
  end

  def self.display_best_ever(individual:, items:)
    profit, cost = Score.profit_and_cost individual, items
    "----------------------\n"\
    "Best ever\n"\
    "----------------------\n"\
    "Profit: #{profit}\n"\
    "Cost:   #{cost}\n"\
    "Listing:\n"\
    "#{Individual.listing(chromosome: individual.chromosome, items: items)}"
  end
end

La méthode display est utilisée à chaque génération, pour afficher succintement le meilleur individu trouvé jusqu’ici.

La méthode display_best_ever est elle, utilisée à la fin de l’algorithme, pour afficher la meilleure solution avec plus de détails.

À demain.

Articles connexes

Commentaires