|
■
Number of species or
subpopulations the population is
divided: L=5
■
Size factor among
subpopulations: γ=0.8.
■
Number of iterations
in the best subpopulation with DC:
BTF=2.
■
Number of iterations
without improvement: NPG=2.
■
PercentRefill
or number of individuals that need to be
imported from the lower level: PR=0.25.
■
Number of iterations
done during the potency testing: CG=20.
■
Number of solutions
candidate to be exported: DEN=2.
|
|
QHFC
method divides the population into
species according to the ranks of
quality and makes them evolve
independently during several
generations, allowing under special
conditions that their individuals
migrate from a species to another.
The process starts with
the random generation of the individuals
of the first iteration. With these
individuals species are established. As
a parameter of the problem it needs to
be known the number (L) of
species into which the population P(t)
wants to be divided, and the size
factor
g.
To make the L sets the average
quality of P(t) is calculated.
This size average will fix for the rest
of the process the value of the
threshold of minimal quality fL-1
that will determine the belonging to the
group of less quality GL-1.
The individuals randomly generated and
that do not reach this minimal quality
will be then erased. The average quality
of the rest of individuals is again
calculated, this will be the threshold
of minimal quality fL-2
for the next group GL-2.
Individuals with a quality between [fL-1,
fL-2] will belong to
group GL-1. We will
repeat the process this way as many
times as sets want to be formed. Being
individuals distributed into the
different groups, it is verified if the
size factor between groups IGk-1I=
IGk I x γ
is
observed, with k from L-1
to 0. If in any group there is a
fault in the population it will be
filled with individuals randomly
generated. Group G0 is
called top level group. While the
completion condition does not come true
(termination condition), defined as a
total number of evaluations performed,
the following process is repeated:
-
BreedTopFreq
(BTF) generations are
produced using a deterministic
crowding (see section 4.2.1 in the
previous chapter) in the top level
group. If during these generations
there are noprogressGen (NPG)
generations without improvement the
process is called
import_from_below with
parameters (percentRefill,
0) that will be later described
(step 5). Once the process is
performed it will be necessary to
recalculate the thresholds of
quality of success in the groups.
For this, as the level of the lower
group f L-1=fmin
is fixed throughout all the process,
the rest of thresholds will be
calculated following this equation:
fkadm= fmin
+ (fmin- fmax)
x (L-1-k)/L,
where k= 0 to L-1, and
fmax
is the maximum quality of the complete
population. Being the calculation
finished, step 1 will be repeated.
Whereas, step 2 will be performed if
improvement is produced.
-
Potency
testing.
It is done in all the sets, except
in the top level, catchupGen
(CG) evaluations. For this,
two individuals are randomly
selected, then crossed, mutated and
evaluated. If after repeating this
process as many times as required to
do the evaluations fixed in each
set, there are detectExportNo
(DEN) candidate individuals
in all levels to be exported, then
it will be considered that this
process has been carried out with
success. Individuals export is
performed by checking to which range
of thresholds of a minimum quality
the quality of the individual to
export belongs to, and to the set it
fits, the individual will move.
-
In case of
success, if after doing the potency
testing there is a gap without being
filled in any level, let�s assume in
level l with g gaps,
we will have to turn to the process
import_from_below with (g,
l) parameters, step 5.
If there are no gaps and the test
has been performed with success then
go back to step 1.
-
If in a level the
test has not been successfully
performed the process will be called
import_from_below with (percentRefill,
l) parameters, being l
the level where the test has not had
any success. After performing the
procedure then a complete generation
of the deterministic crowding kind
is carried out with all the
population of this level and step 1
will be done again.
-
Import_from_below
with parameters (m, n).
m will indicate the number of
individuals that need to be randomly
selected from level n+1 to
export to level n. If the
procedure is required to fill a gap,
no individual has to be replaced. On
the contrary if this is not the
case, individuals to be replaced
will have to be randomly selected.
In the selection, neither the best
nor the ones that have just been
imported can appear. Once the
process is finished in level n,
the gaps left in level n+1
will be filled going back again to
the process but this time with (m,
n+1) parameters. It will
proceed this way until the lowest
level is reached, where gaps will be
filled with individuals randomly
generated.
|
|
The
following three files have to be in the
same folder. Do not change the name of
the file. Double-click the .exe file to run it.
|
JSSP |
Executable |
exe |
Data File
Open .txt file of the instance
you want to run (for
JSSP), copy and paste
its contents inside this file. |
D_Entrada |
Parameters File
Open the file and change the
parameters |
D_Algoritmo |
The following five files of solutions
are generated:
■
D_Sal_Mejores-txt (includes the best solutions).
■
D_Sal_Optimos
(includes the value of the
objective function, i.e., Cmax).
■
D_Sal_NumOptimos
(includes the number of different
solutions where the optima value
specified in the data file has been
reached). This file is empty if this
value is not reached.
■
D_Sal_Distancias (includes
the distances between solutions where
the optima value specified in the data
file has been reached). This file is
empty if either this value is not
reached or only one solution is
achieved.
■
D_Sal_Soluciones (includes
the schedule of the solutions where the
optima value specified in the data file
has been reached). This file is empty if
this value is not reached.
|