Download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
language ESSENCE 1.3.0
$ prob002.essence: Template Design
$ Problem details available at http://www.csplib.org/Problems/prob002/
$ 05 September 2007 revised 20 March 2012 by AMF;
$ 21 April 13 completely rewritten by AMF
$
 
given       n_templates:  int(1..),            $ Number of printing templates
            n_slots:      int(1..),            $ Number of slots per template
            n_variations: int(1..)             $ Number of variations to be printed
            
letting variations be domain int(1..n_variations)  $ Name the variations 1..n.
                                               $ Alternatively, variations could be named
                                               $   by a "given" enumerated type
 
given demand: function variations --> int      $ Specifies the minimum number of copies of
                                               $    each variation that MUST be printed
 
letting templates be new type of size n_templates        $ these are the templates
 
find design: function (total) (templates,variations) --> int (0..n_slots)  $ This tells us how many times
                                                         $   each variation appears on each template
find printings: function (total) templates --> int (0..max(range(demand)))                  $ This tells us how many times each
                                                         $   template is to be printed          
 
such that forAll v:variations. (sum t:templates. design((t,v))) >= demand(v)    $ demand must be met
 
minimising sum t:templates. printings(t)                 $ minimise the total number of printings