Skip to content

Nothing in the default objective discourages the same sub-plot arrangement repeating across whole plots #140

Description

@rogerssam

objective_function() scores adjacency and row/column balance only. A layout in which every whole plot carries the same sub-plot arrangement scores no worse than one where the arrangements vary. Where the input is systematic and already sits at a local optimum, speed() returns it essentially unchanged.

Row-spanning whole plots show it plainly:

wholeplot 1  a d c b      score 132
          2  b a d c
          3  c b a d
          4  a d c b   <- block 2 identical to block 1
          7  a d c b   <- block 3 identical

This is a genuine optimum (per-block rotations score 150; 200 random arrangements score 156–285) but not the only one: 40 random-restart steepest-descent runs also reach 132 with 10 distinct arrangements of 12. Varied layouts exist at the same score; the search just never reaches them from a systematic start, because the tied optima sit in basins single swaps can't cross.

Compact whole plots (2×2) come out varied but only because the systematic start isn't optimal for that geometry, so the search leaves it. Nothing prevents repetition there either; it's luck of the geometry.

Why it matters: repeated arrangements confound sub-plot treatment with position within whole plot, regardless of whether the whole plots share rows or columns. A positional effect not captured by row + col is then inseparable from treatment. It wouldn't pass review as a randomised split-plot.

Directions:

  1. Add a repetition/concurrence-of-position penalty to the objective so varied layouts are strictly preferred, not merely tied.
  2. Make random_initialisation usable for swap_all designs (currently breaks unit structure, see random_initialisation destroys nesting in swap_all = TRUE designs #141) so structure-preserving restarts can find the varied optima.
  3. Post-process: randomly permute arrangements among tied whole plots. This would not change the score.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions