Code covered by the BSD License

# Speeding Up Optimization Problems with Parallel Computing

### Stuart Kozola (view profile)

Files from the webinar: Speeding up optimization problems with parallel computing

### Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

optimSuspensionScript.m
```%% User-Defined Parallel Optimization Problem
% The goal of this problem is to
% design a suspension system that minimizes the discomfort the driver would
% experience when traveling over a bump in the road. At the same time, we
% must account for uncertainty in the mass of the driver, passengers, and
% trunk loadings. We can modify the four parameters that define the front
% and rear suspension system stiffness and damping rate: kf, kr, cf, cr.
% The masses of the driver, passengers, and trunk loadings are uncertain
% and have a normal distribution assigned to them.

% Copyright 2010 The MathWorks, Inc.
mldemo_suspnfast
%%
% A Monte-Carlo simulation is performed to capture the different vehicle
% loadings. The model outputs are angular acceleration about the center of
% gravity (thetadotdot) and vertical acceleration (zdotdot).
%
% The objective function, |myCostFcnRR|, contains a Monte-Carlo simulation
% used to evaluate the mean and standard deviation of acceleration that the
% passengers would experience. The goal is to minimize the mean
% and standard deviations.
%
% <<figure8.png>>
%
% In a Monte-Carlo simulation, each run is independent and therefore can
% benefit from parallel computation. To convert the problem from serial to
% parallel, we simply replace the for loop construct with the parfor
% (parallel for loop) construct. The objective statements inside
% the parfor loop can then run in parallel, speeding up the objective
% function evaluation time.
type myCostFcnRR
%% Run in Serial
%
close_system
nRuns = 20; % number of Monte-Carlo points (small number to show how)
tic
x = rrDesignParallel(nRuns); %#ok<NASGU>
toc
%%
clc
disp('Elapsed time is 68.696113 seconds.')

%% Run Objective in Parallel
%
files = dir;
files = {files(3:end).name};
matlabpool('open','speedy-4core',4,'FileDependencies',files)
tic
x = rrDesignParallel(nRuns);
toc
matlabpool close
```