In general, you can use whatever optimization method you like, provided that you can adequately model your problem. I would say Constraint Optimization has proven to work quite well for scheduling problems, so you might want to start checking it out.
I'm not an expert on flight/crew scheduling, but I was this year at CP 2014 and several papers in the application track were talking about this topic. They might be a good starting point to find further references: http://cp2014.a4cp.org/program/schedule
On the practical side, I'm sure IBM ILOG CPLEX Optimization Studio comes with some built-in examples of flight scheduling problems that might be similar to what you want to do: http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r6/index.jsp?topic=%2Filog.odms.ide.help%2FOPL_Studio%2Fusroplexamples%2Ftopics%2Fopl_modlib_transport.html&resultof%3D%2522%2566%256c%2569%2567%2568%2574%2522%2520
One paper that I have read so far that might help you is the following.
N. Papakostas, P. Papachatzakis, V. Xanthakis, D. Mourtzis, G. Chryssolouris, An approach to operational aircraft maintenance planning, Decision Support Systems, Volume 48, Issue 4, March 2010, Pages 604-612, ISSN 0167-9236,
your question reminds me of many optimization, or sub-optimization problems, that I have had to tackle in the past. the first method that comes to mind is that of using a probabilistic model. Next you might look at Queuing Theory, then developing a GPSS model. GPSS is a simple simulation language that is easy to master, but powerful in usage. I mention all of these since there are no exact analytical solutions to your problem, unless it is trivial in nature. Good Luck
Usually, for planning and scheduling Genetic Algorithm (GA) is preferred over other optimization techniques because with GA you can always assure a better solution in each iteration but with other methods some times they may converge very rapidly and sometime they may not give proper result.
One can also use Simplex Algorithm, but handling priority in planning can be done by GA more properly. Also when there are parallel tasks, Simplex may not give proper results.