# Public interface

Classes in this group are for normal modeling purposes. More...

## Classes
class | flopc::MP_boolean
| Reference counted class for all "boolean" types of data. More...
class | flopc::MP_constraint
| Semantic representation of a linear constraint. More...
class | flopc::MP_data
| Input data set. More...
class | flopc::MP_domain
| Range over which some other constuct is defined. More...
class | flopc::MP_domain_set
| Range over which some other constuct is defined. More...
class | flopc::MP_domain_subset< nbr >
| Range over which some other constuct is defined. More...
class | flopc::MP_expression
| Symbolic representation of a linear expression. More...
class | flopc::MP_index
| Representation of an index. More...
class | flopc::MP_index_exp
| Representation of an expression involving an index. More...
class | flopc::Messenger
| Inteface for hooking up to internal flopc++ message handling. More...
class | flopc::MP_model
| This is the anchor point for all constructs in a FlopC++ model. More...
class | flopc::MP_set
| Representation of a set for indexing into some other construct. More...
class | flopc::MP_variable
| Symantic representation of a variable. More...
class | flopc::MP_binary_variable
| Specialized subclass of MP_variable where the variable is pre-specified to be binary. More...
## Functions
void | flopc::forall (const MP_domain &d, const Functor &f)
| Global function for performing a Functor on each member of a MP_domain.
void | flopc::forall (const Functor &f)
| Global function for performing a Functor without having a set to operate on.
void | flopc::operator<<= (const MP_domain &s, const MP_domain &d)
| Global function which copies members of MP_domain d into another (possibly non-empty) MP_domain.
void | flopc::minimize (const MP_expression &obj)
| This is one of the main entry points for executionThis calls the OsiSolverInterface to execute the solver with the objective of MINIMIZING the argment MP_expression.
void | flopc::minimize_max (MP_set &d, const MP_expression &obj)
| This is one of the main entry points for executionThis calls the OsiSolverInterface to execute the solver with the objective of MINIMIZING THE MAXIMUM of the MP_expression evaluation of the MP_set.
void | flopc::maximize (const MP_expression &obj)
| This is one of the main entry points for executionThis calls the OsiSolverInterface to execute the solver with the objective of MAXIMIZING of the MP_expression.
MP_boolean | flopc::operator! (const MP_boolean &b)
| For computing the logical negation of a booleanThis is used in the normal formation of an expression.
MP_boolean | flopc::operator&& (const MP_boolean &e1, const MP_boolean &e2)
| For computing the logical AND of two booleansThis is used in the normal formation of an expression.
MP_boolean | flopc::operator|| (const MP_boolean &e1, const MP_boolean &e2)
| For computing the logical OR of two booleansThis is used in the normal formation of an expression.
MP_boolean | flopc::alltrue (const MP_domain &d, const MP_boolean &b)
| boolean which returns true if all in domain evaluate to true.
MP_boolean | flopc::operator<= (const MP_index_exp &e1, const MP_index_exp &e2)
| constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.
MP_boolean | flopc::operator<= (const Constant &e1, const Constant &e2)
| constructs a boolean evaluator by comparing two constants.
MP_boolean | flopc::operator< (const MP_index_exp &e1, const MP_index_exp &e2)
| constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.
MP_boolean | flopc::operator< (const Constant &e1, const Constant &e2)
| constructs a boolean evaluator by comparing two constants.
MP_boolean | flopc::operator>= (const MP_index_exp &e1, const MP_index_exp &e2)
| constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.
MP_boolean | flopc::operator>= (const Constant &e1, const Constant &e2)
| constructs a boolean evaluator by comparing two constants.
MP_boolean | flopc::operator> (const MP_index_exp &e1, const MP_index_exp &e2)
| constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.
MP_boolean | flopc::operator> (const Constant &e1, const Constant &e2)
| constructs a boolean evaluator by comparing two constants.
MP_boolean | flopc::operator== (const MP_index_exp &e1, const MP_index_exp &e2)
| constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.
MP_boolean | flopc::operator== (const Constant &e1, const Constant &e2)
| constructs a boolean evaluator by comparing two constants.
MP_boolean | flopc::operator!= (const MP_index_exp &e1, const MP_index_exp &e2)
| constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.
MP_boolean | flopc::operator!= (const Constant &e1, const Constant &e2)
| constructs a boolean evaluator by comparing two constants.
Constant | flopc::abs (const Constant &c)
| for computing the absolute value of a constant value.
Constant | flopc::pos (const Constant &c)
| for returning non-negative value of the constant.
Constant | flopc::ceil (const Constant &c)
| The ceiling integral value of the input constant.
Constant | flopc::floor (const Constant &c)
| The floor integral value of the input constant.
Constant | flopc::minimum (const Constant &a, const Constant &b)
| Returns the smaller of two constants.
Constant | flopc::maximum (const Constant &a, const Constant &b)
| Returns the larger of two constants.
Constant | flopc::operator+ (const Constant &a, const Constant &b)
| Returns the sum of two constants.
Constant | flopc::operator- (const Constant &a, const Constant &b)
| Returns the difference of two constants.
Constant | flopc::operator* (const Constant &a, const Constant &b)
| Returns the product of two constants.
Constant | flopc::operator/ (const Constant &a, const Constant &b)
| Returns the quotient of two constants.
Constant | flopc::maximum (const MP_domain &i, const Constant &e)
| Returns the maximum over the domain of the constant.
Constant | flopc::minimum (const MP_domain &i, const Constant &e)
| Returns the sum of two constants.
Constant | flopc::sum (const MP_domain &i, const Constant &e)
| Returns the sum of two constants.
Constant | flopc::product (const MP_domain &i, const Constant &e)
| Returns the sum of two constants.
Constraint | flopc::operator<= (const MP_expression &l, const MP_expression &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator<= (const Constant &l, const MP_expression &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator<= (const MP_expression &l, const Constant &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator<= (const VariableRef &l, const VariableRef &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator>= (const MP_expression &l, const MP_expression &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator>= (const Constant &l, const MP_expression &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator>= (const MP_expression &l, const Constant &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator>= (const VariableRef &l, const VariableRef &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator== (const MP_expression &l, const MP_expression &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator== (const Constant &l, const MP_expression &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator== (const MP_expression &l, const Constant &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.
Constraint | flopc::operator== (const VariableRef &l, const VariableRef &r)
| Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

## Detailed Description

Classes in this group are for normal modeling purposes.

They are intended for consumption outside the library.

## Function Documentation

void flopc::forall | ( | const MP_domain & | d,
|  | const Functor & | f |
| ) |  |  | `[inline]`

Global function for performing a Functor on each member of a MP_domain.

Definition at line 55 of file flopc.hpp.

void flopc::forall | ( | const Functor & | f | ) | `[inline]`

Global function for performing a Functor without having a set to operate on.

Todo:
  This turns into a no-op?

Definition at line 64 of file flopc.hpp.

void flopc::operator<<= | ( | const MP_domain & | s,
|  | const MP_domain & | d |
| ) |  |  | `[inline]`

Global function which copies members of MP_domain d into another (possibly non-empty) MP_domain.

Definition at line 72 of file flopc.hpp.

void flopc::minimize | ( | const MP_expression & | obj | ) | `[inline]`

This is one of the main entry points for executionThis calls the OsiSolverInterface to execute the solver with the objective of MINIMIZING the argment MP_expression.

- Assumes that the OsiSolverInterface is already set
- Assumes a model is already loaded (and is the default model)

Definition at line 83 of file flopc.hpp.

void flopc::minimize_max | ( | MP_set & | d,
|  | const MP_expression & | obj |
| ) |  |  | `[inline]`

This is one of the main entry points for executionThis calls the OsiSolverInterface to execute the solver with the objective of MINIMIZING THE MAXIMUM of the MP_expression evaluation of the MP_set.

Todo:
  true?

- Assumes that the OsiSolverInterface is already set
- Assumes a model is already loaded (and is the default model)

Definition at line 96 of file flopc.hpp.

void flopc::maximize | ( | const MP_expression & | obj | ) | `[inline]`

This is one of the main entry points for executionThis calls the OsiSolverInterface to execute the solver with the objective of MAXIMIZING of the MP_expression.

- Assumes that the OsiSolverInterface is already set
- Assumes a model is already loaded (and is the default model)

Definition at line 107 of file flopc.hpp.

MP_boolean flopc::operator! | ( | const MP_boolean & | b | ) |

For computing the logical negation of a booleanThis is used in the normal formation of an expression.

Parameters:

  | b | boolean

Returns:
  A boolean which evaluates to the negation of the input expression.

Todo:
  true? haven't used it.

MP_boolean flopc::operator&& | ( | const MP_boolean & | e1,
|  | const MP_boolean & | e2 |
| ) |  |  |

For computing the logical AND of two booleansThis is used in the normal formation of an expression.

Parameters:

  | e1 | first boolean
  | e2 | second boolean

Returns:
  A boolean which evaluates to true of both booleans are true.

Todo:
  true? haven't used it.

MP_boolean flopc::operator|| | ( | const MP_boolean & | e1,
|  | const MP_boolean & | e2 |
| ) |  |  |

For computing the logical OR of two booleansThis is used in the normal formation of an expression.

Parameters:

  | e1 | first boolean
  | e2 | second boolean

Returns:
  A boolean which evaluates to true if either booleans are true.

Todo:
  true? haven't used it.

MP_boolean flopc::alltrue | ( | const MP_domain & | d,
|  | const MP_boolean & | b |
| ) |  |  |

boolean which returns true if all in domain evaluate to true.

This is used in the normal formation of an expression.

Parameters:

  | d | MP_domain to evaluate with
  | b | boolean expression to evaluate.

Returns:
  A boolean which evaluates to true all domain evaluations of the boolean evaluate to true.

Todo:
  true? haven't used it.

MP_boolean flopc::operator<= | ( | const MP_index_exp & | e1,
|  | const MP_index_exp & | e2 |
| ) |  |  |

constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.

This is useful when combining index expressions.

Parameters:

  | e1 | is an index expression involving an MP_index
  | e2 | second index expression used in forming sets of tuples of index values, or subsets.

Todo:
  improve this a bit?

The brief code below is a bit contrived, but the right hand side illustrate the utility of combining an index expression. `MP_index i;
MP_index j;
MP_boolean &b = (i+5)<=(j);`

MP_boolean flopc::operator<= | ( | const Constant & | e1,
|  | const Constant & | e2 |
| ) |  |  |

constructs a boolean evaluator by comparing two constants.

This is used in the normal formation of an expression. This utility of this is when comparing constants

Parameters:

  | e1 | first constant expression
  | e2 | second constant expression

MP_boolean flopc::operator< | ( | const MP_index_exp & | e1,
|  | const MP_index_exp & | e2 |
| ) |  |  |

constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.

This is useful when combining index expressions.

Parameters:

  | e1 | is an index expression involving an MP_index
  | e2 | second index expression used in forming sets of tuples of index values, or subsets.

Todo:
  improve this a bit?

MP_boolean flopc::operator< | ( | const Constant & | e1,
|  | const Constant & | e2 |
| ) |  |  |

constructs a boolean evaluator by comparing two constants.

This is used in the normal formation of an expression. This utility of this is when comparing constants

Parameters:

  | e1 | first constant expression
  | e2 | second constant expression

MP_boolean flopc::operator>= | ( | const MP_index_exp & | e1,
|  | const MP_index_exp & | e2 |
| ) |  |  |

constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.

This is useful when combining index expressions.

Parameters:

  | e1 | is an index expression involving an MP_index
  | e2 | second index expression used in forming sets of tuples of index values, or subsets.

Todo:
  improve this a bit?

MP_boolean flopc::operator>= | ( | const Constant & | e1,
|  | const Constant & | e2 |
| ) |  |  |

constructs a boolean evaluator by comparing two constants.

This is used in the normal formation of an expression. This utility of this is when comparing constants

Parameters:

  | e1 | first constant expression
  | e2 | second constant expression

MP_boolean flopc::operator> | ( | const MP_index_exp & | e1,
|  | const MP_index_exp & | e2 |
| ) |  |  |

constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.

This is useful when combining index expressions.

Parameters:

  | e1 | is an index expression involving an MP_index
  | e2 | second index expression used in forming sets of tuples of index values, or subsets.

Todo:
  improve this a bit?

MP_boolean flopc::operator> | ( | const Constant & | e1,
|  | const Constant & | e2 |
| ) |  |  |

constructs a boolean evaluator by comparing two constants.

This is used in the normal formation of an expression. This utility of this is when comparing constants

Parameters:

  | e1 | first constant expression
  | e2 | second constant expression

MP_boolean flopc::operator== | ( | const MP_index_exp & | e1,
|  | const MP_index_exp & | e2 |
| ) |  |  |

constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.

This is useful when combining index expressions.

Parameters:

  | e1 | is an index expression involving an MP_index
  | e2 | second index expression used in forming sets of tuples of index values, or subsets.

Todo:
  improve this a bit?

MP_boolean flopc::operator== | ( | const Constant & | e1,
|  | const Constant & | e2 |
| ) |  |  |

constructs a boolean evaluator by comparing two constants.

This is used in the normal formation of an expression. This utility of this is when comparing constants

Parameters:

  | e1 | first constant expression
  | e2 | second constant expression

MP_boolean flopc::operator!= | ( | const MP_index_exp & | e1,
|  | const MP_index_exp & | e2 |
| ) |  |  |

constructs a boolean evaluator using operator overloadingThis is used in the normal formation of an expression.

This is useful when combining index expressions.

Parameters:

  | e1 | is an index expression involving an MP_index
  | e2 | second index expression used in forming sets of tuples of index values, or subsets.

Todo:
  improve this a bit?

MP_boolean flopc::operator!= | ( | const Constant & | e1,
|  | const Constant & | e2 |
| ) |  |  |

constructs a boolean evaluator by comparing two constants.

This is used in the normal formation of an expression. This utility of this is when comparing constants

Parameters:

  | e1 | first constant expression
  | e2 | second constant expression

Constant flopc::abs | ( | const Constant & | c | ) |

for computing the absolute value of a constant value.

This is used in the normal formation of an expression such as abs(-5)

- input is a constant. It cannot be a variable expression.
- Returns a Constant evaluating to the absolute value of the parameter

Constant flopc::pos | ( | const Constant & | c | ) |

for returning non-negative value of the constant.

This is used in the formation of an expression. It is used to return a non-negative value..

Parameters:

  | c | an imput constant

Returns:
  the absolute value of the constant.
  - if the Constant is positive, it returns a positive number.
  - if the Constant is negative or zero, it returns 0.0

Constant flopc::ceil | ( | const Constant & | c | ) |

The ceiling integral value of the input constant.

This is used in the formation of an expression. It is used to "round up" a numeric constant which is potentially non-integer.

Parameters:

  | c | is a constant

Returns:
  the ceiling or "rounded up" of the parameter
  - ceil(3.2) evaluates to 4.0

Constant flopc::floor | ( | const Constant & | c | ) |

The floor integral value of the input constant.

This is used in the formation of an expression. It is used to "truncate" a numeric constant which is potentially non-integer.

Parameters:

  | c | is a constant

Returns:
  the floor or "truncated" value of the parameter
  - floor(3.7) evaluates to 3.0

Constant flopc::minimum | ( | const Constant & | a,
|  | const Constant & | b |
| ) |  |  |

Returns the smaller of two constants.

This is used in the formation of an expression.

Parameters:

  | a | first constant
  | b | second constant

Returns:
  the lesser of the two values.
  - minimum(3.6,3.7) evaluates to 3.6

Constant flopc::maximum | ( | const Constant & | a,
|  | const Constant & | b |
| ) |  |  |

Returns the larger of two constants.

This is used in the formation of an expression.

Parameters:

  | a | first constant
  | b | second constant

Returns:
  the greater of the two numbers
  - maximum(3.6,3.7) evaluates to 3.7

Constant flopc::operator+ | ( | const Constant & | a,
|  | const Constant & | b |
| ) |  |  |

Returns the sum of two constants.

This is used in the formation of an expression.

Parameters:

  | a | first constant
  | b | second constant

Returns:
  the sum of the constants.

Constant flopc::operator- | ( | const Constant & | a,
|  | const Constant & | b |
| ) |  |  |

Returns the difference of two constants.

This is used in the formation of an expression.

Parameters:

  | a | first constant
  | b | second constant

Returns:
  the difference between the constants.

Constant flopc::operator* | ( | const Constant & | a,
|  | const Constant & | b |
| ) |  |  |

Returns the product of two constants.

This is used in the formation of an expression.

Parameters:

  | a | first constant
  | b | second constant

Returns:
  the result of multiplying the constants.

Constant flopc::operator/ | ( | const Constant & | a,
|  | const Constant & | b |
| ) |  |  |

Returns the quotient of two constants.

This is used in the formation of an expression.

Parameters:

  | a | first constant
  | b | second constant

Returns:
  the result of dividing the first parameter by the second.

Constant flopc::maximum | ( | const MP_domain & | i,
|  | const Constant & | e |
| ) |  |  |

Returns the maximum over the domain of the constant.

Todo:
  description? Haven't used this.

Parameters:

  | i | MP_domain used in evaluation
  | e | constant

Constant flopc::minimum | ( | const MP_domain & | i,
|  | const Constant & | e |
| ) |  |  |

Returns the sum of two constants.

Todo:
  description? Haven't used this.

Parameters:

  | i | MP_domain used in evaluation
  | e | second constant

Constant flopc::sum | ( | const MP_domain & | i,
|  | const Constant & | e |
| ) |  |  |

Returns the sum of two constants.

Todo:
  description? Haven't used this.

Parameters:

  | i | MP_domain used in evaluation
  | e | constant

Constant flopc::product | ( | const MP_domain & | i,
|  | const Constant & | e |
| ) |  |  |

Returns the sum of two constants.

Todo:
  description? Haven't used this.

Parameters:

  | i | MP_domain used in evaluation
  | e | constant

Constraint flopc::operator<= | ( | const MP_expression & | l,
|  | const MP_expression & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 69 of file MP_constraint.hpp.

Constraint flopc::operator<= | ( | const Constant & | l,
|  | const MP_expression & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 77 of file MP_constraint.hpp.

Constraint flopc::operator<= | ( | const MP_expression & | l,
|  | const Constant & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 85 of file MP_constraint.hpp.

Constraint flopc::operator<= | ( | const VariableRef & | l,
|  | const VariableRef & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 93 of file MP_constraint.hpp.

Constraint flopc::operator>= | ( | const MP_expression & | l,
|  | const MP_expression & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 102 of file MP_constraint.hpp.

Constraint flopc::operator>= | ( | const Constant & | l,
|  | const MP_expression & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 110 of file MP_constraint.hpp.

Constraint flopc::operator>= | ( | const MP_expression & | l,
|  | const Constant & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 118 of file MP_constraint.hpp.

Constraint flopc::operator>= | ( | const VariableRef & | l,
|  | const VariableRef & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 126 of file MP_constraint.hpp.

Constraint flopc::operator== | ( | const MP_expression & | l,
|  | const MP_expression & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 135 of file MP_constraint.hpp.

Constraint flopc::operator== | ( | const Constant & | l,
|  | const MP_expression & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 143 of file MP_constraint.hpp.

Constraint flopc::operator== | ( | const MP_expression & | l,
|  | const Constant & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 151 of file MP_constraint.hpp.

Constraint flopc::operator== | ( | const VariableRef & | l,
|  | const VariableRef & | r |
| ) |  |  | `[inline]`

Uses operator overloading to construct an ConstraintConstucts a Constraint using operator overloading.

See also:
  MP_constraint

Definition at line 159 of file MP_constraint.hpp.