Эта задача как понимаю, впервые поставленная Канторовичем и его школой изучается естественно в приличных ВУЗах
Однако в весьма куцем виде. Варианты постановок -
а) мин количества заготовок б)мин отходов при обеспечении заданных объемов поставок  Для сведения ее к стандартной задаче линейного программирования  и применения симплекс-метода надо еще решить подзадачу - найти оптимальные. векторы вариантов раскроя. Оптимальные в смысле Парето  т.е  чтобы при сравнении любых двух не было бы чтобы все компоненты одного меньше всех компонент другого.
Эта часть задачи обычно проглатывается - и это понятно  - кому охота заниматься в ВУЗе программированием если
задачу ЛП при известной матрице можно решить в Excel  с помощью налстройки Поиск решения
Я восполнил недостающую часть алгоритма- построение набора векторов Парето и вместе с ними матрицы 
задачи линейного программирования 1-мерного раскроя
Пусть 

 длина заготовки  

 -кол-во типов кусков (разные длины

 - массив длин кусков
Задача ставится  по известным входным данным найти  количество 

  и набор векторов Парето

 и матрицу 

  задачи ЛП. (столбцы которой составлены из этих векторов)
Эта задача мной решена, т.е. написана программа делающая это.
Но результаты все же удручают. Так если при количестве типов заготовок 

и не очень больших длинах скажем 

  получается набор из 7 векторов (матрица 3x7) то уже при 

 и  

  получается 59 векторов и матрица 5x59
Конечно и такую матрицу можно запихнуть в симплекс-метод и получить оптимальное решение, но ясно что здесь висит проблема размерности.
Пример расчета 
  
   
 
Вопрос - как повысить эффективность алгоритма решения задачи одномерного раскроя 
без перехода к параллельным вычислениям?