Optimization Scheme¶
A sequential least squares programming (SLSQP) optimization algorithm will be used to calibrate ligament properties. This algorithm was selected because it allows for inequality constraints and control variable bounds. This algorighm is implimented in the Scipy optimize module.
Initially the convergence tolerance will be set to 1.e-4. It is anticipated this value should be sufficiently small for these analyses, however that will need to be determined at the time of running the calibration procedure. The analyst may observe the solutions have essentially converged, but have not reached the assigned tolerance. To prevent an inordinately long calibration process, the optimization may be terminated prematurely and the lowest objective value used as the calibrated results. If the tolerance value is updated and/or early termination is utilized it will be documented as a deviation.
The SLSQP algorithm is gradient based, and the finite difference method is used to define the gradient. A difference step of \(-0.1\) mm is used in the finite difference calculation. A negative value is used to address cases where a control variable is near a constraint. When a control variable is near a constraint, the corresponding ligament fiber experiences little load during the simulated test cases. Using a negative difference step decreases the ligament fiber’s slack length and likely increases that fiber’s load during the simulated test cases. This is an attempt to avoid violating constraints in the finite difference calculation. Note that this finite difference calculation is executed using in-house python code, which allows for direct control of the difference step, and also allows for parallelization of the gradient evaluation.
The following sections offer more details on the parameters used to setup and run the optimization.