coordinates, at one time instance is used as the algorithm's seed for the next time
instance. Matlab 6.1 (The MathWorks, Inc., Natick, MA), in conjunction with the Matlab
Optimization Toolbox and Matlab C/C++ Compiler, was used to develop the inner-level
optimization program.
Outer-Level Optimization
The outer-level global optimization (Figure 3-8, outer boxes) minimizes the sum of
the squares, ess, of the 3D marker coordinate errors, ec, (Equation 3-1) computed by the
inner-level algorithm throughout all time instances, n, (Equation 3-2) by modifying the
patient-specific model parameters, p. In other words, the geometric structure of the
model is varied to best fit the marker movement data for the entire motion.
min e(q,p, n) = [ec(q,p, tj [e(q, p, t)] (3-2)
t=1
The outer-level optimization is adapted from the population-based Particle Swarm
Optimizer (PSO) (Kennedy and Eberhart, 1995). The PSO algorithm was chosen over
gradient-based optimizers for its suitability to be parallelized and its ability to solve
global optimization problems. It is particularly effective in the determination of joint
positions and orientations of biomechanical systems (Schutte et al., 2003). The work of
Schutte et al. (2003) contrasted the PSO to a gradient-based optimizer (i.e.,
Broyden-Fletcher-Goldfarb-Shanno) that is commonly used in system identification
problems involving biomechanical models. The PSO very reliably converged to the
global minimum and it was insensitive to both design variable scaling and initial seeds
(Schutte et al., 2003).
To manage computational requirements, the outer-level optimization uses a parallel
version of the PSO operating on a cluster of 20 Linux-based 1.33 GHz Athlon PC's on a