Archive for the ‘Simple Cutting Software’ Category

Now we are running on Mac OSX and Linux

Saturday, February 21st, 2015

After 2 years of intense development we have released a new cutting optimization software running natively on Mac OSX and Linux (Ubuntu).

Here is a movie with our Simple Cutting Software X running on Mac:

and here is the same software running on Linux Ubuntu:

Simple Cutting Software v3

Friday, May 30th, 2014
We are happy to announce version 3 of our Simple Cutting Software.

There are many new things here, such as:

– a new column in the Parts table where you can specify a color for each piece. This will help you to better visualize diagrams.
– a new column in the stock table where you can specify the price of the sheet.
– several new buttons in the main toolbar:
– a button for accepting a solution. When a solution is accepted, the utilized parts are deleted and the waste is added to the stock.
– a button for undo accept solution.
– a button with statistics for the current optimization
– a button with interface settings (from here you can change the language)
– a new parameter in the menu Settings :  Minimal useful size. Only wastes larger than this can be added to the stock when the Accept button is pressed.
and many more …

We invite you to download and test this new version of our program.

Bulgarian translation is available

Thursday, August 8th, 2013

The translation has been made by Svetoslav Slavkov. We are grateful for his help on improving our programs.

Greek translation is available

Thursday, May 9th, 2013

Thanks to Andrew Athanasiadis we now have Greek translation for our optimization programs. Thanks a lot Andrew!

How to contact us!

Saturday, December 22nd, 2012

Preferred contact address:

We usually answer all emails in max. 24 hours since their receipt.

If you do not receive an answer from us it means that your server blocks our email address !

Also, please check your Spam or Junk folders … in some cases our messages arrive there.

Also, you may add our address to your Contacts list.

We DO NOT send unsolicited emails … we are not spammers … so the problem is in your server only! Please contact your email provider to fix that !

Alternately you may contact us at:


You can also fax us at: 0040358814190, but we usually do not send faxes back to you.

Fractional input in Simple Cutting Software

Friday, May 11th, 2012

Starting with version 2 of our Simple Cutting Software we have introduced an important feature: the ability to handle fractional values.

For instance, instead of typing 100.5, you may do this more elegantly with 100 1/2 (please note that blank space between 100 and 1/2).

Width, Height of parts and stock can be typed in as fractional values. Also, the parameters of the optimization can be fractional.

Here is a movie showing the new feature:

You cannot specify any value as fractional. For instance you cannot specify 100 1/3, because this means 100.33333333333… and in real-world you cannot cut with this precision.

So, all fractions will be rounded to some value. The rounding parameter is specified in Settings | Round all fractions to.

Rounding happens as follow:

– parts are rounded up (ex: 1/3 is rounded up to 1/2 – the actual value depends on the rounding parameter).

– stock pieces are rounded down (2/3 is rounded to 1/2).

– cutter thickness is rounded up.

– break size is rounded up.

– maximal cut length is rounded down.

One more thing: You cannot mix fractional values with real values (containing the decimal symbol “.”). For instance you cannot specify both 100 1/2 and 510.34 ! Choose one option only and stick with it!

About the cutting and nesting optimization problem

Sunday, October 17th, 2010

The cutting optimization problem belongs to the class of Nondeterminist Polynomial Complete (NP-Complete) problems [1]. Other problems in this class are the Hamiltonian pathTravelling SalesmanSubset sumCliqueIndependent setGraph colouring etc. All these problems have been deeply analyzed by a huge number of researchers, but no polynomial-time algorithm was discovered for them. This has a direct consequence over the running time and the quality of the optimization.

A polynomial-time algorithm is that one whose running time is bounded by a polynomial function of its input size. For instance, if we have n = 1000 pieces to cut and the cutting algorithm would have the complexity O(n2), then the running time would have been directly and linear proportional to 10002 which is (106) units of time. Assuming that our computers can perform 109 operations per second, the cutting optimization algorithm would run in less than a fraction of a second. Sadly, this is not the case for the cutting optimization problem. There is no such fast algorithm for solving it.

The only perfect algorithm for solving the cutting optimization problem is an exponential one. An exponential algorithm will run in an exponential amount of time (2n, 3nn! – where n is the number of pieces to be optimized). Thus, even for small instances (lets say 1000 pieces) an exponential algorithm will run as follows:

  • if the complexity is 2n , then the total number of operations is 21000 which can be approximated by 10300. Knowing that our computers can perform 109 operations / second we need 10291 second to run the algorithm. One year has about 108 seconds. This means that our algorithm would run in 10283 years. This is a huge value compared to the age of the universe which is only 109 years.
  • if the complexity is 3n , then the total number of operations is 31000 which can be approximated by 10477.
  • if the complexity is n! , then the total number of operations is 1000! which can be approximated by 102567.

These algorithms run in an impressive number of years. Even if we put all computers in the world to solve the problem in parallel we still don’t get a significant improvement in speed.

This is why another possibility (which is employed by our software too) is to use heuristics or approximation algorithms. A heuristic is an algorithm which is fast and returns a good solution (often the best one) of the problem. However,there is no guarantee that the obtained solution is the optimal one.

An important parameter of the software is the OptimizationLevel. This will basically tell how many configurations are explored before the best found solutions is outputted. If you set the OptimizationLevel to very low value you will obtain a solution very fast. But the quality of the solution might be not so good. If you set the OptimizationLevel to very high value you will obtain a good solution but not so fast. Thus, one must employ a trade-off between the quality of the solutions and the running time.


[1].      Garey, M.R., Johnson D.S., Computers and Intractability: A Guide to NP-completeness, Freeman & Co, San Francisco, USA, 1979.