Skip to content

LpObjective

A class representing an objective function

Attributes

sense: Type[Union[flipy.lp_objective.Minimize, flipy.lp_objective.Maximize]] property writable

Getter for the sense of the objective

Returns:

Type Description
Type[Union[flipy.lp_objective.Minimize, flipy.lp_objective.Maximize]]

The sense of the linear objective, i.e. minimize or maximize

Methods

add_constant(self, const) inherited

Adds a constant to the expression (adds to existing constant)

Parameters:

Name Type Description Default
const Union[int, float]

The constant to add

required
Source code in flipy/lp_objective.py
def add_constant(self, const: Numeric) -> None:
    """ Adds a constant to the expression (adds to existing constant)

    Parameters
    ----------
    const:
        The constant to add
    """
    self.const += const

add_expression(self, other) inherited

Adds another expression to this expression (summing coefficients)

Parameters:

Name Type Description Default
other LpExpression

The expression to add

required
Source code in flipy/lp_objective.py
def add_expression(self, other: 'LpExpression') -> None:
    """ Adds another expression to this expression (summing coefficients)

    Parameters
    ----------
    other:
        The expression to add
    """
    for var, coeff in other.expr.items():
        self.expr[var] += coeff
    self.const += other.const

add_variable(self, var) inherited

Adds a variable to the expression (with coefficient 1)

Parameters:

Name Type Description Default
var LpVariable

The variable to add to the expression

required
Source code in flipy/lp_objective.py
def add_variable(self, var: LpVariable) -> None:
    """ Adds a variable to the expression (with coefficient 1)

    Parameters
    ----------
    var:
        The variable to add to the expression
    """
    self.expr[var] += 1

evaluate(self) inherited

Gives the value of the expression

Source code in flipy/lp_objective.py
def evaluate(self) -> Numeric:
    """ Gives the value of the expression """
    return sum(var.evaluate() * coeff for var, coeff in self.expr.items()) + self.const

sorted_keys(self) inherited

Returns a list of variable in the expression sorted by name

Source code in flipy/lp_objective.py
def sorted_keys(self) -> List[LpVariable]:
    """ Returns a list of variable in the expression sorted by name """
    return sorted((v for v in self.expr.keys()), key=lambda v: v.name)

to_lp_terms(self, slack=None) inherited

Returns a list of string that represents the expression in lp format split in terms

Parameters:

Name Type Description Default
slack Optional[Mapping[flipy.lp_variable.LpVariable, Union[int, float]]]

All slack variables being used and their coefficients

None

Returns:

Type Description
List[str]

List of terms in string

Source code in flipy/lp_objective.py
def to_lp_terms(self, slack: Optional[Mapping[LpVariable, Numeric]] = None) -> List[str]:
    """ Returns a list of string that represents the expression in lp format split in terms

    Parameters
    ----------
    slack:
        All slack variables being used and their coefficients

    Returns
    -------
    list(str)
        List of terms in string
    """
    terms = []
    is_first = True
    slack = slack or {}
    for var in self.sorted_keys():
        coeff = self.expr[var]
        terms.append(self._to_lp_term_str(var.name, coeff, is_first=is_first))
        is_first = False

    for slack_var in sorted(slack.keys(), key=lambda v: v.name):
        coeff = slack[slack_var]
        terms.append(self._to_lp_term_str(slack_var.name, coeff, is_first=is_first))
        is_first = False

    if self.const < 0:
        terms.append(f'- {-self.const}')
    elif self.const > 0:
        terms.append(f'+ {self.const}')
    elif self.const == 0 and not terms:
        terms.append(f'{self.const}')
    return terms