This tool is used for easily creating work charts for assigning manpower to missions. Written specifically for the IDF. Am Israel Chai! Author: Omer Tal ([email protected]).
Please feel free to suggest features and bug fixes through pull requests.
Exported Xlsx sheets don't contain the assignments that started at some previous day, but still active in the current day.
- Handle special roles.
- Allows user to accept / dismiss a permutation.
- Allows user to auto assign soldiers to a manual assignment.
- Manual assignments - add ability to split assignment (like with shifts).
- UI improvement - Checkbox for splitting shift - if not checked - should disable the spinbox.
- Split shifts - spinbox should be limitted to 24 hours.
- Don't allow soldiers to begin a new assignment if they just finished one (unless it's a
no rest needed
one) (Not sure about that one) - Some UI validations. For example: Gray-out the
run
button if no Soldiers, positions or shifts are present. - Easy removal of assignments in calendar.
- Adding auto assignment to resting position based on different logic (hardest worker gets that assignment? or maybe random?)
- Handle absences when calculating ratios (absence should reset ratio to 1.0).
- Fix UI bug where an assignment appears twice in the calendar - FIXED
- Export assignments to Excel Sheet (within some time interval) - DONE
- Binding positions to one-another. Shifts are still needed to be defined in order for the binding to occur. - DONE
- Fix bug where updating positions doesn't also update the corresponding shifts - FIXED
- Export soldiers to CSV (For easily updating roles and stuff) - DONE
- Implement
Required spacing
for specific positions to ensure some positions get a minimal break regardless of ratios (those positions will have the calculateRatio functions only look back until returning from those positions) - same as with absence. - DONE - When assigning a soldier - we should also take in consideration the future assignments (those assigned manually for example) - DONE
- Bug: It is possible for someone to be allocated twice at the same time (due to binding shifts). Not likely but possible. - DONE
This is still a work in progress.
The way it is implemented is this:
- We start by finding all the assignments within the wanted time interval.
- We sort those by their starting time.
- We calculate the rest ratio (ratio between rest time and overall time) in the last 48 hours of each soldier.
- Then we sort all the soldiers by that ratio. We split those to groups with equal ratios. The group with the highest ratio is first assigned.
- For each group, we calculate for each soldier the ratio from the begining of the last assignment and sort them again using this ratio.
- We assign the soldier with the highest ratios within its group.
Basically the idea is that the soldier that rested the most should be assigned to the next task.
This isn't always perfect and doesn't necessary produce the best result. It may also create cases where a soldier is assigned twice in a row (because his ratio from the last 48 hours is low).
For each soldier we can calculate the amount of hours it needs to be assigned in order to reach the desired average (overall assignment hours, divided by the total hours times the soldier count).
The order of assignment is then simply the difference between the amount of hours needed, and the assignment duration.