Modified Method of Feasible Directions
A Continuous Search Method available in the Sizing Method panel.
The Modified Method of Feasible Directions (MMFD) finds the best case design by determining a search direction based on the Objective function and the active Design Requirements. When there are no active Design Requirements, the search direction will simply be in a direction influenced by the current gradient and previous search directions.
When there is an active Design Requirement, following the direction of greatest change may make the design Infeasible. Instead, the search direction is modified to keep the solution in the feasible region. If a Design Requirement is Violated, the search direction will attempt to return the solution to the feasible region as quickly as possible.
This is the most robust method and can handle a wide variety of problems.
Note: Branch and Bound rapidly becomes inefficient with an increase in independent variables. For discrete optimization with more than ten independently sized pipes, the Sequential Unconstrained, or Genetic Algorithm methods should be considered.
Sizing Control Parameters

Finite Difference Gradient Calculation  The most likely parameters to be changed, gradient calculation directly influences the search direction. See a detailed discussion in Estimating the Gradient.

Method  Forward or Central, directly affects the quality of the gradient at the cost of runtime. Central gradients are more accurate but require about twice as many hydraulic solutions.

Step Size  How much to perturb the pipe sizes to determine the gradient. If the Objective was known exactly, it would make sense to make these values very small. However, as Arrow itself is an iterative solver, the Objective is only known to within a certain tolerance. Making the Finite Difference Step Size too small actually introduces uncertainty into the gradient and can therefore generate poor search directions making the process take longer, if a solution can be found at all. A Step Size that is too large has a similar effect, so it is important to select an appropriate value between the two extremes. The best value to use depends on the system in question  when in doubt, use the default.


Print Text Debug File  Generate a tabseparated file reporting on each call to the hydraulic solver. Actual pipe sizes are presented along with current Objective value and Design Requirement status.
Caution: The Advanced Control Parameters below should not be changed under normal circumstances without the direction of AFT Support.

Sizing Level Convergence

Maximum Iterations  This value is the number of sizing iterations, not the number of hydraulic solutions allowed. Generally, the hydraulic solution is by far the slowest part of the process, and as the number of uniquely sized pipes increases, so does the number of required hydraulic solutions. A problem with 100 independently sized pipes would require, at minimum, 100 hydraulic solutions just for 1 sizing iteration. That said, it is important to have an adequate number of sizing iterations regardless of the number of variables  if the process is stopped prematurely, the ideal sizes have not been found.

Consecutive Iterations for Convergence  The sizing process will be repeated at least this number of times while satisfying the convergence criteria. It is helpful to allow additional iterations because the sizing process can occasionally make little change in one iteration and then significant change in the next.

Relative Tolerance  Changes smaller than this relative amount (default of 0.1%) are considered small enough to be converged. Note that the number of iterations requiring a change in the value of the Objective smaller than this amount can be modified.

Absolute Tolerance  The value entered here is multiplied by the initial Objective value. The resulting value is considered as an absolute tolerance. By default, the Objective is scaled to 1,000 meaning that the default value of 0.0001 results in an absolute tolerance of 1,000*0.0001 = 0.1. Objective values smaller than 0.1 will use the absolute criterion instead of the relative.


Sequential Unconstrained Parameters

Maximum Number of Independent Pipe Sizes for Branch and Bound  Discrete solutions with this method require the use of Branch and Bound. If the system has more independently sized pipes than this value, the Sequential Unconstrained will automatically be used.

Sequential Unconstrained Parameters  See Sequential Unconstrained.


Design Requirement Tolerances

Violated  A very small positive value, which allows Design Requirements to be violated. It is important to allow this small violation for numerical reasons, as attempting to force values to zero is often difficult computationally.

Active  This small negative number determines how close to the Design Requirement the Objective can be before the Design Requirement influences the search direction. This value is updated automatically during the sizing process.


Scaling Parameters

Desired Objective Scaled Value  In some cases it is helpful to scale the value of the Objective. Very large or very small unscaled Objective values can present numerical issues, and scaling can help with this.

Scale Factor for Design Requirements

Common  Design Requirements are always scaled (dividing by the user defined quantity) for numerical reasons. This factor allows additional scaling.

Violated Tolerance  This can be used to reduce the value of Violated Design Requirement Tolerance. This can be useful if the small violation is unacceptable for a feasible design.



Print Optimizer Debug File  Generate a debug file detailing the normalized and generalized optimization process.
Related Topics
Sequential Quadratic Programming
Related Examples
Beginner: Three Tank Steam System  ANS