Skip to main content

pytimize

Python optimization library for mathematical programming.

PyPI Apache Build

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.

Release files for pytimize 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytimize 0.0.4
File Size Uploaded
pytimize-0.0.4.tar.gz 38.5 kB Details

Release files / pytimize-0.0.4.tar.gz

Download URL pytimize-0.0.4.tar.gz
Size 38.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b6af25401a522205f567910eeff87160a55135894ff7b0ff2520e4280f100b3e
BLAKE2b-256 checksum
How to use checksums
baa988d537f29da4abecbec432bdb334adb58dde4ecb6770ee39832de4a2d7a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release history Release notifications | RSS feed

This release

0.0.4 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page