title: Calculating a cutting list with the least amount of off cut waste
body: <p>I am working on a project where I produce an aluminium extrusion cutting list.</p>
  
  <p>The aluminium extrusions come in lengths of 5m.</p>
  
  <p>I have a list of smaller lengths that need to be cut from the 5m lengths of aluminium extrusions.</p>
  
  <p>The smaller lengths need to be cut in the order that produces the least amount of off cut waste from the 5m lengths of aluminium extrusions.</p>
  
  <p>Currently I order the cutting list in such a way that generally the longest of the smaller lengths gets cut first and the shortest of smaller lengths gets cut last. The exception to this rule is whenever a shorter length will not fit in what is left of the 5m length of aluminium extrusion, I use the longest shorter length that will fit.</p>
  
  <p>This seems to produce a very efficient (very little off cut waste) cutting list and doesn't take long to calculate. I imagine, however, that even though the cutting list is <strong>very</strong> efficient, it is not necessarily the <strong>most</strong> efficient.</p>
  
  <p>Does anyone know of a way to calculate the most efficient cutting list which can be calculated in a reasonable amount of time?</p>
  
  <p>EDIT: Thanks for the answers, I'll continue to use the "greedy" approach as it seems to be doing a very good job (out performs any human attempts to create an efficient cutting list) and is very fast.</p>