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 throughpyenv
. 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
- Fork the repository on GitHub.
- Set up your development setup
$> pip install -e .[dev,tests]
- Run the tests to confirm they all pass on your system.
$> pytest
- Make your change and run the entire test suite again and confirm that all tests pass including the ones you just added.
- 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
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc0d5982132f9f3457389cca8b45bbc63a9366924261f7fc2eacc6f37df87471 |
|
MD5 | 8f08b6e0f64b9cc4caef1c1a97e3e142 |
|
BLAKE2b-256 | cce1606934e9b9b36b980697ad10afdb5fe6f5052f7b4cce1e80829ed0ddc693 |
File details
Details for the file tomato_cooker-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: tomato_cooker-0.3.1-py3-none-any.whl
- Upload date:
- Size: 24.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75d63e5249a1f03b2ffa1a207687fb734829008ddd2914b09dfa49cbc847a3a1 |
|
MD5 | c3336890d82fa2af995ef4f0b19c7518 |
|
BLAKE2b-256 | c9c4e45fd5128371340498c2a59ea62bdde2ad1f67197c0b2e8b8109737e96e9 |