I tried expressing the following high-level problem in MiniZinc:
Given sets of planes and pilots and flights that happen 3x a day: find an assignment of planes and pilots to flights such that the workload is fair. As in, no pilot should be unduly burdened. No plane should be unduly stressed.
Assuming there are 5 planes and 5 pilots, here is a solution:
plane_assigned = [5, 1, 2, 3, 4, 1, 2, 1, 3, 2, 3, 1, 2, 1, 3, 2, 3, 1, 3, 1, 2]
pilot_assigned = [5, 3, 2, 3, 4, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 3, 1, 2]