2015-09-16 56 views
2

的ga函數的我只是無法弄清楚如何使用GA封裝的ga()在R.實現GA封裝

讓我給的什麼,我試圖做一個例子。

我想得到最好的順序,比薩餅應顯示給客戶,以最大限度地銷售他們所有的機會。

讓我們說,我有3個比薩餅,"pizza1", "pizza2", "pizz3"。對於每一個訂單(這個問題有3個可能的訂單),我使用say,fitness(order)函數來計算一些適合度,它返回一些數值。

我想在一個非常大的範圍內實現這件事。

有人可以幫我設置ga()函數的參數。

這裏是我想

library(GA) 

algo <- ga(type = "permutation", fitness = fitness, min= ?, max= ?, maxiter = ?) 

人可以幫我設置最小值,最大值和MAXITER和popsize參數這個問題,他們會怎麼具體內容是爲我通俗地說問題?

+0

親愛的使用GA包作爲包的開發者和維護者,我很高興您使用GA包來解決您的優化問題。但是,閱讀「文檔不是很好」有點令人失望。有幾個原因。包中R函數的幫助/手冊頁必須描述參數和基本用法。它不是作爲主要文檔。我最近添加了一個小插圖,希望給出一些更好的解釋,但該軟件包的主要文檔是以下兩篇文章: –

+1

Scrucca L.(2013)GA:一種用於遺傳算法的包。** Journal 0 統計軟件* *,Vol。 53,第4期,第1-37頁。 http://www.jstatsoft.org/v53/i04 Scrucca L.(2017)關於GA包的一些擴展:混合優化, 並行化和孤島進化,** The R Journal **,9(1),187- 206。 https://journal.r-project.org/archive/2017/RJ-2017-008 這兩篇論文都可以免費下載,並有大量實例進行完整解釋(初步版本中包含更多示例,但匿名裁判員需要刪除其中的一些)。 –

回答

1

文檔不是很好 - 除了type="real-valued"以外沒有其他任何示例。 AFAICT,這似乎工作:

library(GA) 
f <-function(z) sum((z-c(3,2,1))^2) # best order is 1, 2, 3 
result <- ga(type="permutation", fitness=f, 
      min=c(1,1,1), max=c(3,3,3), names=paste0("pizza",1:3)) 
summary(result)$solution 
#  pizza1 pizza2 pizza3 
# [1,]  1  2  3 

因此,這將創建一個適應度函數,f(...)當比薩餅是有序的1,2,3這是最大的。這個函數的參數必須是一個列表(或強制列表:所以,一個向量)與數字元素代表不同的選項。因此,例如(1,2,3)或(3,2,1)等min=...max=...都是指定「最低」和「最高」可能值的向量。

+0

感謝您的解決方案。我有個問題,'z'是什麼?它需要什麼價值?我假定算法將這個'z'傳遞給這個函數,但是究竟是什麼? – user3664020

+0

沒關係,明白了。謝謝! – user3664020

+0

你也可以提供關於'maxiter'的信息嗎? – user3664020