package lp

  1. Overview
  2. Docs
LP and MIP modeling in OCaml

Install

dune-project
 Dependency

Authors

Maintainers

Sources

0.4.0.tar.gz
md5=92a179cb5ff0feb598b9cc404779f6dc
sha512=c34ee01cc8ffa980b7e94a951179292a40df98fb4afa6d0d7bbeb6ae0a8d60c3fbfc031a634e2ee74236b493f38ee548bf22acfb6b5c47baccbbf2778ff89c7c

doc/src/lp/objective.ml.html

Source file objective.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type t = Max of Poly.t | Min of Poly.t

let maximize ?(eps = 10. *. epsilon_float) p = Max (Poly.simplify ~eps p)

let minimize ?(eps = 10. *. epsilon_float) p = Min (Poly.simplify ~eps p)

let take_vars = function Max p | Min p -> Poly.take_vars p

let to_poly = function Max p | Min p -> p

let to_string ?(short = false) o =
  let p_string p = Poly.to_string ~short (Poly.double_quad p) in
  match o with
  | Max p when Poly.degree p >= 2 ->
      "maximize\n " ^ p_string p ^ " / 2"
  | Max p ->
      "maximize\n " ^ p_string p
  | Min p when Poly.degree p >= 2 ->
      "minimize\n " ^ p_string p ^ " / 2"
  | Min p ->
      "minimize\n " ^ p_string p

let with_bound name lb ub = function
  | Max p ->
      Max (Poly.with_bound name lb ub p)
  | Min p ->
      Min (Poly.with_bound name lb ub p)

let to_integer name = function
  | Max p ->
      Max (Poly.to_integer name p)
  | Min p ->
      Min (Poly.to_integer name p)

let to_binary name = function
  | Max p ->
      Max (Poly.to_binary name p)
  | Min p ->
      Min (Poly.to_binary name p)

let degree = function Max p | Min p -> Poly.degree p

let is_max = function Max _ -> true | Min _ -> false