コード例 #1
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testSumConstant(self):
        obj1 = Variable(list(range(0, 6)))
        obj2 = Variable(list(range(0, 8)))
        obj3 = Variable(list(range(0, 11)))

        capacity = Variable(list(range(34, 35)))
        volumes = [7, 5, 3]

        model = NativeModel()

        vol_sum = Sum(((obj1, obj2, obj3), volumes))

        model.add_variable((obj1, obj2, obj3, vol_sum, capacity))

        model.add_constraint(Leq((vol_sum, capacity)))

        solver = Solver(model)
        '''
         obj1.print_domain()
         obj2.print_domain()
         obj3.print_domain()
         vol_sum.print_domain()
         capacity.print_domain()
         '''

        assert (solver.solve())
        '''
コード例 #2
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testOr_2(self):
        var1 = Variable(0, 2)
        dur1 = 1

        var2 = Variable(0, 4)
        dur2 = 2

        var3 = Variable(0, 6)
        dur3 = 3

        model = NativeModel()

        #model.add( NoOverlap( (var1, var2), (dur1, dur2) ) )
        #model.add( NoOverlap( (var1, var3), (dur1, dur3) ) )
        #model.add( NoOverlap( (var2, var3), (dur2, dur3) ) )

        ur = UnaryResource([
            NoOverlap((var1, var2), (dur1, dur2)),
            NoOverlap((var1, var3), (dur1, dur3)),
            NoOverlap((var2, var3), (dur2, dur3))
        ])

        model.add(ur)

        solver = Solver(model)

        assert (solver.solve())

        assert ((var1.get_value() + dur1 < var2.get_value)
                or (var2.get_value() + dur2 < var1.get_value))
コード例 #3
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testMinusOver(self):
        var1, var2 = (Variable(list(range(0, 4))), Variable(list(range(0, 4))))

        model = NativeModel()

        model.add_constraint(var1 == var2 - 3)

        solver = Solver(model)
        assert (solver.solve())
コード例 #4
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testAtMostUNSAT_2(self):
        model = NativeModel()
        var1, var2 = (Variable(2, 2), Variable(0, 1))

        model << (AtMost(([var1, var2], 2, 2)))

        solver = Solver(model)

        assert (solver.solve())
コード例 #5
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testOperatorOVerloading(self):
        var1 = Variable(list(range(0, 4)))
        var2 = Variable(list(range(0, 4)))

        model = NativeModel()
        model.add_constraint(var1 != var2)

        solver = Solver(model)
        assert (solver.solve())
コード例 #6
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testExactlyUNSAT_2(self):
        model = NativeModel()
        var1, var2 = (Variable(0, 5), Variable(0, 5))

        model << (Exactly(((var1, var2), 2, 3)))

        solver = Solver(model)

        assert (not solver.solve())
コード例 #7
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testTimesOverNativeModelOp(self):
        var1, var2 = (Variable(list(range(1, 4))), Variable(list(range(0, 4))))

        model = NativeModel()

        model << (var1 == var2 * 2)

        solver = Solver(model)
        assert (solver.solve())
コード例 #8
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testAtLeastUNSAT_2(self):
        model = NativeModel()
        var1, var2 = (Variable(0, 5), Variable(0, 5))

        model << (AtLeast(([var1, var2], 0, 3)))

        solver = Solver(model)

        assert (not solver.solve())
コード例 #9
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testGTOver(self):
        var1, var2, var3 = (Variable(list(range(0, 3))) for x in range(0, 3))
        model = NativeModel()

        model.add_constraint(var1 < var2)
        model.add_constraint(var2 < var3)
        model.add_constraint(var1 < var3)

        solver = Solver(model)
        assert (solver.solve())
コード例 #10
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testEqualOver(self):
        var1 = Variable([0])
        var2 = Variable(list(range(0, 1)))

        model = NativeModel()

        model.add_constraint(var1 == var2)

        solver = Solver(model)
        assert (solver.solve())
コード例 #11
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testExactlySAT_2(self):
        model = NativeModel()
        var1, var2 = (Variable(0, 5), Variable(0, 5))

        model << (Exactly(((var1, var2), 2, 1)))

        solver = Solver(model)

        assert (solver.solve())
        assert ((var1.get_value() is 2 or var2.get_value() is 2))
コード例 #12
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testMinus(self):
        var1, var2 = (Variable(list(range(0, 4))), Variable(list(range(0, 4))))

        model = NativeModel()
        model.add_variable((var1, var2))

        model.add_constraint(Equal((var1, Minus(var2, 3))))

        solver = Solver(model)
        assert (solver.solve())
コード例 #13
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testEqual(self):
        var1 = Variable([0])
        var2 = Variable(list(range(0, 1)))

        model = NativeModel()

        model.add_variable((var1, var2))

        solver = Solver(model)
        assert (solver.solve())
コード例 #14
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testStupid_not_eqOver(self):
        var1 = Variable(list(range(0, 3)))
        var2 = Variable(list(range(0, 3)))

        model = NativeModel()
        model.add_constraint(var1 != var2)

        solver = Solver(model)

        assert (solver.solve())
        assert (var1.get_value() != var2.get_value())
コード例 #15
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testAtLeastSAT(self):
        model = NativeModel()
        var1, var2 = (Variable(0, 5), Variable(0, 5))

        model << (AtLeast(([var1, var2], 2, 2)))

        solver = Solver(model)

        assert (solver.solve())
        assert (var1.get_value() is 2)
        assert (var2.get_value() is 2)
コード例 #16
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testMaximization(self):
        model = NativeModel()

        var1, var2 = (Variable(0, 4) for x in range(0, 2))
        var3 = Variable(0, 10)

        model << (var1 + var2 == var3)

        solver = Solver(model)

        assert (solver.maximise(var3))
コード例 #17
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testSingleProp(self):
        var1 = Variable(0, 3)
        var2 = Variable(0, 5)

        model = NativeModel()

        model.add(var1 > var2)

        solver = Solver(model)

        solver.propogate()
コード例 #18
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testNotUnsat(self):
        var1 = Variable(0, 1)
        var2 = Variable(2, 3)

        model = NativeModel()

        model << (Not(var1 != var2))

        solver = Solver(model)

        assert (not solver.solve())
コード例 #19
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testNegDomains(self):
        var1 = Variable(-3, -1)
        var2 = Variable(-2, 0)

        model = NativeModel()

        model << (var1 * 2 <= var2)

        solver = Solver(model)

        assert (solver.solve())
コード例 #20
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testNAnd_1(self):
        var1 = Variable(0, 1)
        var2 = Variable(1, 2)
        var3 = Variable(0, 1)

        model = NativeModel()

        model << (Nand((var1 != var2, var2 != var3)))

        solver = Solver(model)

        assert (solver.solve())
コード例 #21
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testOr3(self):
        var1 = Variable(0, 0)
        var2 = Variable(0, 0)
        var3 = Variable(0, 0)

        model = NativeModel()

        model << (And((var1 != var2, var2 != var3)))

        solver = Solver(model)

        assert (not solver.solve())
コード例 #22
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testOr2(self):
        var1 = Variable(0, 1)
        var2 = Variable(1, 2)
        var3 = Variable(0, 1)

        model = NativeModel()

        model << (Or((var1 == var2, var2 != var3)))

        solver = Solver(model)

        assert (solver.solve())
コード例 #23
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testAnd_3(self):
        var1 = Variable(1, 1)
        var2 = Variable(2, 2)
        var3 = Variable(1, 1)

        model = NativeModel()

        model << (And((var1 == var2, var1 == var3)))

        solver = Solver(model)

        assert (not solver.solve())
コード例 #24
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testVarExtractionWSum(self):
        var1 = Variable(list(range(2, 3)))
        var2 = Variable(list(range(2, 3)))
        var3 = Variable(list(range(3, 10)))
        model = NativeModel()

        model.add_constraint(Equal((Sum(((var1, var2), (2, 1))), var3)))

        solver = Solver(model)

        #svar.print_domain()

        assert (solver.solve())
コード例 #25
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testFeasTuple_1(self):
        var1 = Variable(0, 0)
        var2 = Variable(0, 0)

        tups = ((0, 0), )

        model = NativeModel()

        model.add(Table((var1, var2), tups))

        solver = Solver(model)

        assert (solver.solve())
コード例 #26
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testSingleProp_1(self):
        var1 = Variable(0, 0)
        var2 = Variable(0, 5)

        model = NativeModel()

        model.add(var2 != var1)

        solver = Solver(model)

        solver.propogate()

        assert (not var2.can_be_instantiated_to(0))
コード例 #27
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testDecVars(self):
        var1 = Variable(0, 3)
        var2 = Variable(0, 5)
        var3 = Variable(1, 2)

        model = NativeModel()

        model.add(var1 == var2)
        model.add(var1 != var3)

        solver = Solver(model, [var1, var2])

        assert (solver.solve())
        assert (not var3.get_is_instantiated())
コード例 #28
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def taestElementSAT_1(self):
        model = NativeModel()

        i = Variable(0, 5)
        k = Variable(1, 5)
        coef = [0, 1, 2, 3, 4, 5]
        # Make sure that coef[k] = i

        model << (Element((i, k, coef)))

        solver = Solver(model)

        assert (solver.solve())
        assert (i.get_value() is coef[k.get_value()])
コード例 #29
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testLEQ(self):
        var1, var2, var3 = (Variable(list(range(0, 3))) for x in range(0, 3))
        model = NativeModel()
        model.add_variable((var1, var2, var3))

        model.add_constraint(Leq((var1, var2)))
        model.add_constraint(Leq((var2, var3)))
        model.add_constraint(Leq((var1, var3)))

        model.add_constraint(Equal((var1, var2)))
        model.add_constraint(NotEqual((var2, var3)))

        solver = Solver(model)
        assert (solver.solve())
コード例 #30
0
ファイル: SolverTests.py プロジェクト: vomrat/Numberjack
    def testMinusVars(self):
        var1 = Variable(0, 3)
        var2 = Variable(0, 1)
        var3 = Variable(0, 0)

        model = NativeModel()

        minVar = var1 - var2

        model << (minVar == var3)

        solver = Solver(model)

        assert (solver.solve())