Skip to content

(WIP) Optimizing bin packing constraint solver for Elixir

Notifications You must be signed in to change notification settings

chassisframework/bin_packer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BinPacker

WORK IN PROGRESS

A bin-packing constraint solver/optimizer for Elixir.

See the examples.

Included out of the box:

  • Constraints

    • OnePerBinConstraint - only one ball with a certain attribute value is allowed in the bin (e.g. one dessert per lunchbox)
    • OnePerGroupConstraint - only one ball with a certain attribute value is allowed per bin group (e.g. one admiral per fleet of ships)
  • Optimization Objectives

Implementation

Based on the variable-neighborhood hill-climbing solver from "Efficient local search for several combinatorial optimization problems" by Mirsad Buljubašić and "Variable Neighborhood Search for Google Machine Reassignment problem" by Gavranović, Buljubašić and Demirović, which was designed to solve the 2012 ROADEF/EURO Machine Reassignment Challenge.

This library generalizes Buljubašić et al's solution by allowing completely custom and pluggable constraints and optimization targets. Additionally, candidate solutions are generated directly by the constraint modules themselves, in order to gradually winnow down the search space as constraints are tested (as opposed to generating random solutions and then testing for constraint violation).

Installation

The package can be installed by adding bin_packer to your list of dependencies in mix.exs:

def deps do
  [
    {:bin_packer, "~> 0.1.0"}
  ]
end

The docs can be found at https://hexdocs.pm/bin_packer.

Releases

No releases published

Packages

No packages published

Languages