Skip to main content

Number partitioning in Python

Project description

prtpy

Pytest result PyPI version

Python code for multiway number partitioning. Supports several exact and approximate algorithms, with several input formats, optimization objectives and output formats.

Installation

pip install prtpy

To use the integer-programming functions, you also need an ILP solver. On Windows, the simplest one to install is the CBC solver, which you can install by:

pip install cylp

On Linux and Mac, you need to install the CBC binaries before that; see the CyLP documentation. For example, on Ubuntu 20.04 with Python 3.8 or 3.9, you can run:

sudo apt-get update
sudo apt-get install coinor-libcbc-dev
pip install cylp

If you want a more efficient ILP solver, you need to manually install one. The supported solvers are the ones supported by cvxpy, which are: XPRESS, SCIP, GUROBI and MOSEK. GLPK_MI is also supported, but it is very slow. See the CVXPY documentation for more information.

Usage

The function prtpy.partition can be used to activate all algorithms. For example, to partition the values [1,2,3,4,5] into two bins using the greedy algorithm, do:

import prtpy
prtpy.partition(algorithm=prtpy.approx.greedy, numbins=2, items=[1,2,3,4,5])

For more features and examples, see:

  1. Algorithms;
  2. Input formats;
  3. Optimization objectives;
  4. Output formats.

Limitations

The package is tested only on Python 3.8 and 3.9. Earlier versions, as well as 3.10, are not supported.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prtpy-0.1.0.tar.gz (24.4 kB view hashes)

Uploaded Source

Built Distribution

prtpy-0.1.0-py3-none-any.whl (14.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page