Skip to main content

Minizinc problem solver

Project description

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.2.0.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

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

tomato_cooker-0.2.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tomato-cooker-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6a403981ea0ec4cb73f0fcc907d81aadf22f9d5646b848b9c4f565142d0ff8e1
MD5 b93fbb2e4fc34f014ff2530e20816367
BLAKE2b-256 d8ed1a9e8d13a46e19fecca1ec509859b01ec1859ec8e33e3d7dd52c05628a93

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tomato_cooker-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for tomato_cooker-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e9ea55ba8416fdf0031eab0883490fae9b886b985e19557a1e22c714149db56
MD5 0a59fff2ac5b0b2a75114a2f9e1a1ba1
BLAKE2b-256 5e67b7258819f90b71334bb5ccadb976b8148ea39f5881124b6c2f0c1c4cf1f5

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