01: // --------------------------------------------------------------------------
02: // Licensed Materials - Property of IBM
03: //
04: // 5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55
05: // Copyright IBM Corporation 1998, 2013. All Rights Reserved.
06: //
07: // Note to U.S. Government Users Restricted Rights:
08: // Use, duplication or disclosure restricted by GSA ADP Schedule
09: // Contract with IBM Corp.
10: // --------------------------------------------------------------------------
11: 
12: int RollWidth = ...;
13: int NbItems = ...;
14: 
15: range Items = 1..NbItems;
16: int Size[Items] = ...;
17: int Amount[Items] = ...;
18: 
19: // used in column generation
20: float Duals[Items] = ...;
21: 
22: 
23: tuple  pattern {
24:    key int id;
25:    int cost;
26:    int fill[Items];
27: }
28: 
29: 
30: {pattern} Patterns = ...;
31: 
32: dvar float Cut[Patterns] in 0..1000000;
33: 
34: 
35: minimize
36:   sum( p in Patterns ) 
37:     p.cost * Cut[p];
38:   
39: subject to {
40:   forall( i in Items ) 
41:     ctFill: 
42:       sum( p in Patterns )
43:          p.fill[i] * Cut[p] >= Amount[i];
44: }
45:     
46: 
47: execute DISPLAY {
48:   writeln("Cut = ",Cut);
49:   for(var p in Patterns) 
50:     writeln("Use of pattern ", p, " is : ",Cut[p]);
51: }
52:      
53: tuple CutSolutionT{ 
54:         pattern Patterns;       
55:         float value; 
56: };
57: {CutSolutionT} CutSolution = {<i0,Cut[i0]> | i0 in Patterns};