Skip to main content

PyQUBO allows you to create QUBOs or Ising models from mathematical expressions.

Project description

https://img.shields.io/pypi/v/pyqubo.svg https://codecov.io/gh/recruit-communications/pyqubo/branch/master/graph/badge.svg https://readthedocs.org/projects/pyqubo/badge/?version=latest https://circleci.com/gh/recruit-communications/pyqubo.svg?style=svg

PyQUBO

PyQUBO allows you to create QUBOs or Ising models from flexible mathematical expressions easily. Some of the features of PyQUBO are

  • Python-based (the entire code is written in Python).

  • QUBO generation (compile) is fast (due to the JIT like compile mechanism).

  • Comes with plenty of useful expressions such as binary integer variables, logical constraints, or matrix/vector variables.

For more details, see PyQUBO Documentation.

Example Usage

This example constructs a simple expression and compile it to model. By calling model.to_qubo(), we get the resulting QUBO. (This example solves a number partitioning problem with a set S = {4, 2, 7, 1})

>>> from pyqubo import Spin
>>> s1, s2, s3, s4 = Spin("s1"), Spin("s2"), Spin("s3"), Spin("s4")
>>> H = (4*s1 + 2*s2 + 7*s3 + s4)**2
>>> model = H.compile()
>>> qubo, offset = model.to_qubo()
>>> pprint(qubo)
{('s1', 's1'): -160.0,
 ('s1', 's2'): 64.0,
 ('s1', 's3'): 224.0,
 ('s1', 's4'): 32.0,
 ('s2', 's2'): -96.0,
 ('s2', 's3'): 112.0,
 ('s2', 's4'): 16.0,
 ('s3', 's3'): -196.0,
 ('s3', 's4'): 56.0,
 ('s4', 's4'): -52.0}

Installation

pip install pyqubo

or

python setup.py install

Supported Python Versions

Python 2.7, 3.4, 3.5, 3.6 and 3.7 are supported.

Test

Run all tests.

python -m unittest discover test

Show coverage report.

coverage run -m unittest discover
coverage html

Run test with circleci CLI.

circleci build --job $JOBNAME

Run doctest.

make doctest

Organization

Recruit Communications Co., Ltd.

Licence

Released under the Apache License 2.0.

Contribution

We welcome contributions to this project.

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

pyqubo-0.0.8.tar.gz (21.9 kB view details)

Uploaded Source

File details

Details for the file pyqubo-0.0.8.tar.gz.

File metadata

  • Download URL: pyqubo-0.0.8.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for pyqubo-0.0.8.tar.gz
Algorithm Hash digest
SHA256 1fcd7a2c28aa035bfbb50b788b72a6b7c06b7bfbb4bd4e59e258417916ab13b4
MD5 a92e32ca8dd9f4e84164189e3d69d4c1
BLAKE2b-256 8de8c3a0a255d060717bc7f93e63f4f1396e8267cac67f1fd8aa668618682363

See more details on using hashes here.

Supported by

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