Efficent Machine-Code Test-Program Induction

1 downloads 0 Views 65KB Size Report
scheduling problems, which considers job release times, job due dates and different ..... 7 17 0 4 19 11 4 0 27 31 0 22 11 7 11 13. Tc 17 22 4 7 27 19 11 2 31 37 ...
A Coordination Mechanism for Real World Scheduling Problems Using Genetic Algorithms Ana Madureira * *

Carlos Ramos *

Instituto Superior de Engenharia do Porto, Dept. de Engenharia Informática Rua de São Tomé, 4200 Porto-Portugal Email: {anamadur, csr}@dei.isep.ipp.pt † Universidade do Minho, Dept. de Produção e Sistemas 4710-057, Braga – Portugal Email: [email protected]

Abstract This paper starts by presenting a scheduling framework, based on Genetic Algorithms for the resolution of real world scheduling problems, which considers job release times, job due dates and different assembly levels. This framework is based on a decomposition of the Job-Shop Scheduling Problem into a series of deterministic Single Machine Scheduling Problem. A coordination mechanism is proposed. 1.

Sílvio do Carmo Silva †

INTRODUCTION

One of the most important issues for competitiveness of an organisation is the efficient production management. Delivery on time, with quality and at low-cost provides a good customer service. However there are several problems to solve and decisions to make. Real world applications operate in dynamic environments frequently subject to several kinds of random occurrences and perturbations, such as new job arrivals, machine breakdowns, employees sickness, jobs cancellation and due date and time processing changes, causing that the original schedule becomes unfeasible. Due to their dynamic nature, real scheduling problems have an additional complexity in relation to static ones. In many situations these problems, even for apparently simple situations, are hard to solve, i.e. the time required to compute an optimal solution increases exponentially with the size of the problem [1]. If all jobs are known and ready to process before processing starts, the scheduling problem is called static, while if job release times are not fixed at a single point in time, i.e. jobs arrive to the system at different times and its parameters can change, the problem is called dynamic. Dynamic scheduling problems can also be classified as deterministic, when release times and all other parameters are known and fixed, and nondeterministic, when jobs can arrive over time and some or all parameters are uncertain. The purpose of this paper is to describe an approach based on genetic algorithms for solving real world job shop

0-7803-7282-4/02/$10.00 ©2002 IEEE

scheduling problems where the jobs to be processed have due dates, release times, different assembly levels and where random disturbances or perturbations may occur over time. As the approach starts by solving a surrogated set of single machine scheduling problems their solutions are repaired, through a proposed inter-machine activity coordination mechanism (IMACM), for obtaining a solution to the original problem. The remaining sections are organised as follows: section 2 provides a description of the scheduling problem under consideration. Section 3 presents some related work. Section 4 summarises previous work on static problems. The proposed approach for dynamic scheduling is presented in section 5. Finally, the paper presents conclusions and some ideas for future work. 2.

PROBLEM DEFINITION

Almost all practical scheduling problems can be described in terms of the Job-Shop Scheduling Problem. Usually as restricted or relaxed versions of this classic combinatorial optimisation problem. The general Job-Shop Scheduling Problem (JSSP) of size n x m can generally be described as a decision-making process concerning about the allocation of a limited set of m resources over time to perform a set of n tasks or jobs. In manufacturing systems, scheduling typically concerns allocating a set of machines to perform a set of jobs within a certain time period. Each job has a specified processing order through the machines, i.e. a job is composed of an ordered list of operations, which are characterised by the machine required, and the processing time. Several constraints on jobs and machines can be defined: • machines are always available and never break down; • there are no precedence constraints among operations of the different jobs; • the operations processing can not be interrupted and each machine can process only one job at a time; • each job can be processed only on one machine at a time;

• setup times are independent of the schedules and are included in processing times • processing times, due dates and technological constraints are deterministic and known in advance. A schedule is an assignment of jobs over time in the respective machines. The objective is to find a schedule, which optimizes some performance measure. For literature on this subject see for example [1], [2] and [3]. Real-world scheduling problems tend to be very different from the bulk of those dealt with by mathematical models developed by researchers in academy. In reality many scheduling problems are not so well defined as they are in the models. Most of the times, the environment is dynamic with new jobs arriving at unpredictable intervals, machines breaking down, jobs cancellation and due date and time processing changes happening frequently. In addition to these and others disturbances, the following settings are considered in our approach for solving JSSP: the existence of different job release times, prior to which no processing of the job can be done; the existence of job due dates, a date by which the processing of the job is supposed to be finished, and different assembly levels for the jobs. 3.

LITERATURE REVIEW

A vast amount of literature about GA applications to the scheduling problem has been published in the last few decades. One of the earliest published work on the application of GA to scheduling is that by Davis [4]. Some GA studies for the static case of the JSSP scheduling are referred in [5], [6] and [7]. Recently the scheduling problem in dynamic environments have been investigated by a number of authors in the evolutionary community, see for example [8] [9][10]. The dynamism of the problem is usually treated considering the approach of a “Rolling Time Horizon” (see Raman and Talbot [11]), where new jobs can arrive all the time. Initially, the scheduling problem with all known jobs is solved. Then, whenever a new job arrives, the part of the solution consisting of operations already started before the changing occurrence is fixed and a new problem is created, consisting of the operations not yet processed and the operations from the new jobs. Thus, the dynamic problem is decomposed into a set of static sub-problem that can be solved independently by a standard GA. Some works that use that approach can be found in [12][13][14][15]. Branke [16] surveys the techniques that have been published in the literature to make evolutionary algorithms suitable for dynamic optimisation problems. The author grouped the different techniques into three categories: react on changes, where as soon as a change in the environment has been detected explicit actions are taken; maintaining diversity throughout the run, where convergence is avoided all the time and it is hoped that a spread-out population can adapt to modifications more easily; and the memory-based ap-

0-7803-7282-4/02/$10.00 ©2002 IEEE

proaches, where the evolutionary approach is supplied with memory to be able to recall useful information from past generations. 4.

PREVIOUS WORK ON STATIC SCHEDULING

In a previous work [17] the adequacy and efficiency of the Genetic Algorithms (GA), for the static Single Machine Scheduling Problem (SMSP) was studied. This work starts by studying the performance of two interrelated GA for the minimisation of the static weighted tardiness. One is a single start GA, the other, called MetaGA, is a multi-start version GA. The performance was evaluated, on the basis of the quality of scheduling solutions obtained for a limit on computation time. The behaviour of the different parameters of the GA was evaluated through a set of preliminary computational tests and their values were tuned according results. The computational tests involved 10 instances of the Weighted Tardiness problem with 40 and 50 jobs. As stopping criteria for the GA search we use a limit on the number of generations. 300 and 450 were used respectively for the 40 and 50 job problems. The obtained results show that these GA perform well for the studied cases, being possible to find good solutions in a short period of time, i.e. a few minutes of CPU time. The set of tests carried out suggests that applying this MetaGA may improve their performance. This tends to offer progressive improvements of solutions with moderate additional computational effort. In this way, good balance between computational effort and quality of solutions can be achieved. 5.

THE PROPOSED APPROACH

The proposed approach consists on a centralised GA-based scheduling system for each machine involved in the process. One advantage of this is that the solutions (schedules) planned for single machines guarantees some consistency of manufacturing. The original Job-Shop Scheduling Problem is decomposed into a series of deterministic Single Machine Scheduling Problems solved one at a time, consecutively. Each machine is considered as 1|rj|Lmax problem with release dates and due dates and solved by a Genetic Algorithm. The obtained solutions are then incorporated into the main problem. To solve the dynamic JSSP a predictive schedule is initially generated using the information available. As relevant disruptions occur in the system during the job execution, the predictive schedule is modified or revised taking them into account. The proposed approach consider additional constraints, which characterise real manufacturing systems: the existence of different job release dates; the existence of job due dates and different assembly levels for the jobs, and random perturbations can occur.

5.1

GA-based Scheduling System for Deterministic Scheduling Problems

An operation Oijk is described by the triplet (i, j, k), where i defines the machine where the operation is processed, j the job which belongs, and k the graph precedence operation level (level 1 correspond to initial operations, without precedents). The problem J|rj|Lmax is decomposed into a series of deterministic SMSP 1|rj|Lmax, solved one at a time, consecutively. Each machine is considered as 1|rj|Lmax problem with release dates and due dates and solved by a Genetic Algorithm, the obtained solutions are then incorporated into the main problem, using the following procedure: TABLE 1 – SCHEDULING ALGORITHM FOR DETERMINISTIC JSSP 1st PHASE Finding a 1st job shop schedule based on single machine scheduling problems Step 1

Define completion time estimates (due dates) for each operation of each job.

Step 2

Define the interval between starting time estimates (release times) for all operations of each job.

Step 3

Define all SMSP 1| rj |Lmax based on information defined on Step1 and Step 2.

Step 4

Solve all SMSP 1| rj |Lmax with those release times and due dates using the genetic algorithm (GA).

Step 5

Integrate all the obtained near-optimal solutions into the main problem.

2nd PHASE Check feasibility of the schedule and, if necessary apply the IMACM coordination mechanism Step 6

Verify if they constitute a feasible solution and terminate with a local optimum; If not, apply a repairing mechanism.

The completion times Cijk for each operation of a job are derived from job due dates and operation processing times by subtracting the operation processing time pijk from the operation completion time of the immediately succeeding job operation: Cijk-1 = Cijk - pijk

(1)

The proposed approach (Table 1) is implemented in a twophase procedure: in a first phase we find a 1st Job-Shop schedule based on single machine scheduling problems then in a second phase the schedule feasibility is checked and applied the IMACM coordination mechanism if necessary. The estimate of operation starting times interval [tijk,Tijk] is defined considering the job release date and the operation processing times. The earliest starting time tijk corresponds to the time from which the operation processing can be started. The latest starting time Tijk correspond to the time at which the processing of the operation must be started in order to meet its estimate completion time (due date). This means that

0-7803-7282-4/02/$10.00 ©2002 IEEE

no further delay is allowed. When an operation has more than one precedent operation (multi-level structure) the [tijk,Tijk] corresponds to the interval intersection from precedent operations correlated by the respective processing times. At this stage, it will be considered only technological precedence constraints of operations and job due dates, for defining completion and starting times. 5.1.1

The Genetic Algorithm

In developing a genetic algorithm we must have in mind that its performance depends largely on the careful design and set-up of the algorithm components, mechanisms and parameters. This includes genetic encoding of solutions, initial population of solutions, evaluation of the fitness of solutions, genetic operators for the generation of new solutions and parameters such as population size, probabilities of crossover and mutation, replacement scheme and number of generations. Details of the algorithm parameterisation are described as follows: Solution Encoding For the development of a genetic algorithm it is important to decide how to represent a solution and how this solution is to be manipulated during the search process. The success of GA is related with an appropriate representation of solutions. An overview of these subject and some applications are given in [4] [6]. The solutions are encoded by the natural (indirect) representation [18], where the schedule is described as a sequence of operations, i.e., each gene represents an operation index. The gene position in a chromosome represents the operation position in a scheduling solution, defining, therefore, the operation processing order or priority. The number of genes in the chromosome represents the number of operations in a solution. Initial Population Generation An initial solution is generated by a procedure, where the operations are sequenced in order of non-decreasing processing level (defined on precedence graph), giving priority to operations that are processed earlier. Thus, we expect to generate a good initial solution from which an initial population will be obtained. This is done using a neighbourhood generating mechanism, which exchanges jobs not apart more than af positions [19]. Selection Individuals, i.e. solutions, are randomly selected from the population and combined to produce descendants. Crossover The order crossover operator [4] is used. The order crossover operator will be applied to M pairs of solutions randomly chosen, with M=N/2, where N is the size of the population.

Mutation As mutation operator we use the inversion mechanism to prevent the lost of diversity. Thus, two points in a chromosome are randomly selected between which the order of genes, i.e. the processing order of the jobs, is reversed. Replacement Scheme The replacement of the less fit individuals of the current population by offspring is based on elitism [4]. Thus, the best individuals, i.e. solutions, will survive into the next generation. However, duplicated solutions may occur. To minimise this, the inversion operator is applied to all duplicated solutions. Some of the parameter definition presented on this section is based on previous work [17][19]. 5.1.2 Example Let us consider the following example with 6 machines and 4 jobs. A precedence graph representing the ordered allocation of machines for each job operation, i.e. the machine sequence, as well the processing times and due dates are shown in Table 2:

TABLE 3 – OPERATION ATTRIBUTES OF THE 1|RJ|LMAX M1 Jobs 111 122 pj 10 3 0 8 rj dj 15 22

3

4

5

6

p141=3 p241=2 p341=2 p442=4 p543=2 p644=3

232 7 4 15

M3 241 313 324 2 4 6 0 18 16 9 27 33

M4 341 423 433 2 5 3 0 11 11 15 27 18

M5 M6 442 543 644 4 2 3 3 7 9 13 15 18

Machines

644

543

M5

M4

433

442

423

M3 341

313

M2 241

232

221

324

212

2

131

111

141

5

18

10

122

15

20

25

30

Time

FIGURE 2 – OBTAINED SOLUTION (UNFEASIBLE)

2

Now, we will briefly describe the steps of the algorithm applied to this example (Table 2). The starting time interval corresponds to the time interval when the operation processing must be initiated, in order to obtain the desired job due date (Figure 1).

M2 141 212 221 3 8 8 0 10 0 9 23 19

M6

M1

3

1

131 4 0 8

Applying a Genetic Algorithm to each 1|rj|Lmax problem, we could obtain the following solutions for the machines 1, 2, 3 and 4, respectively: (131, 141, 111, 122), (241, 232, 221, 212), (341, 313, 324), (442, 433, 423). Machines 5 and 6 do not need an optimization process (one single operation).

TABLE 2 - EXAMPLE Machine sequence Processing times Due dates p111=10 p212=8 p313=4 27 1→ 2 → 3 p221=8 p122=3 p423=5 33 2→ 1→ 4→ 3 p324=6 18 P131=4 p232=7 p433=3 1→2→4

Jobs 1 2

4

previous steps (Table 3). The release dates rj correspond to the earliest starting time of the operation. The due date dj correspond to the operation completion times. The notation rj and dj used at this point, is based considering that we are dealing with single machine.

The solution (442, 433, 423) means that: ”first process the O442, then O433 and finally O423”. At this phase, it is necessary to apply a decoder to each solution. In such a way, starting times are defined for all operations. The obtained schedules are characterized by the following starting times Ti and completion times Tc (Table 4). TABLE 4 – OBTAINED RESULTS BY THE DECODER

141=3

341=2

9

15

241=2

9

IO241 ∈ [0, 7] IO341∈ [0, 13]

442=4

543=2

13

IO141 ∈ [0, 6] IO543 ∈ [7, 13]

M1

M2

M3

M4

M5 M6

111 122 131 141 212 221 232 241 313 324 341 423 433 442

Ti 7 Tc 17

17 22

0 4

4 7

19 27

11 19

4 11

0 2

27 31

31 37

0 2

22 27

11 14

7 11

543

644

11 13

13 16

644=3

15

18

IO442 ∈ [3,9]∩[2,9] IO644 ∈[2,15]∩[9,15]

FIGURE 1 –COMPLETION TIMES AND INTERVALS BETWEEN STARTING TIME

The completion time C141 is 9 and the processing time p141 is 3, so O141 processing must be initiated at [0, 6]. The data for the 1|rj|Lmax problem corresponding to the 6 machines can be determined from information defined on

0-7803-7282-4/02/$10.00 ©2002 IEEE

The union of the several local optimal, one for each 1|rj|Lmax problem could not produce a feasible solution (processing overlapping operations belonging to the same job), as we can verify on Figure 2. In order to obtain a feasible solution it is necessary to apply a coordination mechanism, which will be later described on section 5.2. 5.2

Coordination Mechanism

The purpose of the coordination mechanism (Table 5) is to repair the schedule obtained up to the step 5 of the scheduling algorithm, described above. The repairing is done in order to

obtain a feasible schedule through coordination of machine activity, having into account job operation precedence and all other problem constraints and, at the same time, keeping job allocation order in each machine as given by the schedule to be repaired. The objective is minimizing the maximum lateness. Essential to the coordination mechanism is to establish the starting Ti and the completion times Tc for each operation. These times are related being that the starting time Ti for each operation must be equal to the larger of the following two values: • Completion time of the immediately precedent operation in the job; • Completion time of the immediately precedent operation in the machine. TABLE 5 - COORDINATION MECHANISM Start from initial operations, without precedents, which correspond the level 1 on the sequence for processing on the machine. At this level, the starting and the completion times are the same, i. e., they are equal to those defined by the scheduling algorithm on the previous phase. At the following levels, all operations whose immediately precedents ones have been scheduled, according to both the precedence graph and established job processing order at the machines, are rescheduled to ensure feasibility and machine activity coordination, keeping, however, the processing order at machines unchanged. The step 2 will be repeated until all the operations have been scheduled.

Step 1

Step 2

Step 3

Applying the coordination mechanism we obtain the values presented on Table 6, where Ti’ is the new starting time, Tc’ the respective completion time and Level the operation processing order: TABLE 6 – OBTAINED RESULTS M1 111

122

Ti’ 7 Tc’ 17 Level 2

19 22 3

M3

M4

221

232 241 313

324 341 423

433 442 543 644

11 19 2

4 11 1

31 37 5

11 7 11 14 11 13 3 2 6

M2 131 141 212

0 4 0

4 7 1

19 27 3

0 2 0

27 31 4

0 2 0

22 27 4

13 16 7

GA-based Scheduling System for Non-Deterministic Scheduling Problems

In a dynamic environment frequent rescheduling of work is necessary due to variations on working conditions and requirements over time. This is due to many random events or disturbances as previously referred. These could be classified in two categories: • Partial events, which imply changes in job (or operations) attributes, such as processing times, due dates and release times;

0-7803-7282-4/02/$10.00 ©2002 IEEE

5.3.1 Pre-processing Module The pre-processing module deals with processing input information, namely problem definition and instantiation of algorithm components and parameters, such as, the initial individual and population generation mechanisms, size of population, genetic operators and respective probabilities, etc. 5.3.2 Scheduling Module The scheduling module is concerned with the application of the GA-based scheduling algorithm for deterministic JSSP presented on section 5.1, considering that all release dates, processing times and due dates are known in advance. Whenever new events occur, deterministic problems are generated by the dynamic adaptation module and then solved by the scheduling module.

M5 M6

From solution graphical representation based on Table 6, we can verify the solution feasibility and the job due date achievement. 5.3

• Total events, which imply changes in population structure, such as new job arrivals and jobs cancellation. While partial events only require a modification procedure to redefine job attributes and a re-evaluation of the fitness function of solutions, total events require a modification on chromosome structure and size, by inserting or deleting genes, as well as the re-evaluation the fitness function. Therefore, under a total event the modification of the solutions population is imperative. In this work, this is carried out by the mechanisms described in [17][19]. In this class of problems rescheduling from the beginning must be avoided, considering the processing times involved and the frequency of the dynamic perturbations. As previously referred, a dynamic environment is characterized by several variations on working conditions and requirements over time. The GA-based scheduling system for dynamic JSSP under such an environment, here proposed, can also be structured in three modules as in the case of SMSP, namely the modules for pre-processing, scheduling and dynamic schedule adaptation.

5.3.3 Dynamic Adaptation The occurrence of a partial event requires a modification procedure to redefine job attributes and a re-evaluation of the fitness function. A job due date modification also requires the re-calculation of the operation starting and completion times of all respective operations. While operation processing times modification only requires re-calculation of the operation starting and completion times of the succeeding operations. A new job arrival requires definition of the correspondent operation starting and completion times and a regenerating mechanism to integrate all operations on the respective single machine problem. While a job cancellation requires a regenerating mechanism to eliminate the operations from respective single machines problems. After the insertion or deletion of genes is carried out, population regenerating is done by updating the size of the population and ensuring a structure identical to the existing one [19].

Then, scheduling module can apply the search process with the new regenerated population. When a new job arrives, an integration procedure will be needed. For that, the integration mechanism consists basically in analysing the job precedence graph that represents the ordered allocation of machines for each job operation, and integrates each operation into the respective single machine problem. The following integration mechanisms could be implemented for each operation: randomly select one position to insert the new operation into all chromosomes or use some intelligent mechanism to insert this operation in the schedules, (based on job priority, for example). After integration/elimination of operations is carried out (which consists in inserting/deleting genes in all chromosomes), population regenerating is done by updating the size of the population and ensuring a structure identical to the existing one. Thus, either some further chromosomes have to be generated through some procedure, i.e. REED rule [19], or some existing chromosomes have to be deleted. In this case either the choice could be random or fall on the less adapted chromosomes. After this is done, the scheduling module can apply the search process with the new regenerating population.

[6].

6.

[15].

Conclusions

The paper presents a scheduling system, based on Genetic Algorithms to solve the dynamic version of the JSSP, where the products (jobs) to be processed have due dates, release dates and different assembly levels. The approach adapts the resolution of the static problem to the dynamic one in which changes may occur continually. In order to repair the unfeasible schedule, a manufacturing activity coordination mechanism, called IMACM, is proposed for ensuring that work at each machine does not violate constraints and therefore ensuring a feasible solution. The objective is to coordinate the machine working times with job operations precedence relationships. More research is needed in testing the performance of the proposed mechanisms under dynamic Job-Shop environments subject to several random perturbations. 7.

References

[1]. [2].

[3]. [4]. [5].

E. Thomas Morton, and David W. Pentico, Heuristic Scheduling Systems, John Wiley & Sons, 1993. J. Blazewicz, K.H. Ecker, E. Pesch, G. Smith and J. Weglarz, Scheduling Computer and Manufacturing Processes, Springer, 2nd edition, New York, 2001. P. Brucker, Scheduling Algorithms, Springer, 3rd edition, New York, 2001. Lawrence Davis, Handbook of Genetic Algorithms, Van Nostrand Reinhold, New York, 1991. C.Y. Lee, S. Piramuthu and Y.K.Tsai, Job Shop Scheduling With a Genetic Algorithm and Machine Learning, Int. J. Prod. Res., vol.35, nº4, pp.1171-1191, 1997.

0-7803-7282-4/02/$10.00 ©2002 IEEE

[7].

[8].

[9].

[10].

[11].

[12].

[13].

[14].

[16].

[17].

[18].

[19].

A. S. Jain and S. Meeran, Deterministic Job Shop scheduling: past, present and future, European Journal of Operational Research 113, 390-434, 1999. N. S. Hemant Kumar and G. Srinavasan, A genetic algorithm for Job Shop scheduling- a case study, Computers Industry, 155-160, 1996. Report from EVONET Working Group on Evolutionary Approaches to Timetabling and Scheduling, The state of the art in evolutionary Approaches to timetabling and scheduling. Hsiao-Lan Fang, Peter Ross and D. Corne, A promising genetic algorithm approach to Job-Shop scheduling, rescheduling and open shop scheduling problems, Proc. of the 5th Int. Conf. on Genetic Algorithms, Morgan Kaufmann, 375-382, 1993. Shyh-Chang Lin, E. D. Goodman and William F. Punch, A genetic algorithm approach to dynamic scheduling Job Shop Problem, Proc. of the 7th Int. Conf. on Genetic Algorithms, Morgan Kaufmann, 481-489, 1997. N. Raman and F.B. Talbot, The Job Shop Tardiness Problem: a decomposition approach, European Journal of Operations Research, nº69, 187-199, 1993. C. Bierwirth, H. Kopfer, D. C. Matfeld and I. Rixen, Genetic algorithm based scheduling in a dynamic manufacturing environment, Proc. of the second conference on evolutionary computation, IEEE Press, New York, 439-433, 1995. C. Bierwirth and D.C. Matfeld, Production scheduling and rescheduling with genetic algorithms, Evolutionary Computation, 7, 1-17, 1999. J. Branke, Efficient Evolutionary Algorithms for Searching Robust Solutions, Fourth Intl. Conf. on Adaptive Computing in Design and Manufacture, Springer, 275-286, 2000. J. Branke and D. Mattfeld, Anticipation in Dynamic Optimization: The Scheduling Case, Parallel Problem Solving from Nature, Schoenauer et al. (eds.), Springer, 253-262, 2000. J. Branke, Evolutionary Approaches to Dynamic Optimization Problems – A Survey, GECCO Workshop on Evolutionary Algorithms for Dynamic Optimization Problems, A. Wu (ed.), pp. 134-137, 1999. Ana M. Madureira, Carlos Ramos e Sílvio C. Silva, A Genetic Algorithm for The Dynamic Single Machine Scheduling Problem, 4th IEEE/IFIP Inti. Conf. on Information Technology for Balanced Automation Systems in Production and Transportation, 2000. Sugato Bagchi et al., Exploring Problem-Specific Recombination Operators for Job-Shop Scheduling, Proc. 4th Intl. Conf. On Genetic Algorithms, Morgan Kaufman, 10-17, 1991. Ana M. Madureira, Meta-heuristics for the Single-Machine Scheduling Total Weighted Tardiness Problem, Proc. IEEE Int. Symposium Assembly and Task Planning), Portugal, 1999.