Skip to main content

Minizinc problem solver

Project description

PyPI CI Coverage Status

cooked-tomato

Timetable scheduler for phone attention turns in Som Energia

History

This project is the result of an internal Som Energia Hackathon held on 11-03-2022 about MiniZinc with the goal of reimplementing the previous solution based on a pruned backtracking.

Prerequisites

Before you begin, ensure you have met the following requirements:

  • You must have at least python 3.8. You can get this python version through pyenv. See more here -> https://github.com/pyenv/pyenv#installation
  • You should have a Linux/Mac machine. Windows is not supported and we are not thinking in it.

Installation

pip install cooked-tomato

Usage

import asyncio
from tomato_cooker.grill import GrillTomatoCooker
from tomato_cooker.models import TomaticProblem, tomatic

# define a problem
tomatic_problem_params = {
    "nPersons": 4,
    "nLines": 2,
    "nHours": 3,
    "nNingus": 1,
    "nDays": 5,
    "maxTorns": 2,
    "nTorns": [3, 3, 3, 3,],
    "indisponibilitats": [
        {1}, {1}, {2}, {1}, {1},
        {2}, {2}, {2}, {2}, {2},
        {3}, {3}, {2}, {3}, {3},
        {2}, {3}, {2}, {2}, {1},
    ]
}
tomatic_problem = TomaticProblem(**tomatic_problem_params)

# choose a list of minizinc solvers to user
solvers = ["chuffed", "coin-bc"]

# create an instance of the cooker
tomato_cooker = GrillTomatoCooker(tomatic.MODEL_DEFINITION_PATH, solvers)

# Now, we can solve the problem
solution = asyncio.run(tomato_cooker.cook(tomatic_problem))
print(solution)

Contribute

  1. Fork the repository on GitHub.
  2. Set up your development setup
$> pip install -e .[dev,tests]
  1. Run the tests to confirm they all pass on your system.
$> pytest
  1. Make your change and run the entire test suite again and confirm that all tests pass including the ones you just added.
  2. Create us a GitHub Pull Request to the main repository’s master branch. GitHub Pull Requests are the expected method of code collaboration on this project.

Changes

Historic of changes.

License

This project uses the following license: GNU AFFERO GENERAL PUBLIC LICENSE.

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

tomato-cooker-0.3.1.tar.gz (26.0 kB view details)

Uploaded Source

Built Distribution

tomato_cooker-0.3.1-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file tomato-cooker-0.3.1.tar.gz.

File metadata

  • Download URL: tomato-cooker-0.3.1.tar.gz
  • Upload date:
  • Size: 26.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for tomato-cooker-0.3.1.tar.gz
Algorithm Hash digest
SHA256 cc0d5982132f9f3457389cca8b45bbc63a9366924261f7fc2eacc6f37df87471
MD5 8f08b6e0f64b9cc4caef1c1a97e3e142
BLAKE2b-256 cce1606934e9b9b36b980697ad10afdb5fe6f5052f7b4cce1e80829ed0ddc693

See more details on using hashes here.

File details

Details for the file tomato_cooker-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tomato_cooker-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 75d63e5249a1f03b2ffa1a207687fb734829008ddd2914b09dfa49cbc847a3a1
MD5 c3336890d82fa2af995ef4f0b19c7518
BLAKE2b-256 c9c4e45fd5128371340498c2a59ea62bdde2ad1f67197c0b2e8b8109737e96e9

See more details on using hashes here.

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