def test_no_vars(self): """Failure due to no sub vars available.""" state = State.from_sample({'a': 1, 'b': 1, 'c': -1}, self.notall) eid = EnergyImpactDecomposer(size=3, min_gain=5.0) nextstate = eid.next(state) self.assertEqual(len(nextstate.subproblem), 0)
def test_multi_vars(self): """Multiple variables subproblem selection works, without gain limit.""" state = State.from_sample({'a': 1, 'b': 1, 'c': -1}, self.notall) eid = EnergyImpactDecomposer(size=3, min_gain=None) nextstate = eid.next(state) self.assertDictEqual(dict(nextstate.subproblem.adj), dict(self.notall.adj))
def test_no_vars(self): """Failure due to no sub vars available.""" state = State.from_sample({'a': 1, 'b': 1, 'c': -1}, self.notall) eid = EnergyImpactDecomposer(max_size=3, min_gain=5.0) with self.assertRaises(ValueError): nextstate = eid.next(state)
def test_adaptive_vars(self): """Multiple variables subproblem selection works, with gain limit.""" state = State.from_sample({'a': 1, 'b': 1, 'c': -1}, self.notall) eid = EnergyImpactDecomposer(size=3, min_gain=2.0) nextstate = eid.next(state) self.assertDictEqual(dict(nextstate.subproblem.linear), {'c': 2}) self.assertDictEqual(dict(nextstate.subproblem.quadratic), {})
def test_one_var(self): """First-variable selection works.""" state = State.from_sample({'a': 1, 'b': 1, 'c': -1}, self.notall) eid = EnergyImpactDecomposer(size=1, min_gain=0) nextstate = eid.next(state) self.assertDictEqual(dict(nextstate.subproblem.linear), {'c': 2}) self.assertDictEqual(dict(nextstate.subproblem.quadratic), {})