3. Previous evolutionary approaches
Until now, just three evolutionary algorithms have been
proposed for solving the MCPP: the evolutionary algorithms
using the order-based encoding and the direct
encoding derived by Raidl and Kodydek [1] and the evolutionary
algorithm using the weight encoding derived by
Raidl [4,5].
In case of EA using the order-based encoding, each solution
is represented as a permutation of items and according
to the order of a permutation, all items are packed into
containers. If an item can be packed in a container, it is
assigned to the container and the next item is considered.
If an item cannot be packed in a container, the item is
stored separately for a local search mechanism and then
the other item is considered. This process is performed until
all items are considered. Once all items are considered, a
packing plan is completed. Thus, using this encoding, EA
can always generate a feasible solution. But, because the
encoding has to keep a form of a permutation, EA cannot
use general evolutionary operators like the one-point or
multi-point crossover and the uniform crossover.
In case of EA using the direct encoding, each solution is
represented as a kind of an array and the index of an array
(locus) corresponds to each item. The gene values indicate
each container numbers. That is, if the value of gene
located in the second index is 1, it can be interpreted as that
item 2 is packed into the container 1. But, this decoding
method can generate infeasible solutions, which violate
the constraint on the maximum capacity ci of each container.
Thus, the EA requires a sort of repair process.
But, the repair process is very simple: if an item violates
the maximum capacity of a container, the item is stored
for a local search like the order-based encoding.
After the above two steps the decoding processes are finished,
which improve the fitness value using a local
improvement algorithm. All previously unassigned items j
are processed in a random order, and each container is
checked in random order if enough space is available to
pack item j. If possible, the item is assigned to the container
and the algorithm keeps proceeding with the next unassigned
item in the same way. For more details, see Ref. [1].
The EA uses the weight encoding which was derived by
Raidl [4], and he also used weight values (wtj) generated at
random in a specific range [5]. The index of array corresponds
to each item and the value indicates the weight values
generated at random. To decode such a chromosome