def test_add_remove_sosconstraint2(self): m = pe.ConcreteModel() m.a = pe.Set(initialize=[1, 2, 3], ordered=True) m.x = pe.Var(m.a, within=pe.Binary) m.y = pe.Var(within=pe.Binary) m.obj = pe.Objective(expr=m.y) m.c1 = pe.SOSConstraint(var=m.x, sos=1) opt = pe.SolverFactory('xpress_persistent') opt.set_instance(m) self.assertEqual(opt.get_xpress_attribute('sets'), 1) m.c2 = pe.SOSConstraint(var=m.x, sos=2) opt.add_sos_constraint(m.c2) self.assertEqual(opt.get_xpress_attribute('sets'), 2) opt.remove_sos_constraint(m.c2) self.assertEqual(opt.get_xpress_attribute('sets'), 1)
def test_update6(self): m = pe.ConcreteModel() m.a = pe.Set(initialize=[1,2,3], ordered=True) m.x = pe.Var(m.a, within=pe.Binary) m.y = pe.Var(within=pe.Binary) m.obj = pe.Objective(expr=m.y) m.c1 = pe.SOSConstraint(var=m.x, sos=1) opt = self.opt opt.set_instance(m) opt.update() self.assertEqual(opt._solver_model.getAttr('NumSOS'), 1) m.c2 = pe.SOSConstraint(var=m.x, sos=2) opt.add_sos_constraints([m.c2]) self.assertEqual(opt._solver_model.getAttr('NumSOS'), 1) opt.remove_sos_constraints([m.c2]) opt.update() self.assertEqual(opt._solver_model.getAttr('NumSOS'), 1)
def test_update6(self): m = pyo.ConcreteModel() m.a = pyo.Set(initialize=[1, 2, 3], ordered=True) m.x = pyo.Var(m.a, within=pyo.Binary) m.y = pyo.Var(within=pyo.Binary) m.obj = pyo.Objective(expr=m.y) m.c1 = pyo.SOSConstraint(var=m.x, sos=1) opt = pyo.SolverFactory('gurobi_persistent') opt.set_instance(m) opt.update() self.assertEqual(opt._solver_model.getAttr('NumSOS'), 1) m.c2 = pyo.SOSConstraint(var=m.x, sos=2) opt.add_sos_constraint(m.c2) self.assertEqual(opt._solver_model.getAttr('NumSOS'), 1) opt.remove_sos_constraint(m.c2) opt.update() self.assertEqual(opt._solver_model.getAttr('NumSOS'), 1)
m.od = aml.Objective(m.s, rule=od_) # @Objectives_dict # @Objectives_list # uses 1-based indexing m.ol = aml.ObjectiveList() for j in m.q: m.ol.add(-m.vl[j]) # @Objectives_list # @SOS_single m.sos1 = aml.SOSConstraint( var=m.vl, level=1) m.sos2 = aml.SOSConstraint( var=m.vd, level=2) # @SOS_single # @SOS_dict def sd_(m, i): if i == 1: t = list(m.vd.values()) elif i == 2: t = list(m.vl.values()) return t m.sd = aml.SOSConstraint( [1,2], rule=sd_,