Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
""" A class that generates models that are equivalent to the original models and ready to be robustified. """
""" generates an equivalent model that might not be ready for robustification :param model: the original model :param setting: robustness setting :param dependent_uncertainties: if the uncertainty set is dependent or not :return: the equivalent model """ data_constraints, no_data_constraints = [], []
for i, p in enumerate(model.as_posyslt1()):
equivalent_p = EquivalentPosynomials(p, i, setting.get('simpleModel'), dependent_uncertainties) no_data, data = equivalent_p.no_data_constraints, equivalent_p.data_constraints
data_constraints += data no_data_constraints += no_data
self.number_of_no_data_constraints = len(no_data_constraints) self.cost = model.cost return [no_data_constraints, data_constraints]
return self.number_of_no_data_constraints
""" generates a two term Boyd model that is ready to be linearized :param model: the original model :return: two term model and the number of no data constraints """ all_constraints = model.flat(constraintsets=False)
data_constraints = []
for i, cs in enumerate(all_constraints): if isinstance(cs, MonomialEquality): data_constraints += [cs] elif isinstance(cs, PosynomialInequality): _, data = TwoTermApproximation. \ two_term_equivalent_posynomial(cs.as_posyslt1()[0], i, [], True) data_constraints += data del data else: raise InvalidGPConstraint("Two Term Boyd Model supports geometric programs only") self.cost = model.cost
return data_constraints
pass |