def regret_is_lower(p0, p1, solutions, obj_funcs, prob):

    def regret(p):
        f_values = np.array([obj_funcs[i](s) for (i, s) in enumerate(solutions)])
        cost = (f_values - np.array([f((p @ solutions)) for f in obj_funcs]))
        cost = np.asarray((cost ** 2))
        return (100 * sum((prob * cost)))
    return (regret(p0) <= regret(p1))
def regret_is_lower(p0, p1, solutions, obj_funcs, prob):

    def regret(p):
        f_values = np.array([obj_funcs[i](s) for (i, s) in enumerate(solutions)])
        cost = (f_values - np.array([f((p @ solutions)) for f in obj_funcs]))
        cost = np.asarray((cost ** 2))
        return (100 * sum((prob * cost)))
    return (regret(p0) <= regret(p1))