B-BFGS is based on the quasi-newton method known as Broyden-Fanno-Fletcher-Goldfarb-Shanno gradient algorithm.
In this algorithm, a penalty function is added in order to handle constraints.
The B-BFGS is a "continuous" method and therefore all the variables should be continuous (Base=0). This algorithm ignores the bases set in the Work Flow and considers all the bases equal to 0.
The entries of the DOE table are used as a sequence of initial points for different local optimization problems.
The BFGS algorithm in its original form does not account for possible inequality constraints on design variables. On the contrary the Bounded BFGS algorithm handles these bounds in a suitable way. In Figure 7.6, "The absolute minimum M is outside the box." the absolute minimum M of a quadratic function is located outside the "bounded box" (i.e. the domain of definition of the design variables): clearly the actual "bounded" minimum B is located over a wall of the box. The behavior of B-BFGS is presented in Figure 7.7, "This polygonal line (the thick blue arrow) replaces the exceeding Newton step.": the exceeding Newton step is substituted with a polygonal line (the thick blue arrow in the figure) made of two segments: the first one follows the original Newton step, in order to preserve a descend direction, the second one points to the bounded minimum located over a border, in order to achieve fast convergence.
Note:
The Bounded BFGS algorithm is an extension of the classical BFGS algorithm. If the absolute minimum M is inside the bounded box, the behavior of B-BFGS is the same as the classical BFGS.
This algorithm can be used either with the classical Objective Node or with the Objective Gradient Node when derivatives are available in analytical form. The objective gradient node allows user-supplied derivatives. This feature makes B-BFGS much faster since finite difference perturbations are not anymore required. On the contrary, if B-BFGS has access only to numerical derivatives, the user should take care of specifying proper settings for finite difference perturbation; when using finite differences, bad settings can significally alter the results.
A better description of the bounds handling technique is available in the paper Bounded BFGS.
The user must specify:
Maximum Number of Iterations: the algorithm will always stop when the maximum number of designs have been evaluated. This is done independently from any other convergence limits.
Approximate derivatives: when analytical derivatives are not available, they can be approximated numerically; two options are provided, Central and Forward differences. Central Difference are more accurate but more expensive. In fact, a gradient computation requires number_of_variables computations in case of Forward differences and 2*number_of_variables computations in case of Central differences.
Final Termination Accuracy: the algorithm will stop when it cannot find solution with improvements higher that the convergence value. The default is set to 1.0E-5.
Finite Difference Relative Perturbation: the value is the fraction of the variable value that is used to perturb the starting point in order to compute the derivatives. The default is set to 1.0E-7. For local refinements low values should be used.
Finite Difference Minimum Perturbation Policy: it is possible to choose between two different policies: Constant or Range Percentage.
Constant Minimum Perturbation: this field is active only when the Finite Difference Minimum Perturbation Policyis Constant. The value is the minimal value that is used to perturb the starting point. The perturbation step is then given by the maximum value between the Finite Difference Relative Perturbation and this Constant Minimum Perturbation.
Range Percentage Minimum Perturbation: this field is active only when the Finite Difference Minimum Perturbation Policyis Range Percentage. This percentage gives the minimal value that is used to perturb the starting point. For each variable this value is equal to:
Minimum_Perturbation = (Upper_bound - Lower_bound) * (Range_Percentage_Minimum_Perturbation)The perturbation step is then given by the maximum value between the Finite Difference Relative Perturbation and the Minimum_Perturbation.
Constraint penalty: the value is the constant that multiplies the distance from the feasible boundary.
The value can be problem dependent and is a function of the objective range as the penalization is added to the objective function.
The default value is 1000.
It is suggested to give a value to the penalty at least 2 orders of magnitude higher than the expected objective function value.
Note:
When finite-differences are required all the perturbed configurations can be computed in parallel, the maximum number of concurrent design evaluation, from an algorithmic point of view, is equal to number_of_variables in case of Forward differences and 2*number_of_variables computation in case of Central differences.
The number of concurrent designs evaluation can be set in the Run Project Dialog.