Python optimization library for mathematical programming.
Project description
Python optimization library for mathematical programming.
Introduction
Pytimize is a python library for
- Formulating and solving complex linear, integer, and nonlinear programs.
- Performing combinatorial optimization with directed/undirected graphs and flows.
- Visualizing polyhedrons and displaying computation process.
Install using pip install pytimize
!
Documentation
Coming soon!
Example
The following shows a code snippet for constructing a linear program and solving
it with two phase simplex. For more detailed examples, please see pytimize/examples
.
>>> from pytimize.formulations.linear import variables, minimize >>> a, b, c, d, e = variables(5) >>> p = minimize(4*c - 11*d - e + 17).subject_to( a + 2*c + 7*d <= 2 + e, b - 4*c - 5*d >= 1 - 3*e ).where( a >= 0, b >= 0, c >= 0, d <= 0, e <= 0 ) >>> p Min [0. 0. 4. -11. -1.]x + 17. Subject To: [1. 0. 2. 7. -1.] ≤ [2.] [0. 1. -4. -5. 3.]x ≥ [1.] x₄, x₅ ≤ 0 x₁, x₂, x₃ ≥ 0 >>> p.dual() Max [2. 1.]x Subject To: [ 1. 0.] ≤ [ 0.] [ 0. 1.] ≤ [ 0.] [ 2. -4.]x ≤ [ 4.] [ 7. -5.] ≥ [-11.] [-1. 3.] ≥ [ -1.] x₁ ≤ 0 x₂ ≥ 0 >>> p.to_sef(in_place=True) Max [0. 0. -4. -11. -1. 0. 0.]x + 17. Subject To: [1. 0. 2. -7. 1. 1. 0.] = [2.] [0. 1. -4. 5. -3. 0. -1.]x = [1.] x ≥ 0 >>> solution, optimal_basis, certificate = p.two_phase_simplex() >>> solution, optimal_basis, certificate (array([2., 1., 0., 0., 0., 0., 0.]), [1, 2], array([0., 0.]) >>> p.verify_optimality(certificate) True >>> p.optimal_value() 17.0
You can also formulate the exact same program by specifying the objective function and constraints in matrix form:
>>> from pytimize.programs import LinearProgram >>> import numpy as np >>> A = np.array([ [1, 0, 2, 7, -1], [0, 1, -4, -5, 3] ]) >>> b = np.array([2, 1]) >>> c = np.array([0, 0, 4, -11, -1]) >>> z = 17 >>> p = LinearProgram(A, b, c, z, "min", ["<=", ">="], negative_variables=[4, 5]) >>> p Min [0. 0. 4. -11. -1.]x + 17 Subject To: [1. 0. 2. 7. -1.] ≤ [2.] [0. 1. -4. -5. 3.]x ≥ [1.] x₄, x₅ ≤ 0 x₁, x₂, x₃ ≥ 0
Contributing
Pytimize is a work in progress project. Contributions are welcome on a pull request basis.
Credits
Pytimize is created and maintained by Terry Zheng, Jonathan Wang, and Colin He. Logo is designed by Kayla Estacio.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size pytimize-0.0.2.tar.gz (3.5 kB) | File type Source | Python version None | Upload date | Hashes View |