A practical dynamic programming based methodology for aircraft maintenance check scheduling optimization