Planning and scheduling problems in various industrial environments are combinatorial and very difficult. Generally, it is extremely hard to solve these types of problems in their general form. Scheduling can be formulated as a problem of determining the best sequence to execute a set of tasks on a set of resources, respecting specific constraints like precedence or disjunctive constraints (Carlier & Chrétienne, 1988). They consist generally in a simultaneous optimization of a set of non-homogeneous and conflicting goals. Therefore, the exact algorithms such as branch and bound, dynamic programming, and linear programming are not suitable for such problems and need a lot of time and memory to converge.