Skip to main content

It is modeling tool for automatically generating Ising models from JSS Petri nets.

Project description

PxI4JSS

PxI4JSS automatically generates Ising models from Petri net models for Job Shop Scheduling (JSS) Problem.

Overview

By importing a Petri net model for JSS (Single Resource Type) created by CPN Tools, our software generates an Ising (QUBO) model for the JSS problem. After that, annealers for Ising (QUBO) models(e.g., PyQUBO Simulated Annealier) obtains solutions.

job4_exp

Why did we create this tool?

Quantum annealing has attracted attention as a new algorithm for solving combinatorial optimization problems. To use this method, we need to formulate the target combinatorial optimization problem as energy functions called the Ising (QUBO) model.

However, the formulation of the Ising model requires expertise and skills.

Our objective is to develop a method that makes it easy for non-specialists to formulate Ising (QUBO) Models for their target problems with domain knowledge only.

As an approach, we developed a method that first models the target problem with Petri nets and generates Ising (QUBO) models from them.

Petri nets are a graphical modeling language. Therefore, we can graphically model our target optimization problems with Petri nets without formulating equations.

Getting Started

Installing

% pip install pxi4jss

Usage

Please see above figure.

  1. Create Petri nets by CPN tools
  2. Export Petrinet as xml file
  3. Input xml file and generate Petri net objects by cpntools4py
  4. Generate and solve Ising models from Petri net objects by This package

Example

Example from reading XML to solving Ising model. In detail, notebook example here.

import pxi4jss
import cpntools4py

# Read petrinet created by CPN Tools
xml_path = './inputs/jss_job4.xml'
xml_doc = cpntools4py.read_xml(xml_path)
cpn = cpntools4py.CPN(xml_doc)
# To snakes objects
snakes_net = cpntools4py.to_snakes(cpn)
# Generating ising model and solving it
res = pxi4jss.main(snakes_net)

# Solution
print(res['solution']['energy'])
# => 0.0
print(res['solution']['end_time'])
# => 23
print(res['topology']['jobs']) # key: job, value: task
# =>
# {0: ['t0', 't1', 't2', 't3'],
#  1: ['t4', 't5', 't6', 't7'],
#  2: ['t8', 't9', 't10', 't11']}

Modeling a JSS instance by CPNTools

We can model JSS instances. The following figure shows an example with four jobs, four tasks per job, and one resource(machine) per each resource type.

jss_job4

Petri nets and JSS Mapping

jss_job4_colored

  • Transitions: Task

    • Fires when a machine processes a task and stops firing when it finishes.
    • The firing time is set for each task as processing time.
  • Place: Representation of system state and required resources.

    • It is divided into task place and resource place.
  • Task place: with a place token

    • Place token: Job processing status

      No need to configure in this package.

  • Resource place: with a resource place token

    • Resource place token: Machine actually used

Prerequisites

  • Python :: 3.x

    We have already confirmed the operation of version 3.7. Other versions are also expected to work, but we have not been able to confirm.

Versioning

We use pypi for versioning. For the versions available, see the tags on this repository.

Running the tests

% python3 -m unittest

References

Contributing

Welcome!

License

The source code is licensed MIT.

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

pxi4jss-1.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pxi4jss-1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file pxi4jss-1.0.tar.gz.

File metadata

  • Download URL: pxi4jss-1.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.7.2

File hashes

Hashes for pxi4jss-1.0.tar.gz
Algorithm Hash digest
SHA256 694367dbe7ce2471679bf550115b5daa880d74737f2d3e8b04c86a7105025569
MD5 2bbddf2f78bf248018217b4cf715b28e
BLAKE2b-256 59cf41398074d99724cdc0d8b92068828dc3d8ac32ac98546e3f17dc7915f58f

See more details on using hashes here.

File details

Details for the file pxi4jss-1.0-py3-none-any.whl.

File metadata

  • Download URL: pxi4jss-1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.7.2

File hashes

Hashes for pxi4jss-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38cc2921a1e3d58baa64e9fb492b54bdff26336172f41d682a39b944ea15986c
MD5 7e6eb9fd81e1a53f0d51e9fd0d256c19
BLAKE2b-256 ae3c42fefc773371d0486f33a257a4c7b63a67ddf689196ed95aca700ba6c8ac

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