It is – as name suggests – helping tool for Modeling of Discrette Processes (in polish Modelowanie Procesów Dyskretnych). Purpose was to automatise solving simple, offline scheduling problems for two, or three machines. It supports:
- Fist In First Out rule for one machine systems
- Johnson’s algorithm for permutation flow systems,
- Longest and Reverse Processing Time algorithms for parallel systems,
- Hu T.C. algorithm for parallel systems with tree precedence and processing time equal to 1 time unit constraints
At first it was simple project for laboratories of modelling of discrette processes. I had to implement Johnson’s algorithm, with proper solution plotting. I chose C++ and Qt framework, and decided to write plotting from the scratch (instead of using e.g. qnuPlot) – it seemed more rewarding.
After receiving grade I forgot about this project for about one year, and discovered it in deeps of my hard drive while searching for something to train refactoring skills. After basic cleaning up I decided to keep going and see if my changes do anything good to simplyfy further developement.
What went wrong:
- It took one eternity to implement basic algorithms I wanted to feature and still I resigned from including some, e.g. Liu algorithm – I just got soo bored with this tool. In the meantime I participated in two Ludum Dares, and created prototypes I look forward to work with (Treasure Seeker!).
- I made too much breaks, some dragged for weeks…
- I feel quite guilty I didn’t used Qt translation features, interface is written in polish language, and you can’t change it.
- I forgot to keep UML charts updated all the time. It was boring and annoying to go from 6 to 14 class diagram…
What I learned:
- I tested some recipes from Fowler’s Refactoring
- Played around with some basic C++ stuff like templates (for Tree container) or static fields.
If I ever get interested in this project again I’d like to:
- Stretch strategy pattern for plotter class, and for preparing data (maybe add ‘ProblemToSolve’ class?)
- Add Liu algorithm…
- …and some basic cycling scheduling algorithms – I never used them!
- add english translation for interface.
- And some more features…
And I think I mentioned it before, but I really need to learn how to organize my time when I don’t have strict deadline (end of jam or sth), or working hours.
- I started around January 19th, and finished 12 of September (with huuuge breaks).
- Made 72 commits on 1 branch.
- Was starred 1 time on github!
- Was found by 1 job recruiter!