def test_consistency(self): """Test that variables and constraints keep a consistent order. """ import itertools num_solves = 4 vars_lists = [] ineqs_lists = [] for k in range(num_solves): sum = 0 constraints = [] for i in range(100): var = Variable(name=str(i)) sum += var constraints.append(var >= i) obj = Minimize(sum) p = Problem(obj, constraints) objective, constr_map, dims = p.canonicalize() all_ineq = itertools.chain(constr_map[s.EQ], constr_map[s.INEQ]) var_info = p._get_var_offsets(objective, all_ineq) sorted_vars, var_offsets, x_length = var_info vars_lists.append([int(v.name()) for v in sorted_vars]) ineqs_lists.append(constr_map[s.INEQ]) # Verify order of variables is consistent. for i in range(num_solves): self.assertEqual(range(100), vars_lists[i]) for i in range(num_solves): for idx, constr in enumerate(ineqs_lists[i]): var = constr.variables()[0] self.assertEqual(idx, int(var.name()))
def test_consistency(self): """Test that variables and constraints keep a consistent order. """ import itertools num_solves = 4 vars_lists = [] ineqs_lists = [] var_ids_order_created = [] for k in range(num_solves): sum = 0 constraints = [] var_ids = [] for i in range(100): var = Variable(name=str(i)) var_ids.append(var.id) sum += var constraints.append(var >= i) var_ids_order_created.append(var_ids) obj = Minimize(sum) p = Problem(obj, constraints) objective, constr_map = p.canonicalize() all_ineq = itertools.chain(constr_map[s.EQ], constr_map[s.LEQ]) var_offsets, var_sizes, x_length = p._get_var_offsets(objective, all_ineq) # Sort by offset. vars_ = sorted(var_offsets.items(), key=lambda (var_id, offset): offset) vars_ = [var_id for (var_id, offset) in vars_] vars_lists.append(vars_) ineqs_lists.append(constr_map[s.LEQ]) # Verify order of variables is consistent. for i in range(num_solves): self.assertEqual(var_ids_order_created[i], vars_lists[i]) for i in range(num_solves): for idx, constr in enumerate(ineqs_lists[i]): var_id, _ = lu.get_expr_vars(constr.expr)[0] self.assertEqual(var_ids_order_created[i][idx], var_id)
def test_consistency(self): """Test that variables and constraints keep a consistent order. """ import itertools num_solves = 4 vars_lists = [] ineqs_lists = [] var_ids_order_created = [] for k in range(num_solves): sum = 0 constraints = [] var_ids = [] for i in range(100): var = Variable(name=str(i)) var_ids.append(var.id) sum += var constraints.append(var >= i) var_ids_order_created.append(var_ids) obj = Minimize(sum) p = Problem(obj, constraints) objective, constr_map = p.canonicalize() all_ineq = itertools.chain(constr_map[s.EQ], constr_map[s.LEQ]) var_offsets, var_sizes, x_length = p._get_var_offsets( objective, all_ineq) # Sort by offset. vars_ = sorted(var_offsets.items(), key=lambda (var_id, offset): offset) vars_ = [var_id for (var_id, offset) in vars_] vars_lists.append(vars_) ineqs_lists.append(constr_map[s.LEQ]) # Verify order of variables is consistent. for i in range(num_solves): self.assertEqual(var_ids_order_created[i], vars_lists[i]) for i in range(num_solves): for idx, constr in enumerate(ineqs_lists[i]): var_id, _ = lu.get_expr_vars(constr.expr)[0] self.assertEqual(var_ids_order_created[i][idx], var_id)