Exemplo n.º 1
0
    def _filter_solutions(self, reslist, constraints, comp_eps):
        filtered = []
        hasnone = False
        tol_res = []
        for res in reslist:
            if None in res.values():
                if not hasnone:
                    filtered.append(res)
                    hasnone = True
            else:
                res_ = Solution({var: float(val) for var, val in res.items()})
                # res_ = res
                res_int = [int(round(r/comp_eps)) for r in res_.values()]
                if res_int not in tol_res:
                    tol_res.append(res_int)

                    if len(constraints) > 0:
                        satisfy = True
                        for constr in constraints:
                            # c = const.subs(res_dict)
                            c = constr.subs(res_)
                            satisfy = satisfy & c
                        if satisfy:
                            filtered.append(res_)
                    else:
                        filtered.append(res_)
        return filtered