Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Problems.GPDL/Examples/Multiplexer.txt @ 10480

Last change on this file since 10480 was 10061, checked in by gkronber, 11 years ago

#2026 copied examples from the GPDL problem instance provider plugin

File size: 2.5 KB
RevLine 
[9844]1PROBLEM Multiplexer
2
3NONTERMINALS
4  Expr<<bool[] d, out bool o>>.
5  AND<<bool[] d, out bool o>>.
6  OR<<bool[] d, out bool o>>.
7  NOT<<bool[] d, out bool o>>.
8  IF<<bool[] d, out bool o>>.
9
10TERMINALS
11  A0. A1. A2. D0. D1. D2. D3. D4. D5. D6. D7.
12
13RULES
14  Expr<<bool[] d, out bool o>> =
15    AND<<d, out o>>
16    | OR<<d, out o>>
17    | NOT<<d, out o>>
18    | IF<<d, out o>>
19    | A0                                                   SEM<< o = d[0]; >>
20    | A1                                                   SEM<< o = d[1]; >>
21    | A2                                                   SEM<< o = d[2]; >>
22    | D0                                                   SEM<< o = d[3]; >>
23    | D1                                                   SEM<< o = d[4]; >>
24    | D2                                                   SEM<< o = d[5]; >>
25    | D3                                                   SEM<< o = d[6]; >>
26    | D4                                                   SEM<< o = d[7]; >>
27    | D5                                                   SEM<< o = d[8]; >>
28    | D6                                                   SEM<< o = d[9]; >>
29    | D7                                                   SEM<< o = d[10]; >>
30  .
31
32  AND<<bool[] d, out bool o>> =                            LOCAL << bool o1, o2; >>
33    Expr<<d, out o1>> Expr<<d, out o2>>                    SEM << o = o1 & o2; >>
34  .
35
36  OR<<bool[] d, out bool o>> =                             LOCAL << bool o1, o2; >>
37    Expr<<d, out o1>> Expr<<d, out o2>>                    SEM << o = o1 | o2; >>
38  .
39
40  NOT<<bool[] d, out bool o>> =
41    Expr<<d, out o>>                                       SEM << o = !o; >>
42  .
43
44  IF<<bool[] d, out bool o>> =                             LOCAL << bool pred; >>
45    Expr<<d, out pred>>                                    SEM << if(pred) { >>
46    Expr<<d, out o>>                                       SEM << } else { >>
47    Expr<<d, out o>>                                       SEM << } >>
48  .
49
50MINIMIZE
51  <<
52    int N = 11;
53    bool[] d = new bool[N];
54    int mistakes = 0;
55    for(int i = 0; i < Math.Pow(2, N); i++) {
56      // generate bit-vector and count number of 1-bits
57      int x = i;
58      for(int j = 0; j < N; j++) {
59        d[N - j - 1] = ((x % 2) == 1);
60        x = (x / 2);
61      }
62      bool target = d[3 + (d[0] ? 1:0) + 2 * (d[1] ? 1:0) + 4 * (d[2] ? 1:0)];
63
64      // apply model
65      bool p;
66      Expr(d, out p);
67
68      if(p != target) mistakes++;
69    }
70    return mistakes;
71  >>
72END Multiplexer.
Note: See TracBrowser for help on using the repository browser.