裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

最適な組合せ

2014年10月31日 | ブログラミング

16 種類のオーダーと,それにかかる日数と売上代金の表がある。同じオーダーを 2 つ以上使うことはできない。同時に 2 つ以上のオーダーは処理できない。代金が最大になるような複数のオーダーの組合せを求めよ。ただし,所要日数の合計は 100 日以内でなければならない。

            所用日数  売上代金
オーダー 1         9      130
オーダー 2        12      150
オーダー 3        20      190
オーダー 4        23      190
オーダー 5        27      230
オーダー 6        33      290
オーダー 7        31      330
オーダー 8         9       70
オーダー 9        30      330
オーダー 10        9      110
オーダー 11        6       90
オーダー 12       34      310
オーダー 13       34      330
オーダー 14       22      190
オーダー 15       25      230
オーダー 16       13      170

fee = rev(c(130, 150, 190, 190, 230, 290, 330, 70, 330, 110, 90, 310, 330, 190, 230, 170))
day = rev(c(9, 12, 20, 23, 27, 33, 31, 9, 30, 9, 6, 34, 34, 22, 25, 13))
library(e1071)
bc = bincombinations(length(fee))
ans = apply(bc, 1, function(x) { x = as.logical(x); ifelse(sum(day[x]) <= 100, sum(fee[x]), 0) })
( max.fee = max(ans) )
apply(bc[ans == max.fee, ], 1, function(x) paste(paste("Order", which(rev(x) == 1)), collapse=", "))


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 最短距離のルート選択 | トップ | 添え字の検索 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事