Files
ortools-clone/examples/dotnet/fsequality-inequality.fs
Corentin Le Molgat 0ba343e0cd Fixup F# examples
2018-09-07 16:59:47 +02:00

36 lines
1.1 KiB
Forth

(*
Minimize: -3 * x[0] + 1 * x[1] + 1 * x[2]
Subject to: 1 * x[0] - 2 * x[1] + 1 * x[2] <= 11
-4 * x[0] + 1 * x[1] + 2 * x[2] >= 3
-2 * x[0] + 0 * x[1] - 1 * x[2] = -1
And x[0] >= 0, x[1] >= 0, x[2] >= 0
Answer:
Objective: 2.000000
var[0] : 0.000000
var[1] : 1.000000
var[2] : 1.000000
var[3] : 12.000000
var[4] : 0.000000
Note: When entering the matrix, it is reduced to standard form with appropriate slack variables.
*)
open System
open Google.OrTools.FSharp
let opts = SolverOpts.Default
.Name("Equality/Inequality Constraints")
.Goal(Minimize)
.Objective([-3.0;1.0;1.0;0.0;0.0])
.MatrixEq([[1.0;-4.0;2.0]; [-2.0;1.0;0.0]; [1.0;2.0;1.0]; [1.0;0.0;0.0]; [0.0;-1.0;0.0]])
.VectorEq([11.0; 3.0; 1.0])
.VarLowerBound(0. |> List.replicate 5)
.VarUpperBound(Double.PositiveInfinity |> List.replicate 5)
let slvrCLP = opts.Algorithm(LP CLP) |> lpSolve |> SolverSummary
let slvrGLOP = opts.Algorithm(LP GLOP) |> lpSolve |> SolverSummary