Git Product home page Git Product logo

cutlet's Introduction

cutlet

cutlet - Panel Cut Optimization Build Status

not production ready

cutlet is my naiive approach on guillotine panel cut optimization, primarily concerned with cutting panels from stock sheets of wood.

There are many commercial solutions available, and quite some Open Source implementations.

This project is implemented in Java 1.8, using Maven. Gui is in JavaFX/FXML.

image

If you want to contribute - please do so, any help would be appreciated.

If you want to use this project - please do so, I would be happy to hear how it is working for you, and what features are missing.

Overview

There are 3 projects:

  • Lib
  • Gui
  • Benchmark

The library implements the data structures and algorithms. Gui will become... well... the GUI. Benchmark runs examples and compares them.

A goal was to implement a solid data structure to provide a good framework for research / surveys.

Goals

  • Platform agnostic
  • easy "getting started" and deployment
  • Java 1.8, Maven, JavaFX
  • built around reusable core library
  • build solid data structure
  • optimization algorithm agnostic / easy to add new algorithms
  • open source
  • enable meaningful evaluation of optimization algorithms
  • translatable gui

Implementation status

This project is in it's very early stages, so don't expect too much.

Lib

  • Basic Data structure
  • Basic algorithms
  • calculate statistics for a generated layout
  • Rotation & grain
  • material database
  • stock database
  • saw kerf / blade thickness

Gui

  • visalize layout
  • run optimization in worker thread
  • i18n prepared
  • save & load (via java serialization)
  • layout in FXML / SceneBuilder
  • panning
  • zooming
  • parts editor / table
  • stock keeping
  • settings/configuration

Benchmark

  • basically works

It is executed as a unit test in "mvn test", also in travis. You can have a look at Build Status to see it's output.

Example output:

Method     dataset          #panels    #sheets     waste%      #cuts  cutlength    fitness
Smart      Data1                  7          1       58.8         12       3378    16214.4
Smart      Random_100            15          2       67.0         29       7651    73449.6
Smart      Random_201            14          2       73.1         28       9014    86534.4
Smart      DataRegal             40          3       22.9         60      37040  3472500.0
Smart      Tisch                 17          2       31.6         25      16104   483120.0
Smart      Data1                  0          0        NaN          0          0        0.0
Naiive     Data1                  7          1       58.8         14       4327    20769.6
Naiive     Random_100            15          1       34.0         30       8267    39681.6
Naiive     Random_201            14          1       46.2         28       8929    42859.2
Naiive     DataRegal             40          3       22.9         68      42208  3957000.0
Naiive     Tisch                 17          2       31.6         30      18020   540600.0
Naiive     Data1                  0          0        NaN          0          0        0.0
SA         Data1                  7          1       58.8         12       3629    17419.2
SA         Random_100            15          1       34.0         28       7055    33864.0
SA         Random_201            14          1       46.2         27       7816    37516.8
SA         DataRegal             40          3       22.9         61      38290  3589687.5
SA         Tisch                 17          2       31.6         25      15020   450600.0
SA         Data1                  0          0        NaN          0          0        0.0
SA2        Data1                  7          1       58.8         12       3629    17419.2
SA2        Random_100            15          1       34.0         29       6993    33566.4
SA2        Random_201            14          1       46.2         27       7739    37147.2
SA2        DataRegal             40          3       22.9         63      38374  3597562.5
SA2        Tisch                 17          2       31.6         25      15580   467400.0
SA2        Data1                  0          0        NaN          0          0        0.0
GA         Data1                  7          1       58.8         12       3629    17419.2
GA         Random_100            15          1       34.0         29       7911    37972.8
GA         Random_201            14          1       46.2         27       8300    39840.0
GA         DataRegal             40          3       22.9         67      38542  3613312.5
GA         Tisch                 17          2       31.6         25      16012   480360.0
GA         Data1                  0          0        NaN          0          0        0.0

Implemented optimization algorithms

TODO

  • attract collaborators
  • collect "must have" features & implement them
  • test suite
  • implement panel editor in GUI
  • add more algorithms
  • find better cost/fitness functions
  • interface to saw
  • cost calculation
  • printing
  • labels, part list,
  • search for more alternatives; populate related work
  • manual layouts
  • saw blade thickness / saw kerf
  • find deluxe simulated annealing framework
  • find deluxe genetic algorithm framework

Dependencies

Project type description
http://jenetics.io/ maven genetic algorithm
https://github.com/google/guava maven general java stuff
https://pathfinder.readme.io/blog/simmulated-annealing maven simulated annealing algorithm
http://cs.gettysburg.edu/~tneller/resources/sls/index.html source another sim. ann.

Compile & run

This project uses Maven to manage library dependencies, build & run.

This means: install maven and execute:

mvn test

The code does not compile on openjdk, the dependency lombok does not work. So the ubuntu users out there should install the oracle jdk.

Related Work

https://github.com/Jack000/SVGnest

Simulated Annealing taken from http://cs.gettysburg.edu/~tneller/resources/sls/index.html

Open source implementations

Project Looks active? Lang Comment
COPanno yes Java french source code?
raskroy SF no C++ / C# english c#, some russian
Cut Micro yes C#
Cutting Problem Java

Commercial Products

Project Looks active? Lang Comment
Optimierung Delphi 1D optimization

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.