The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Build Status codecov.io

mknapsack

This package solves multiple knapsack problem by assigning items optimally to knapsacks using Mixed Integer Linear Programming (MILP) solver of choice.

Definition of the mknapsack problem

We start with a list of items that we want to order with each assigned a:

Those items should be optimally packed into multiple containers of the a given size (cap). Items should be aded to containers in the way that each container is more profitable than the following one.

Supported solvers

Package implements interface to several solvers which can be set via mknapsack.solver option.

Currently you can choose from those options:

lpsolve is default option.

Example

Solve problem with CBC COIN-OR solver:

set.seed(100)
devtools::install_github("dirkschumacher/rcbc")
devtools::install_github("dirkschumacher/ROI.plugin.cbc")
devtools::install_github("madedotcom/mknapsack")
library(rcbc)
library(ROI)
library(ROI.plugin.cbc)
library(data.table)
library(mknapsack)
options(mknapsack.solver = "cbc")

items <- data.table(
  volume = pmin(rlnorm(100, log(2), log(3)), 15),
  profit = rgamma(100, shape = 1, scale = 100) - 25
)

items[, knapsack := 
  mknapsack(
    profit = profit, 
    volume = volume, 
    cap = 65
  )]

#Aggregate solution to knapsacks
knapsacks <- items[order(knapsack), 
                    .(volume = sum(volume), profit = sum(profit)), 
                    by = knapsack]
knapsacks

#    knapsack volume   profit
# 1:        1 64.89659 5000.27608
# 2:        2 64.40358 1540.40302
# 3:        3 64.97235  340.92516
# 4:        4 53.33824   88.02793
# 5:       NA 91.13399 -272.54349
# 

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.