Follow up on http://yetanothermathprogrammingconsultant.blogspot.com/2008/05/cutting-stock-problem-example.html.
>I decided to have a go at the challenge set in this paper - hope you don't mind.
>We receive bars of length 1200 and must cut them into the following
> [length, quantity] pairs:[100,100],[200,2],[300,2],[493,250],[590,2],
> [630,2],[780,2],[930,2]
....
>So the solution equates to:12 * [100,100,100,100,100,100,100,493]2 *
> [100,100,100,100,100,630]2 * [100,100,930]2 * [100,300,780]2 *
>[100,493,590]118 * [200,493,493]
>
>Total bars used = 138
>
>Theoretical min:
>(100*100+200*2+300*2+493*250+590*2+630*2+780*2+930*2)/1200=116.76
>
>...and, finally, the numbers of each length of bar cut:100: 12 * 7 + 2 * 5 + 2 * 2 +
>2 * 1 + 2 * 1 = 102200: 118 * 1 = 118300: 2 * 1 = 2493: 118 * 2 + 2 * 1 + 12 * 1 =
>250590: 2 * 1 = 2630: 2 * 1 = 2780: 2 * 1 = 2930: 2 * 1 = 2
See also: http://people.sabanciuniv.edu/ertekg/papers/2006/alp_et_al_ims2006.pdf.
I can find a better solution using the column generation model. The following input was used:
*-----------------------------------------------------
* Data
*-----------------------------------------------------
 
scalar r 'raw width' /1200/;
 
table demanddata(i,*)
           width  demand
  width1    100     100
  width2    200       2
  width3    300       2
  width4    493     250
  width5    590       2
  width6    630       2
  width7    780       2
  width8    930       2
;
The result is a solution (not proven optimal) of 131:
----    174 PARAMETER pat  pattern usage
 
                p4          p5          p9         p10         p11         p15       Total
width1                                               1                       2         100
width2                                                           1                       2
width3                                               1                                   2
width4           2                       1                                   2         250
width5                       2                                                           2
width6                                   1                                               2
width7                                               1                                   2
width8                                                           1                       2
Count           75           1           2           2           2          49         131
 
 
>Hi Erwin,
ReplyDelete>
>You are right - my pattern generator missed some possible patterns. Will post corrected solution on lp_solve list later.
>
Hi Erwin,
ReplyDeleteI was able to reproduce by relaxing the constraints and then tightening them. If I start directly with equality constraints I always get stuck at the beginning of the iterations with almost no patterns generated and a bad sub-optimal solution. Could my initialization be causing this? Would you mind sharing some tips on that? Thanks, I really appreciate!