Les algorithmes génétiques démystifiés 47: Économie
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:
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.
/ / / / / / / / / /
« Remplacer Sed et Awk par Ruby: Un dernier exemple ---//---
Remplacer Sed et Awk par Ruby: Récapitulatif »