I am implementing a employee planning solution where staff can have their preferred work times and this system can also recommend the best time a staff should work.
To provide recommendations to a staff for their working time, I'd like to have a recommendation system that can recommend a number of working shifts to staff based upon:
- Organisation's staff requirements. It is an interval(1 hour) based staff requirements and has min/max staff needed for that interval. (eg: at hrs 1300-1400, I need min 4 and max 6 staff).
- Rules that a recommended shift has to follow. (eg: any shift provide should not exceed max_allowed_work_hours_in_week. If employee has completed 35 hours till Thursday and max_allowed_work_hours_in_week is 40 so I can only recommend shift upto 5 hours)
- Recommendations also need to respect my historical shifts. (eg: I like to work in evenings on Friday and my history says so. So, a good recommendation of Friday would be an (guess what :)) eve shift.
I have not done much homework as everything leads to Hadoop ecosystem and about hadoop I have as much idea about that as a toddler(non-prodigy) knows of quantum physics. Anyhow, here's what I come up with:
- I could use apache spark or mahout OR standalone apache predictionIO.(I'm in Java world)
- I know constraint solvers like Optaplanner that I can push to solve this problem but it's not the right tool for this job, I believe but could be wrong.
My question is, what system do you recommend me for such recommendations and is spark/predictionIO the best tools for this job?