This package contains a basic implementation of the Simplex algorithm.
For example, given a function with constraints:
F = 7X1 + 8X2 + 10X3
2X1 + 3X2 + 2X3 ≤ 1000
X1 + X2 + 2X3 ≤ 800
We need to maximize F(X1 X2 X3).
let function : [Double] = [7, 8, 10]
let constraint1 : [Double] = [2, 3, 2, 1000]
let constraint2 : [Double] = [1, 1, 2, 800]
if let solution = SimplexSolver.maximize(function: function, constraints: [constraint1, constraint2], maximumIterationsCount: 10) {
let x1 = solution[0] // 200
let x2 = solution[1] // 0
let x3 = solution[2] // 300
let f = solution[3] // 4400
}
The maximum value of the function F(X1 X2 X3) is 4400 when X1 = 200, X2 = 0, X3 = 300.
Another example, given a function with constraints:
F = 3X1 + 9X2
2X1 + X2 ≥ 8
X1 + 2X2 ≥ 8
Minimize F(X1 X2).
let function : [Double] = [3, 9]
let constraint1 : [Double] = [2, 1, 8]
let constraint2 : [Double] = [1, 2, 8]
if let solution = SimplexSolver.minimize(function: function, constraints: [constraint1, constraint2], maximumIterationsCount: 10) {
let x1 = solution[0] // 8
let x2 = solution[1] // 0
let f = solution[2] // 24
}
The minimum value of the function F(X1 X2) is 24 when X1 = 8, X2 = 0.