JGAP

JGAP 是一款用Java編寫的遺傳算法包,由sourceforce上開發而來。它提供了基本的遺傳算法,你可以使用它來解決一些適合用遺傳算法解決的問題。而且它給出了很多例子程式,可用於我們一些遺傳算法的測試工作。由於它來自於開源組織sourceforce,所以開源的遺傳功能將是研究簡單遺傳算法很好工具。

基本介紹

  • 外文名:JGAP
  • 對象:Configuration對象
  • 類別:遺傳算法包
  • 語言:Java
簡介,構建基因,主要代碼,

簡介

使用JGAP,需要我們自己編寫的部分是
1 創建默認的Configuration對象。用這個對象設定後面一系列的參數。
代碼如下:
Configuration conf = new DefaultConfiguration
2:設定適應度函式。(FitnessFunction)
按照不同的問題的需要編寫不同的適應度函式。自己編寫的適應度函式需要繼承
org.jgap.FitnessFunction
代碼如下:
//BusFitnessFunction 是自己編寫的適應度函式
FitnessFunction myFunc = new BusFitnessFunction
conf.setFitnessFunction(myFunc)

構建基因

開源包已經定義了Gene這個接口,只需我們設定基因的長度,以及基因的具體類型,比如是整數,還是實數。
如下面的代碼:
Gene[] sampleGenes = new Gene[24];//基因長度24
for (int i = 0; i < sampleGenes.length; i++)
sampleGenes[i] = new IntegerGene(conf, 5, 20)
每個基因位是整數,取值範圍為最小為5,最大為20
4:構建染色體(Chromosome)
用上面的基因構成染色體
IChromosome sampleChromosome = new Chromosome(conf, sampleGenes)
conf.setSampleChromosome(sampleChromosome)
5:定義種群(Population)的大小
也就是染色體的個數

主要代碼

conf.setPopulationSize(100)染色體的個數為100
6:初始化種群
隨機初始化種群。
代碼如下:
Genotype population
population = Genotype.randomInitialGenotype(conf)
7種群開始進化
由於不知道具體進化終止的條件,所以就讓種群進化最大次數後終止。
如果種群中存在相同的染色體,那么就重新進化。
代碼如下:
for (int i = 0; i < MAX_ALLOWED_EVOLUTIONS; i++)
if (!uniqueChromosomes(population.getPopulation()))
throw new RuntimeException("Invalid state in generation " + i)
population.evolve
8列印輸出最終的最佳染色體
代碼如下
Chromosome bestSolutionSoFar = population.getFittestChromosome
System.out.println("The best solution has a fitness value of "
+ bestSolutionSoFar.getFitnessValue
System.out.println("It contained the following

相關詞條

熱門詞條

聯絡我們