j from becoming the direct successor of job i again
within the tabu durance.
At the beginning of the searching procedure, it is
usually not difficult to jump off the local minimum.
However, as the solution improves, the local mini-
mum space grows larger, making it much more dif-
ficult to avoid. Therefore, if the solution keeps nei-
ther improved nor degenerated after a number of iter-
ations, the searching procedure must be trapped in a
wide local minimum space. In this case, the objective
function value of the selected schedule will be pushed
into the tabu-list, and neighboring schedules with the
same value will be tabued in the following iterations.
In this way, the searching procedure can be forced to
move away from the local minimum more effectively.
If an improvement is achieved, this strategy will be
canceled, until next time the searching procedure is
once again trapped in a wide local minimum space.
4.5 The Searching Procedure
Based on the above discussion, the tabu-search algo-
rithm that searches for the optimal or near optimal
job-processing sequence is presented in the follows.
There are two input parameters that needs to be spec-
ified by the user:
• TabuDepth: The depth of the tabu-list, which is
normally set between [6,10]. Experience shows
difference TabuDepth values normally has no sig-
nificant influence to the scheduling result.
• TabuStop: The searching procedure stops if the
solution cannot be further improved after Ta-
buStop times of iterations.
Below is the tabu-search algorithm:
Algorithm 3. The Tabu-search Algorithm
Step 1. Generate initial solution using Algorithm 2.
Let IterCnt = 0.
Step 2. For each job j = 1,2,.. . ,n, generate neigh-
boring schedules by inserting job j to ev-
ery possible processing position. Calculate
the equivalent workload of the neighboring
schedules, and sort them by the equivalent
workload in ascending order.
Step 3. Take the first neighboring schedule from the
candidate list. If the equivalent workload of
the schedule is smaller than that of the best
schedule obtained so far, or the schedule is
not tabued, then replace the current schedule
by the selected neighboring schedule. Other-
wise, discard the schedule, and repeat Step 3.
Step 4. If the current schedule is improved, let
IterCnt = 0; Otherwise, let IterCnt =
IterCnt + 1. If IterCnt < IterStop, then go
to Step 2; Otherwise, let the best schedule be
the scheduling result and exit.
One significant advantage of the tabu-search al-
gorithm is its easy implementation of parallel com-
puting. For our problem, neighboring schedules are
generated for every job independently, therefore, it is
possible to decompose the neighborhood generation
procedure into n sub-procedures, and perform them
in parallel. In this way, in a multi-core computer with
m independent threads, the computing speed can be
improved, roughly speaking, m times.
5 COMPUTATIONAL
EXPERIMENT
In order to evaluate the performance of the schedul-
ing algorithm presented in this paper, a set of compu-
tational experiments were conducted in this section.
The experiments were performed on a personal com-
puter with an Intel i7-2600 CPU that features 4 cores
and 8 independent threads. The algorithm was im-
plemented in C++ and was capable for parallel com-
puting, such that the computing power of the com-
puter can be fully employed. All the problem in-
stances were generated at random, where the work-
load ω
j,1
and ω
j,2
obey the discrete uniform distri-
bution between [10,100]. Problem instances are or-
ganized in groups, each group contains 50 instances
that have the same number of the jobs. Through-
out the experiment, the input parameters of the tabu-
search algorithm were fixed to be TabuDepth = 8 and
TabuStop = 30. According to the discussion in Sec-
tion 2 and 3, equivalent workload can be calculated
for every job-processing sequence, which decides the
resource consumption directly. Therefore, in the ex-
periment solutions were evaluated by their equivalent
workload, rather than their actual resource consump-
tion.
The experiment was performed in two steps: First,
it was carried out on small-scaled problem instances,
such that the the scheduling results can be compared
with the optimal solutions obtained by an enumerative
searching procedure; Second, the experiment was car-
ried out on large-scaled problem instances to test the
efficiency of the searching procedure.
5.1 Experiment for Solution Quality
In this part, a simple enumerative searching proce-
dure was implemented to obtain optimal solutions
for every problem instance. Because the problem
ScheduleTwo-machineFlow-shopwithControllableProcessingTimesUsingTabu-search
19