speed 0.0.11
Major Changes
- Added the
linked_colsargument tospeed(), naming columns that should be rearranged along with theswapcolumn, for example avariety_namelabel belonging to a numericvarietycode. For hierarchical designs, pass a named list to link different columns at different levels. (#105) -
speed()now stops as soon as a design reaches the lowest score its layout allows, applicable only to the defaultobjective_function(). This can be turned off per level withoptim_params(stop_at_optimal = FALSE).summary()now reports the lower bound score alongside the achieved one.
Minor Changes
- The startup version check now only runs in interactive sessions. Set the
SPEED_NO_VERSION_CHECKenvironment variable to disable it entirely. -
summary()now reports why each level stopped - the optimum was reached, no further improvement was found, no swap was possible, or the iteration cap was hit. The reason is also recorded asstop_reasonin each level’s metadata. -
speed()now warns when aswap_all = TRUEgroup holds no two treatments of equal replication, and stops a level immediately when no group in it can be swapped.
Bug Fixes
-
speed()no longer fails with “supplied seed is not a valid integer” whenseedis left unset in a session that has not yet used the random number generator andrandom_initialisationis toggled on. -
optim_params(random_initialisation = )no longer moves plots holding no treatment. -
optim_params(random_initialisation = )now respectsswap_all = TRUE, so it no longer breaks up the wholeplots or strips of a split-plot or strip-plot design. -
speed()now gives a clear error whengrid_factorsis malformed, instead of failing with “missing value where TRUE/FALSE needed”. - A two sided formula passed to
spatial_factorsis now rejected instead of silently accepted, and hierarchical designs now run the samespatial_factors,iterationsandseedchecks as simple ones. - Named lists for hierarchical arguments such as
iterationsare now split per level under theoptimiseargument, as they already were whenswapwas a named list. A level the list leaves out now takes that argument’s own default rather than the default forspatial_factors. - Columns that take no part in the optimisation are no longer converted to factors and back, so a class that cannot be rebuilt with
as.<class>(), such asDate, is now returned unchanged instead of ascharacter. (#122) - Each level of a hierarchical design now starts from the best design found so far, rather than whichever design the previous level’s search last accepted. A level could otherwise be optimised, and reported on, against a design that was never returned, or replace an earlier level’s better result with a worse one.
- A design that ties the best score found now replaces it, so a search that ends on a score plateau returns a random arrangement from that plateau rather than the systematic input it was given. Early stopping still counts only strict improvements.
- The swapped treatments passed to an objective function are now labels rather than factor codes, so
objective_function_piepho()updates the plots that actually moved.
speed 0.0.10
Major Changes
- Added a
summary()method for"design"objects, reporting structure and replication, a decomposed optimisation score, and design-quality diagnostics. (#73) -
grid_factorsgains an optionalbyelement naming the column that separates a design into several grids, e.g.list(dim1 = "row", dim2 = "col", by = "site")for a multi-environment trial. Each grid is scored on its own.
Minor Changes
- Designs whose
row/colcolumns are not numeric, or where two plots share a coordinate, now fail with a message naming the problem.
Bug Fixes
- Design metrics are now built from each plot’s
row/colcoordinates rather than the order of the rows in the data frame. Designs generated withobjective_function_piepho()should be regenerated. - Multi-site designs are no longer scored as one pooled grid, which discarded plots whose coordinates collided and counted adjacencies between sites. Use
grid_factors$byto name the grouping column. -
objective_function_piepho()now scores evenness of distribution per grid and reports each grid separately. A grid with no treatment replicated within it contributes0rather thanInf. -
calculate_efficiency_factor()now errors for a design whose treatment contrasts are not estimable, instead of returning an impossible value above 1. The row-column model gained an intercept, which does not change results that were already valid. -
summary()no longer errors on designs that cannot be placed on a single grid; the affected diagnostics report why they are unavailable instead. -
calculate_nb()no longer errors on designs with missing plots whenpair_mappingis not supplied. -
calculate_adjacency_score()now recycles a singlering_weightsvalue across every entry ofring_dists, so the default is usable with more than one ring. -
swap_all = TRUEno longer changes the replication of a design when an earlier level has unbalanced a swap group mid-search. Only treatments with matching replication are exchanged.
speed 0.0.9
Major Changes
- Deprecated the
splitsargument ofinitialise_design_df()in favor ofinitialise_split_design_df(). Passingsplitsnow warns with the equivalent suggested call.
Bug Fixes
-
speed()now errors whenswap_all = TRUEis used on a design with unequal within-group replication, instead of silently swapping treatments with different replication counts. -
speed()no longer returns numeric/integer columns (e.g.treatment,row,col) as their internal factor level codes instead of their original values. -
speed()no longer emits a “Setting row names on a tibble is deprecated” warning when passed a tibble. -
speed()now accepts designs withvctrs-backed multi-class columns (e.g. from theedibblepackage) instead of erroring; such columns are now returned ascharacter.
speed 0.0.8
Major Changes
- Added
ring_dists,ring_weights, andring_typearguments tocalculate_adjacency_scorefor weighting matches at larger adjacent ring radii; can be passed viaspeed().
speed 0.0.7
Minor Changes
- Fixed
autoplot.designwhere'block'column was required when providing another column forblock(#88).
speed 0.0.5
Major Changes
- Added
objective_function_factorialfor factorial designs, combining main-treatment and interaction balance scores (#78).