Products & Services Solutions Academia Support User Community Company

Learn more about Genetic Algorithm and Direct Search Toolbox   

Parallel Computing with the Genetic Algorithm

Parallel Evaluation of Populations

Parallel computing is the technique of using multiple processors on a single problem. The reason to use parallel computing is to speed computations.

The Genetic Algorithm and Direct Search Toolbox solver ga can automatically distribute the evaluation of objective and nonlinear constraint functions associated with a population to multiple processors. ga uses parallel computing under the following conditions:

When these conditions hold, the solver computes the objective function and nonlinear constraint values of the individuals in a population in parallel.

How to Use Parallel Computing with ga

Using Parallel Computing with Multicore Processors

If you have a multicore processor, you might see speedup using parallel processing. You can establish a matlabpool of several parallel workers with a Parallel Computing Toolbox license. For a description of Parallel Computing Toolbox software, and the maximum number of parallel workers, see Product Overview.

Suppose you have a dual-core processor, and wish to use parallel computing:

When you run an applicable solver with options, applicable solvers automatically use parallel computing.

To stop computing optimizations in parallel, set UseParallel to 'never', or set the Optimization Tool not to compute in parallel. To halt all parallel computation, enter

matlabpool close

Using Parallel Computing with a Multiprocessor Network

If you have multiple processors on a network, use Parallel Computing Toolbox functions and MATLAB Distributed Computing Server software to establish parallel computation. Here are the steps to take:

  1. Make sure your system is configured properly for parallel computing. Check with your systems administrator, or refer to the Parallel Computing Toolbox documentation, or MATLAB Distributed Computing Server System Administrator's Guide.

    To perform a basic check:

    1. At the command line enter

      matlabpool open conf

      or

      matlabpool open conf n

      where conf is your configuration, and n is the number of processors you wish to use.

    2. If network_file_path is the network path to your objective or constraint functions, enter

      pctRunOnAll('addpath network_file_path')

      so the worker processors can access your objective or constraint M-files.

    3. Check whether an M-file is on the path of every worker by entering

      pctRunOnAll('which filename')

      If any worker does not have a path to the M-file, it reports

      filename not found.
    • For command-line use, enter

      options = gaoptimset('UseParallel','always');
    • For Optimization Tool, set Options > User function evaluation > Evaluate fitness and constraint functions > in parallel.

Once your parallel computing environment is established, applicable solvers automatically use parallel computing whenever called with options.

To stop computing optimizations in parallel, set UseParallel to 'never', or set the Optimization Tool not to compute in parallel. To halt all parallel computation, enter

matlabpool close

Implementation of Parallel Genetic Algorithm

Population generation is implemented in the ga solver by using the Parallel Computing Toolbox function parfor. parfor distributes the evaluation of objective and constraint functions among multiple processes or processors.

The limitations on options, listed in Parallel Evaluation of Populations, arise partly from limitations of parfor, and partly from the nature of parallel processing:

More caveats related to parfor are listed in the Limitations section of the Parallel Computing Toolbox documentation.

Parallel Computing Considerations

The Improving Performance with Parallel Computing section of the Optimization Toolbox documentation contains information on factors that affect the speed of parallel computations, factors that affect the results of parallel computations, and searching for global optima. Those considerations also apply to parallel computing with pattern search.

Additionally, there are considerations having to do with random numbers that apply to Genetic Algorithm and Direct Search Toolbox functions. Random number sequences in MATLAB are pseudorandom, determined from a "seed," an initial setting. Parallel computations use seeds that are not necessarily controllable or reproducible. For example, there is a default global setting on each instance of MATLAB that determines the current seed for random sequences.

Parallel population generation gives nonreproducible results. The pseudorandom sequences cannot be guaranteed to be the same on different runs for many reasons:

ga may have a hybrid function that runs after it finishes; see Using a Hybrid Function. If you want the hybrid function to take advantage of parallel computation, you must set its options separately so that UseParallel is 'always'. If the hybrid function is patternsearch, there are two other options that must be set so that patternsearch runs in parallel:

If the hybrid function is fmincon, the following options must be set in order to take advantage of parallel gradient estimation:

To find out how to write options for the hybrid function, see Using a Hybrid Function or Hybrid Function Options.

  


Recommended Products

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS