package lp
Library
Module
Module type
Parameter
Class
Class type
Module for polynomial expression type
type decomposed = {
const : float;
lcs : float list;
lvs : Var.t list;
qcs : float list;
qv0s : Var.t list;
qv1s : Var.t list;
}
Type for the decomposed expression of the polynomial
val c : float -> t
Make monomial of a constant value
val var : ?integer:bool -> ?lb:float -> ?ub:float -> string -> t
Make monomial of a variable
val binary : string -> t
Make monomial of a binary variable
val range :
?integer:bool ->
?lb:float ->
?ub:float ->
?start:int ->
int ->
string ->
t array
Make an array of monomials of a variable with uniform bounds
val range2 :
?integer:bool ->
?lb:float ->
?ub:float ->
?start0:int ->
?start1:int ->
int ->
int ->
string ->
t array array
Make 2D array of monomials of a variable with uniform bounds
val range3 :
?integer:bool ->
?lb:float ->
?ub:float ->
?start0:int ->
?start1:int ->
?start2:int ->
int ->
int ->
int ->
string ->
t array array array
Make 3D array of monomials of a variable with uniform bounds
val rangeb : ?start:int -> int -> string -> t array
Make an array of monomials of a binary variable
val range2b :
?start0:int ->
?start1:int ->
int ->
int ->
string ->
t array array
Make 2D array of monomials of a binary variable
val range3b :
?start0:int ->
?start1:int ->
?start2:int ->
int ->
int ->
int ->
string ->
t array array array
Make 3D array of monomials of a binary variable
val rangev :
?integer:bool ->
?lb:float array ->
?ub:float array ->
?start:int ->
int ->
string ->
t array
Make an array of monomials of a variable with different bounds
val range2v :
?integer:bool ->
?lb:float array array ->
?ub:float array array ->
?start0:int ->
?start1:int ->
int ->
int ->
string ->
t array array
Make 2D array of monomials of a variable with different bounds
val range3v :
?integer:bool ->
?lb:float array array array ->
?ub:float array array array ->
?start0:int ->
?start1:int ->
?start2:int ->
int ->
int ->
int ->
string ->
t array array array
Make 3D array of monomials of a variable with different bounds
val of_float_array : float array -> t
Convert a float array into a polynomial
val to_float : t -> float
Convert a Constant monomial to float. * Raises Failure if it's not constant monomial
val zero : t
Constant zero
val one : t
Constant one
val to_string : ?short:bool -> t -> string
Get string expression of the polynomial
val classify : t -> classified
Classify terms into three categories quad, linear, const
val decompose : t -> decomposed
Decompose the polynomial into const, lcs, lvs, qcs, qv0s, qv1s
val collision : t -> bool
Check if any variable collision exist in the polynomial
Simplify the polynomial. The polynomial is sorted and terms with same variables are accumulated. After that, near-zero terms are dropped. eps
specifies the threshold of near-zero, defaulting to 10. *. epsilon_float.
val degree : t -> int
Get the degree of polynomial
Divide polynomial by a univariate polynomial. Be careful as this function raises exception in following cases.
trans_bound name
lb
ub
transforms the bounds of the variable name
with lb
and ub
to_integer name
transforms the variable name
into general integer variable
apply a function to all terms in the polynomial and build a list
apply a function only to linear terms in the polynomial and build a list. * Raise Failure if non-linear terms exist.
apply a function to all terms in the polynomial and build a list
apply a function only to linear terms in the polynomial. * non-linear terms are just ignored.
apply a function only to linear terms in the polynomial. * Raise Failure if non-linear terms exist.
val length : t -> int
val take_linear_coeffs : t -> float list