This algorithm extends mhsa()
by introducing the nested approach, meaning
it automatically handles identified subphases (which are split by the user,
and merged again by the algorithm), and allows handling things like
inclusions by a splitting step at the end of the simulation (phases merged,
or rather rearranged, by the user, and split again by the algorithm).
nmhsa(
ti,
dimensions = NULL,
start_after = NULL,
stop_after = NULL,
stop_rejected = NULL,
stop_at = 1e-06,
order = NULL,
distance = NULL,
cool = 0.9,
levels = 2,
ti_merged = NULL,
ti_splitted = NULL,
merge_pairs = NULL,
merge_distance = NULL,
merge_stop_after = NULL,
split_distance = NULL,
split_stop_after = NULL
)
The original training image (2D array).
Dimensions for the reconstruction (vector of length 2 or
3). Defaults to the dimensions of ti
.
Number of iterations for determining the initial simulated annealing temperature. Defaults to 0.1% of the total amount of pixels in the reconstruction.
Maximum number of iterations. Defaults to the amount of pixels in the reconstruction. Can be a vector for different values per phase.
Maximum number of consecutively rejected iterations. Defaults to 1% of the total amount of pixels in the reconstruction.
Target precision. Defaults to 1e-6
.
Integer vector with the phase order for hierarchical simulation. Defaults to the least to the most occurring phase.
Distance, in pixels, up to which to investigate the
structural descriptors. Defaults to 1/4th of the minimum of dim(ti)
and
dimensions
.
Simulated annealing cooling factor. Must be lower than one.
Defaults to 0.9
.
Amount of grid levels (or resolutions) to use for the
reconstruction. Defaults to 2
. Can be a vector to use different levels
for different phases.
Merged version of ti
. Typically obtained through
phase_merge()
.
Splitted version of ti_merged
. Typically obtained
through phase_split()
.
List of length 2 vectors, indicating for which pairs of
phases optimisation should again be performed after merging all subphases
again to their original phase (transition from the state of ti_splitted
to the state of ti_merged
).
Distance, in pixels, up to which to investigate the
structural descriptors for the merging step. Defaults to 1/4th of the
minimum of dim(ti)
and dimensions
. Should be a vector of the same
length as merge_pairs
.
Maximum number of iterations for the merging step. Defaults to the amount of pixels in the reconstruction. Can be a vector for different values per phase.
Distance, in pixels, up to which to investigate the
structural descriptors for the splitting step. Defaults to 1/4th of the
minimum of dim(ti)
and dimensions
.
Maximum number of iterations for the splitting step. Defaults to the amount of pixels in the reconstruction.
A reconstructed 2D or 3D array.
A more general approach to the phase merging and splitting would be possible, where the user has control of every step in the simulation, but this is currently not implemented.
https://doi.org/10.1103/PhysRevE.100.053316