Giter Club home page Giter Club logo

onedimensionalbinpacking's Introduction

One-dimensional bin packing

Ce solveur du problème de bin packing à une dimension est proposé en réponse au problème [XspeedIt|https://github.com/voyages-sncf-technologies/xspeedit].

Il implémente les heuristiques suivantes :

  • Naive : Prend les items les uns après les autres dans l'ordre où ils se trouvent. Place un item donné dans le container courant si possible. Sinon, utilise un nouveau container et ne revient plus jamais aux containers déjà utilisés.
  • First Fit : Prend les items les uns après les autres dans l'ordre où ils se trouvent. Place un item donné dans le premier container qui peut l'accueillir parmi les containers déjà utilisés, s'il y en a un. Sinon, le place dans un nouveau container.
  • First Fit Decreasing : Trie les items par taille décroissante, puis procède comme l'heuristique First Fit.
  • Best Fit : Prend les items les uns après les autres dans l'ordre où ils se trouvent. Place un item donné dans le container qui sera le plus rempli aprsè que l'item y sera placé.
  • Best Fit Decreasing : Trie les items par taille décroissante, puis procède comme l'heuristique Best Fit.
  • Worst Fit : Prend les items les uns après les autres dans l'ordre où ils se trouvent. Place un item donné dans le container qui sera le moins rempli aprsè que l'item y sera placé.
  • Wost Fit Decreasing : Trie les items par taille décroissante, puis procède comme l'heuristique Best Fit.

Usage

sbt "run items capacity"

où :

  • items est une chaîne de caractères représentant la liste des items à traiter. Chaque caractère de la chaîne représente un item par une taille, comprise entre 1 et 9.
  • capacity est la capacité d'un container
sbt test

lance les tests unitaires

Exemples

sbt "run 163841689525773 10"

Articles : 163841689525773
Capacité : 10
Borne inférieure du nombre de cartons : 8
Robot glouton naïf : 163/8/41/6/8/9/52/5/7/73 => 10 cartons utilisés
Robot glouton (First Fit) : 163/81/46/82/9/55/73/7 => 8 cartons utilisés
Robot glouton (First Fit Decreasing) : 91/82/81/73/73/64/6/55 => 8 cartons utilisés
Robot glouton (Best Fit) : 163/81/46/82/9/55/73/7 => 8 cartons utilisés
Robot glouton (Best Fit Decreasing) : 91/82/81/73/73/64/6/55 => 8 cartons utilisés
Robot glouton (Worst Fit) : 163/8/415/62/8/9/53/7/7 => 9 cartons utilisés
Robot glouton (Worst Fit Decreasing) : 9/81/81/73/72/64/63/55 => 8 cartons utilisés

sbt "run 1638416895257732673497234442 10"

Articles : 1638416895257732673497234442
Capacité : 10
Borne inférieure du nombre de cartons : 14
Robot glouton naïf : 163/8/41/6/8/9/52/5/7/73/26/73/4/9/72/34/442 => 17 cartons utilisés
Robot glouton (First Fit) : 163/81/46/82/9/55/73/72/63/72/432/9/7/44/4 => 15 cartons utilisés
Robot glouton (First Fit Decreasing) : 91/91/82/82/73/73/73/73/64/64/64/55/442/2 => 14 cartons utilisés
Robot glouton (Best Fit) : 163/81/46/82/9/55/73/72/64/73/9/72/34/442 => 14 cartons utilisés
Robot glouton (Best Fit Decreasing) : 91/91/82/82/73/73/73/73/64/64/64/55/442/2 => 14 cartons utilisés
Robot glouton (Worst Fit) : 163/8/415/62/8/9/53/72/7/63/7/423/9/7/44/42 => 16 cartons utilisés
Robot glouton (Worst Fit Decreasing) : 9/9/82/82/73/73/73/73/64/64/64/55/442/211 => 14 cartons utilisés

onedimensionalbinpacking's People

Contributors

marc-caillet avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.