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.4.0.tar.gz
(25.7 kB
view details)
Built Distribution
File details
Details for the file tomato-cooker-0.4.0.tar.gz
.
File metadata
- Download URL: tomato-cooker-0.4.0.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6d82170cbc577b6c4d98359ff79f52b66a9403181c3491c6a832095933b47e7 |
|
MD5 | be44be1087d783edb022be90f737e497 |
|
BLAKE2b-256 | cc98d258bdfa022c8b25b021d4dd81c0164a458655ad775fbc8d0d648be43ccd |
File details
Details for the file tomato_cooker-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: tomato_cooker-0.4.0-py3-none-any.whl
- Upload date:
- Size: 23.9 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 | 89f318ecea4a035617c42ec10610a285d5fd5b10d7e620de22bb619dec78335b |
|
MD5 | ad61c8c6835c94e5cf46750024819306 |
|
BLAKE2b-256 | ac1b81e027aa52cc60a8cc101708519aee28024bf55254d680f92311ac8db23b |