原マーテロとTothのFortranのルーチンは、オプティR-フォージプロジェクト(および「アダージョ」パッケージでない)の「ナップサック」パッケージで入手可能です。残念ながら、これらの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コードをラップします。レポートやその他のフィードバックをテストすることに感謝します。 –