def check_contained(self, poly1, poly2): gurobi_model = grb.Model() gurobi_model.setParam('OutputFlag', self.output_flag) input1 = Experiment.generate_input_region(gurobi_model, self.analysis_template, poly1, self.env_input_size) Experiment.generate_region_constraints(gurobi_model, self.analysis_template, input1, poly2, self.env_input_size, eps=1e-5) # use epsilon to prevent single points x_results = self.optimise(self.analysis_template, gurobi_model, input1) if x_results is None: # not contained return False else: return True
def check_unsafe(self, template, bnds): for A, b in self.unsafe_zone: gurobi_model = grb.Model() gurobi_model.setParam('OutputFlag', False) input = gurobi_model.addMVar(shape=(self.env_input_size,), lb=float("-inf"), name="input") Experiment.generate_region_constraints(gurobi_model, template, input, bnds, self.env_input_size) Experiment.generate_region_constraints(gurobi_model, A, input, b, self.env_input_size) gurobi_model.update() gurobi_model.optimize() if gurobi_model.status == 2: return True return False