Biogas plants fulfillment optimization through operations research ⛽️
Report Bug 🪳
·
Request Feature ✨
An association of
Each farm
At most one plant can be located in each farm, and every farm can sell its corn chopping to one and only one plant.
Each farm
Under such conditions, every plant produces
You must locate
The Python programming language is used to solve the problem. In particular, we used the MIP solver from the homonym package. In the first part of the notebook there is the modelling, with the definition of variables, constraints and objective function. In the second part there is the code that follows the path shown by the model.
One of the main difficulties of the problem is to keep all the runtimes under 10 minutes. To do that, we used an heuristic. Considering that transportation costs are way less than the profits, we modified the objective function, removing the calculation of costs. Furthermore, we decided to locate plants on farms that have the greater amounts of corn chopping. In this way, the optimization problem is reduced in finding the edges that must be activated for the transportation in order to maximize tons of material burnt.
Since we decided to use an heuristic, solutions are suboptimal, but considering the time that said approach takes to obtains valid results, we considered it to be a valid tradeoff between optimality and the resources spent to achieve satisfying results.
It follows an example of the optimization result. In particular, red nodes are the ones in which it is located a plant, green nodes ar just farms. Edges represent a transportation edge between the two nodes. On the axis, X and Y coordinates of the (given) farms.
You can find the Jupyter Notebook here.
If you want just the Python script, you can find it here.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the GPLv3
License. See LICENSE
for more information.
Giovanni Baccichet, Luca Cassenti, Mario Cela (name.surname@polimi.it
)
Project Link: https://github.com/GiovanniBaccichet/biogasOR