Implementing a Distributed Version
In this parallel model the population is divided into 'n' islands and these islands are distributed among 'm' different machines. In the following example we show the configuration file for 8 islands, each one working on a different machine.
// System config file
[NUMBER_OF_ISLANDS]
8
[WORKSTATION_INFO]
8
catm0 1 1
catm1 1 2
catm2 1 3
catm3 1 4
catm4 1 5
catm5 1 6
catm6 1 7
catm7 1 8
[ISLAND_CONFIG_FILES]
0
island.params
[SYNCHRONIZATION]
async_mode
[MIGRATION_GAP]
1024
[NUMBER_OF_MIGRANTS]
1
[CYCLES]
100000
[SEEDS]
5 7 53 11 23 13 3 17
[MIG_POLICY_FOR_SELECTION]
mig_random
[MIG_POLICY_FOR_REPLACEMENT]
mig_if_better
[TARGET_FITNESS]
300500.0
The structure of a configuration file like this one is:
<SistConfigFile> | ::= | <WSISection> [<Comment>] |
<NIslands> [<Comment>] | ||
<ICFSection> [<Comment>] | ||
<SyncMode> [<Comment>] | ||
{<OptionalSections> [<Comment>]} | ||
<OptionalSections> | ::= | Epsilon | |
<MigGap> | <NMigrants> | <Cycles> | <ProbConfigFile> | ||
<Seeds> | <MigSelection> | <MigReplac> | <CheckPoints> | ||
<WSISection> | ::= | [workstation_info] |
{<WSLine>} // once or more | ||
<WSLine> | ::= | <WSName> <Integer> {<gaid>} // <gaid> is repeated from 1 to <Integer> |
<Identifier> | ::= | {[a|b|...|z|0|...|9]} // once or more |
<WSName> | ::= | <Identifier> |
<Cardinal> | ::= | {[0|1|2|3|4|5|6|7|8|9]} // once or more |
<Cardinal*> | ::= | [1|2|3|4|5|6|7|8|9]{[0|1|2|3|4|5|6|7|8|9]} // once or more |
<gaid> | ::= | ga<Cardinal*> |
<ICFSection> | ::= | [island_config_files] |
[0 <IslandConfigFile> | <IConfigFileList>] | ||
<IConfigFileList> | ::= | <NGAs> |
{<gaid> <IslandConfigFile>} // repeat from 1 to <NGAs> | ||
<IslandConfigFile> | ::= | <Identifier> |
<NGAs> | ::= | <Cardinal*> |
<NIslands> | ::= | [number_of_islands] |
<NGAs> | ||
<SyncMode> | ::= | [synchronization] |
[sync_mode | async_mode] | ||
<MigGap> | ::= | [migration_gap] |
<Cardinal> // default 10 evals | ||
<NMigrants> | ::= | [number_of_migrants] |
<Cardinal> // default 1 | ||
<Cycles> | ::= | [cycles] |
<Cardinal*> // default 10 evals | ||
<ProbConfigFile> | ::= | [problem_config_file] |
<Identifier> // default empty | ||
<Seeds> | ::= | [seeds] |
[0 | <SeedList>] // default random seeds | ||
<SeedList> | ::= | {<Cardinal>} // repeat from 1 to <NGAs> |
<MigSelection> | ::= | [mig_policy_for_selection] |
[mig_random | mig_best] // default mig_random | ||
<MigReplac> | ::= | [mig_policy_for_replacement] |
[mig_least_fit | mig_if_better] // default mig_if_better | ||
<CheckPoints> | ::= | [check_points] |
{<Checkp><Cardinal>} // repeat twelve times | ||
<Checkp> | ::= | ga_stats | sch_stats | proc_stats | min | max | avg | evals | |
eval_mam | hammingd | best | worst | solution | ||
<Comment> | ::= | // _ {<Identifier> | _ | <Symbol>} // zero or more times |
<Symbol> | ::= | !|"|·|$|%|&|/|(|)|=|?|¿|¡|*|-|<|>|,|;|.|:|_|[|]|{|}|º|#|ª|¬|+|Ç|ñ|Ñ|á|é|í|ó|ú|Á|É|Í|Ó|Ú |