iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 19
0
AI & Data

GA Note - 基因演算法的世界系列 第 19

【Day19】GA with you - R Package genalg R套件 genalg (3)

前兩天介紹了genalg中的rbga.bin的用法
那我想要透過這個套件時實作第一個方程式的內容
那今天要使用的就是rbga

Introduction 介紹

Usage用法

rbga(stringMin=c(), 
     stringMax=c(), 
     suggestions=NULL, 
     popSize=200, 
     iters=100, 
     mutationChance=NA, 
     elitism=NA, 
     monitorFunc=NULL, 
     evalFunc=NULL, 
     showSettings=FALSE, 
     verbose=FALSE)

Argument

stringMin:設定每個基因的最小值
stringMax:設定每個基因的最大值
suggestions:染色體的建議列表
popSize:群體的大小,預設值為200
iters:迭代的次數,預設值為100
mutationChance:預設值為 1/(size+1)
elitism:預設值為20%的群體大小
monitorFunc:監控程式
evalFunc:適應函數方程式
showSettings:預設值為False
verbose:預設值為False

實作

今天實際測試後發現
rbga的使用效果好像並沒有那麼理想
測試了很多是都沒有成功
適應函數(和mcga的用法相同)

evaluate <- function(x=c()) {
  returnVal = ((x[1]-7)^2 + (x[2]-77)^2 +(x[3]-777)^2 +(x[4]-7777)^2 +(x[5]-77777)^2)
  returnVal
}

相關的設定

rbga.results = rbga(rep(0.0, times = 5), 
                    rep(99999.9, times = 5), 
                    popSize = 200,
                    iters = 250,
                    evalFunc=evaluate, 
                    verbose=TRUE, 
                    mutationChance=0.05)

輸出結果

summary(rbga.results)

plot(rbga.results)
plot(rbga.results, type="hist")
plot(rbga.results, type="vars")

Day19

這樣看起來看不出結果
透過print把結果顯示出來
可以看初結果和預期的還是有所落差

print(rbga.results$population[1:10,])
         [,1]     [,2]     [,3]     [,4]     [,5]
 [1,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [2,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [3,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [4,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [5,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [6,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [7,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [8,] 10.9838 200.3687 754.1052 7769.776 77776.12
 [9,] 10.9838 200.3687 754.1052 7769.776 77776.12
[10,] 10.9838 200.3687 754.1052 7769.776 77776.12

所以看完結果後,
發現和mcga第二天情況相同
情況並沒有到最好的結果
這邊也是有一樣的狀況
因為設定不適合的參數
所以當找到適合的參數也可以找出很接近的結果

> print(rbga.results$population[1:10,])
          [,1]     [,2]     [,3]     [,4]     [,5]
 [1,] 7.234623 72.92616 788.6307 7856.715 77750.48
 [2,] 7.234623 72.92616 788.6307 7856.715 77750.48
 [3,] 7.234623 72.92616 788.6307 7856.715 77750.48
 [4,] 7.234623 72.92616 788.6307 7856.715 77750.48
 [5,] 7.234623 72.92616 788.6307 7856.715 77750.48

Github程式碼連結


上一篇
【Day18】GA with you - R Package genalg R套件genalg (2)
下一篇
【Day20】GA with you - R Package GA R套件GA
系列文
GA Note - 基因演算法的世界30

尚未有邦友留言

立即登入留言