Code Monkey home page Code Monkey logo

bin_packing_scheduling's Introduction

About

This repository presents two hybrid Genetic Algorithms to solve a combination of production scheduling and bin packing problems in the printing industry. To learn about the problem and the algorithms, refer to the following paper

M.Mostajabdaveh, S.Salman, N.Tahmasbi, Two dimensional guillotine cutting stock and scheduling problem in printing industry, Computers & Operations Research, 2022

Please cite the above paper if you are using the algorithm or data.

Input data

The raw dataset from an actual printing company is available at Mendely Data .

From this dataset, we generated 335 problem instances which can be found in Data/Input directory.

Input file format

The input files are binary files generated by pickle python package storing an object of Input class (please see the Input class in Input.py file)

Generating new problem instances

You can generate more problem instances using Raw Data/Big_Data.xlsx in Mendely Data and the Data/Data_Gen.py .

Usage

You can use either RGA or UGA to solve the problem. Generally, RGA is faster, and UGA provides a better solution. Refer to the paper for a detailed explanation and comparison.

To use the algorithm, you can simply run the following command

python3 runner.py <RGA,UGA> <inputFile> --rep <int> --draw
  • First input is the type of algorithm which should be either RGA or UGA
  • Second input is the input file name located at Data/Input
  • The optional input --rep <int> is the number of times we run the algorithm on the input data (default value is 1). In the case of rep>=2, the output result is the average of the best solution costs and runtime.
  • The optional flag --draw, if given, the algorithm will print detailed information about the best solution and draw the layout of the bin.

Parameters

The algorithm parameters are tuned using a subset of generated instances. However, if you wish to change their values, refer to the Parameters class (line 15 runner.py file).

Contributing

Contributions make the open source community an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion to improve this, please fork the repo and create a pull request. You can also open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

It is distributed under the GPL-3.0 License. See LICENSE for more information.

Contact

Mahdi Mostajabdaveh - [email protected]

Project Link: github.com/mahdims/Bin_packing_scheduling

bin_packing_scheduling's People

Contributors

mahdims avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

bin_packing_scheduling's Issues

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.