def both_roles_constraint(cls, v1, v2, v3): lhs = flipy.LpExpression(expression={v1: 1, v2: 1}) rhs = flipy.LpExpression(expression={v3: 1}, constant=1) return flipy.LpConstraint(lhs, 'leq', rhs, name=f'_C_BothRolesPenalty_{cls._cons_id()}')
def sum_expr_weight(cls, lp_var_list: List[LpVariable], increase_flag: bool): delta = 0.01 min_weight = 0.5 n = len(lp_var_list) if not increase_flag: return flipy.LpExpression( expression={ v: max(1 - idx * delta, min_weight) for idx, v in enumerate(lp_var_list) }) return flipy.LpExpression( expression={ v: max(1 - (n - idx - 1) * delta, min_weight) for idx, v in enumerate(lp_var_list) })
def const_expr(cls, value: int): return flipy.LpExpression(constant=value)
def sum_expr_weight_1(cls, lp_var_list: List[LpVariable]): return flipy.LpExpression(expression={v: 1 for v in lp_var_list})