Example #1
0
 def test_data(self):
     result = amply.Amply("param T := 4;")['T']
     assert result == 4
     result = amply.Amply("param T := -4;")['T']
     assert result == -4
     result = amply.Amply("param T := 0.04;")['T']
     assert result == 0.04
     result = amply.Amply("param T := -0.04;")['T']
     assert result == -0.04
Example #2
0
    def test_set(self):
        result = amply.Amply("set month := Jan Feb Mar Apr;")['month']
        assert result == ['Jan', 'Feb', 'Mar', 'Apr']

        result = amply.Amply("set month Jan Feb Mar Apr;")['month']
        assert result == ['Jan', 'Feb', 'Mar', 'Apr']
        assert [i for i in result] == ['Jan', 'Feb', 'Mar', 'Apr']
        assert result != []

        assert 'Jan' in result
        assert 'Foo' not in result
        assert len(result) == 4
Example #3
0
    def test_2d_param_transpose(self):
        result = amply.Amply("""
            param demand {location, item};
            param demand default 42 (tr)
                :   FRA DET LAN :=
            spoons  200 . 30  
            plates  30  120 .
            cups    . .  29 ;
            """)['demand']

        self.assertEqual(result['FRA'], {
            'spoons': 200,
            'plates': 30,
            'cups': 42
        })
        self.assertEqual(result['DET'], {
            'spoons': 42,
            'plates': 120,
            'cups': 42
        })
        self.assertEqual(result['LAN'], {
            'spoons': 30,
            'plates': 42,
            'cups': 29
        })
Example #4
0
    def test_2d_param_defaults(self):
        result = amply.Amply("""
            param demand {item, location};
            param demand default 42
                :   FRA DET LAN :=
            spoons  200 . 30  
            plates  30  120 .
            cups    . .  29 ;
            """)['demand']

        options = [('spoons', {
            'FRA': 200,
            'DET': 42,
            'LAN': 30
        }), ('plates', {
            'FRA': 30,
            'DET': 120,
            'LAN': 42
        }), ('cups', {
            'FRA': 42,
            'DET': 42,
            'LAN': 29
        })]
        for name, _dict in options:
            self.assertDictEqual(result[name], _dict)
Example #5
0
    def test_2d_param(self):
        result = amply.Amply("""
            param demand {item, location};
            param demand
                :   FRA DET LAN :=
            spoons  200 100 30  
            plates  30  120 90
            cups    666 13  29 ;
            """)['demand']

        options = [('spoons', {
            'FRA': 200,
            'DET': 100,
            'LAN': 30
        }), ('plates', {
            'FRA': 30,
            'DET': 120,
            'LAN': 90
        }), ('cups', {
            'FRA': 666,
            'DET': 13,
            'LAN': 29
        })]
        for name, _dict in options:
            self.assertDictEqual(result[name], _dict)
Example #6
0
 def test_set_splice(self):
     result = amply.Amply("""
         set A dimen 3;
         set A := (1, 2, 3), (1, 1, *) 2 4 (3, *, *) 1 1;
         """)
     a = result.A
     assert a == [(1, 2, 3), (1, 1, 2), (1, 1, 4), (3, 1, 1)]
 def test_empty_parameter_statement(self):
     result = amply.Amply("""
         param square {x};
         param square default 99 :=
         ;
         """)
     assert 'square' in result.symbols.keys()
     assert result.square == {}
Example #8
0
 def test_param_default(self):
     result = amply.Amply("""
         param foo {s} default 3;
         param foo := Jan 1 Feb 2 Mar 3;
         """)
     options = [('Jan', 1), ('Mar', 3), ('FOO', 3)]
     for name, value in options:
         self.assertEqual(result['foo'][name], value)
Example #9
0
 def test_sub1_params(self):
     result = amply.Amply("""
         param foo {s};
         param foo := 1 Jan 2 Feb 3 Mar;
         """)
     j = result['foo'][1]
     assert j == 'Jan'
     f = result['foo'][2]
     assert f == 'Feb'
Example #10
0
 def test_undefined_tabbing_param(self):
     a = """
         param cost{elem};
         param : cost value :=
         0       1   2
         3       4   5
         ;
         """
     self.assertRaises(amply.AmplyError, lambda: amply.Amply(a))
Example #11
0
 def test_sub2_params(self):
     result = amply.Amply("""
         param foo {s, t};
         param foo := 1 2 Hi 99 3 4;
         """)
     h = result['foo'][1][2]
     assert h == 'Hi'
     f = result['foo'][99][3]
     assert f == 4
Example #12
0
 def test_param_undefined(self):
     result = amply.Amply("""
         param foo {s} ;
         param foo := Jan 1 Feb 2 Mar 3;
         """)
     j = result['foo']['Jan']
     assert j == 1
     with self.assertRaises(KeyError):
         a = result['foo']['Apr']
Example #13
0
 def test_2d_slice1(self):
     result = amply.Amply("""
         param demand {location, item};
         param demand :=
             [Jan, *] Foo 1 Bar 2;
         """)['demand']
     f = result['Jan']['Foo']
     assert f == 1
     assert result['Jan']['Bar'] == 2
Example #14
0
 def test_load_file(self):
     a = amply.Amply("param T:= 4; param X{foo};")
     try:
         s = StringIO("param S := 6; param X := 1 2;")
     except TypeError:
         s = StringIO(u"param S := 6; param X := 1 2;")
     a.load_file(s)
     assert a.T == 4
     assert a.S == 6
     assert a.X[1] == 2
Example #15
0
 def test_set_subscript(self):
     result = amply.Amply("""
         set days{months};
         set days[Jan] := 1 2 3 4;
         set days[Feb] := 5 6 7 8;
         """)['days']
     j = result['Jan']
     assert j == [1, 2, 3, 4]
     f = result['Feb']
     assert f == [5, 6, 7, 8]
Example #16
0
 def test_set_subscript2_tuples(self):
     result = amply.Amply("""
         set days{months, days};
         set days[Jan, 3] := 1 2 3 4;
         set days[Feb, 'Ham '] := 5 6 7 8;
         """)['days']
     j = result['Jan', 3]
     assert j == [1, 2, 3, 4]
     f = result['Feb', 'Ham ']
     assert f == [5, 6, 7, 8]
Example #17
0
 def test_set_matrix_tr(self):
     result = amply.Amply("""
         set A (tr) : 1 2 3 :=
                  1   + - -
                  2   + + -
                  3   - + -
         ;
         """)
     a = result.A
     assert a == [(1, 1), (1, 2), (2, 2), (2, 3)]
Example #18
0
 def test_set_matrix(self):
     result = amply.Amply("""
         set A : 1 2 3 :=
             1   + - -
             2   + + -
             3   - + -
         ;
         """)
     a = result.A
     assert a == [(1, 1), (2, 1), (2, 2), (3, 2)]
    def test_empty_tabbing_parameters(self):

        result = amply.Amply("""
            set x;
            param square {x};
            param triangle {x};
            param default 99 : square triangle :=
            ;
            """)
        assert 'square' in result.symbols.keys()
        assert result.square == {}
Example #20
0
    def test_set2_tabbing(self):
        result = amply.Amply("""
            set elem dimen 2;
            set elem := 0 0 1 1 2 2;
            param cost{elem};
            param value{elem};
            param : cost value :=
            0 0     7   25
            1 1     35  3
            ;
            """)

        assert result['elem'] == [(0, 0), (1, 1), (2, 2)]
Example #21
0
 def test_2d_numeric_param(self):
     result = amply.Amply("""
         param square {x, y};
         param square : 1 2 :=
             4       4   8
             3       3   6
         ;
         """)['square']
     f = result[4, 1]
     assert f == 4
     assert result[4, 2] == 8
     assert result[3, 1] == 3
     assert result[3, 2] == 6
Example #22
0
    def test_tuple_param(self):
        result = amply.Amply("""
            set elem dimen 2;
            param foo{elem};
            param foo :=
                1   2   3
                2   3   4
                3   4   5
            ;
            """)['foo']

        f = result[1, 2]
        assert f == 3
        assert result[2, 3] == 4
        assert result[3, 4] == 5
Example #23
0
    def test_2dset_simpleparam(self):
        result = amply.Amply("""
            set elem dimen 2;
            param foo{elem};
            param foo :=
                1   2   3
                2   3   4
                3   4   5
            ;
            """)['foo']

        f = result[1][2]
        assert f == 3
        assert result[2][3] == 4
        assert result[3][4] == 5
Example #24
0
 def test_single_tabbing_data_with_set(self):
     result = amply.Amply("""
         set elem;
         param init_stock{elem};
         param cost{elem};
         param value{elem};
         param : elem : init_stock  cost    value :=
         iron    7           25      1
         nickel  35          3       2
         ;
         """)
     s = result['init_stock']
     assert s == {'iron': 7, 'nickel': 35}
     assert result['cost'] == {'iron': 25, 'nickel': 3}
     assert result['value'] == {'iron': 1, 'nickel': 2}
Example #25
0
 def test_set_splice_matrix(self):
     result = amply.Amply("""
         set A dimen 3;
         set A (1, *, *) : 1 2 3 :=
                     1     + - -
                     2     + - +
                     3     - - -
               (2, *, *) : 1 2 3 :=
                     1     + - +
                     2     - + -
                     3     - - +
         ;
         """)
     a = result.A
     assert a == [(1, 1, 1), (1, 2, 1), (1, 2, 3), (2, 1, 1), (2, 1, 3),
                  (2, 2, 2), (2, 3, 3)]
Example #26
0
    def test_2tables(self):
        result = amply.Amply("""
            param demand {item, location};
            param demand default 42
                :   FRA DET LAN :=
            spoons  200 . 30  
            plates  30  120 .
            cups    . .  29 
            ;
    
            param square {foo, foo};
            param square
                :   A   B :=
            A       1   6
            B       6   36
            ;
            """)
        demand = result['demand']
        options = [('spoons', {
            'FRA': 200,
            'DET': 42,
            'LAN': 30
        }), ('plates', {
            'FRA': 30,
            'DET': 120,
            'LAN': 42
        }), ('cups', {
            'FRA': 42,
            'DET': 42,
            'LAN': 29
        })]
        for name, _dict in options:
            self.assertDictEqual(demand[name], _dict)

        square = result['square']
        options = [
            ('A', {
                'A': 1,
                'B': 6
            }),
            ('B', {
                'A': 6,
                'B': 36
            }),
        ]
        for name, _dict in options:
            self.assertDictEqual(square[name], _dict)
 def test_high_dim_tabbing(self):
     result = amply.Amply("""
         set x;
         set y;
         param square {x,y};
         param default 99 : square :=
         a a 34
         a b 35
         a c 36
         b a 53
         b b 45.3
         b c 459.2
         ;
         """)
     assert 'square' in result.symbols.keys()
     print(result.square['b'])
     assert result.square['a'] == {'a': 34.0, 'b': 35.0, 'c': 36.0}
     assert result.square['b'] == {'a': 53.0, 'b': 45.3, 'c': 459.2}
Example #28
0
    def test_3d_slice2b(self):
        result = amply.Amply("""
            param trans_cost{src, product, dest};
            param trans_cost :=
                [*,bands,*]: FRA DET LAN :=
                    GARY     30  10  8
                    CLEV     22  7   10
                [*,coils,*]: FRA DET LAN :=
                    GARY     39  14  11
                    CLEV     27  9   12
                [*,plate,*]: FRA DET LAN :=
                    GARY     41  15  12
                    CLEV     29  9   13
            ;
            """)['trans_cost']

        f = result['GARY']['bands']['FRA']
        assert f == 30
        assert result['GARY']['plate']['DET'] == 15
        assert result['CLEV']['coils']['LAN'] == 12
Example #29
0
__author__ = 'nick'

from pulp import amply

data = amply.Amply("set CITIES := Auckland Wellington Christchurch;")

print(data['CITIES'])

for c in data.CITIES:
    print(c)

print(data.CITIES[0])

print(len(data.CITIES))

data = amply.Amply("""set BitsNPieces := 0 3.2 -6e4 Hello "Hello, World!";""")

print(data.BitsNPieces)

data = amply.Amply("""set pairs dimen 2;set pairs := (1, 2) (2, 3) (3, 4);""")

print(data.pairs)

data = amply.Amply(
    """set CITIES{COUNTRIES};set CITIES[Australia] := Adelaide Melbourne Sydney;set CITIES[Italy] := Florence Milan Rome;"""
)

print(data.CITIES['Australia'])

print(data.CITIES['Italy'])
Example #30
0
 def test_set_dimen2_noparen(self):
     result = amply.Amply("""
         set twotups dimen 2;
         set twotups := 1 2 2 3 4 2 3 1;
         """)['twotups']
     assert result == [(1, 2), (2, 3), (4, 2), (3, 1)]