原始馬爾泰洛和托特Fortran例程在樂天派R-Forge項目(和不在「柔板」封裝)的「揹包」封裝。不幸的是,這些Fortran代碼無法通過CRAN進行分發。原因是它們是在ACM許可下發布的,與GPL不兼容。我詢問Silvano Martello教授他是否願意改變執照,但他不能或不希望這樣做(正如他明確告訴我的)。
給你一個開始:我想你已經安裝了R或更好的R和RStudio。當你已經開始R,首先你要一次安裝包,將其每次啓動[R重新與加載: (您需要有一個Fortran編譯器可用,但我猜你有。)
> install.packages("knapsack", repos="http://R-Forge.R-project.org")
> library(knapsack)
然後您可以在例如揹包功能上調用help
或example
。目前實施的功能是knapsack
和subsetsum
。幫助頁面將向您展示如何應用這些例程。 p
和w
(利潤和重量)必須是相等長度的整數值的矢量,與p[i]/w[i]
一個嚴格遞減序列:
> p = c(15, 100, 90, 60, 40, 15, 10, 1)
> w = c(2, 20, 20, 30, 40, 30, 60, 10)
> cap = 102
現在,可以調用揹包功能並顯示結果:
> res = knapsack(p, w, cap)
> res
# [1] 1 2 3 4 6
還有子集例程。 「Martello」和「Toth」的其他代碼尚未包裝在「揹包」包中。但如果你有興趣,它可以很容易地完成。這些額外的例程正在解決垃圾箱打包,分配和改變問題。
在R-Forge上,現在有一個包含函數'binpacking'的'knapsack'包的新版本0.3.0。它由Martello和Toth包裝Fortran代碼來解決垃圾箱裝箱問題。我很感謝測試報告和其他類型的反饋。 –