An alternative: the single bisection

- 1 : we just split the variable having
the largest width (valid for all algorithms). Note however that it is
still possible to order the bisection i.e. to split first a subset of
the unknowns until their width is small (i.e. lower than
`ALIAS_Accuracy`, then another subset and so on. This is obtained by setting flag`ALIAS_Ordered_Bisection`to 1 and defining an integer matrix`ALIAS_Order_Bisection`whose rows indicate the bisected subset and should end by 0. For example if this matrix has as rows [1,3,0],[2,4,5,0], then the algorithm will first bisect the unknowns 1 and 3 until their width is small, then the unknowns 2,4,5. If all unknowns indicated in the rows of the matrix have a small width, then the bisection algorithm revert to the normal behavior. - 2: to determine the variable that will be bisected we use the following
approach: we compute the order criteria for the two boxes
that will result from the bisection of variable and retain the lowest
criteria . The variable that will be bisected is the one that has the
lowest except if for at least one variable the interval
evaluation of the function for or does not contain 0. In
that case the variable that will be bisected is the one that
verify the previous property and which has the lowest among all
the input intervals having the property.
However to avoid bisecting over and over
the same variable we use another test: let be the width of the
interval
and be the
maximum of all the . If
we don't consider the
variable as a possible bisection direction.
It is also possible to mix this mode with mode 1. If the integer
variable
`ALIAS_RANDG`is set to a strictly positive value then`ALIAS_RANDG`bisection will be performed using mode 2 while the next bisection will be performed using mode 1 and the process will be repeated - 3, 4 : similar to 1
- 5 : we use a
*round-robin*mode i.e. each variable is bisected in turn (first , then and so on) unless the width of the input intervals is less than the desired accuracy on the variable, in which case the bisected variable is the next one having a sufficient width (valid for all algorithms) The flag`ALIAS_Round_Robin`is used to indicate at each bisection which variable should be bisected. - 6: we emulate the smear function (see section 2.4.1.3)
with an estimation of the
gradient based on finite difference (procedure
`Select_Best_Direction_Grad`) - 7: here again we use the flag
`ALIAS_Ordered_Bisection`set to 1 and defining an integer matrix`ALIAS_Order_Bisection`whose rows indicates an order for bisecting the unknowns. The largest variable in the first row will be bisected first and so on until all the variables in a row have a width lower than`ALIAS_Accuracy`. We then proceed to the second row. As soon as all variables in all rows have a width lower than`ALIAS_Accuracy`we use the bisection 1. - 20: the user has defined its own bisection procedure, see section 11.3

There is another mode called the *mixed bisection*: among the
variables we will bisect variables, which will lead to
new boxes. This mode is obtained by setting
the global integer variable
`ALIAS_Mixed_Bisection`
to . Whatever is the value of
`Single_Bisection` we will order the variables according to their width
and select the variables having the largest width.