Comments, docstrings, help strings, printed labels and READMEs now say INIT, the repair of Eq. (5) and gradient
projection instead of algorithm numbers, so the text does not depend on the paper's numbering. The root README
keeps one line with the paper's numbers (and the cone projection, Algorithm 4).
No code, identifier, option or result key changed. The one stored string that changed is the "algorithm" field
that globmp.synthetic.run writes for new runs; the reference files are unchanged.
Algorithm 2 as written in the paper: step 1/beta and the repair of Eq. (5)
- globmp/repair.py (new): the repair of Algorithm 2 (Algorithm 1 in the paper), Eq. (5). After a cost step Y, the
next curve is the point nearest to Y of the set where every block, linearized at the current feasible curve, is
nonnegative on its whole interval. The solve keeps a list of contacts (block, instant): find the instants at
which a linearized block is negative, add them, fit nonnegative weights of all listed contacts jointly, repeat
until none is negative. Problem.repair(Y, z, tv); Problem.repair_tol.
- globmp/gpa.py: Problem.solve repairs with it (Problem.alg2_repair = 'eq5', the default). 'restore' keeps the
restoration of restore.py as the repair; the scaling study and Maze2D set it, because their results were
obtained with it, and the 'sampled' and 'orthant' modes always use it. The restoration still makes an
infeasible seed feasible.
- Section 4.1 (globmp/synthetic/run.py): one configuration, Algorithm 2 with step 1/beta and this repair from
INIT's curve; …
4 days ago
One INIT: globmp/init.py serves the grid start and the synthetic study
- globmp/init.py: INIT (Algorithm 3) as one function, the shortest path over the joints for given
per-joint state sets, with exact piece tests, budget pruning (cost-to-go rule by default, plain
budget rule as an argument) and back-pointers.
- globmp/gridstart: instance.py supplies the grid values per joint, the piece cost and the piece
test (GridStates, grid_start); plain_grid.py holds the plain grid; init.py removed. reference/
reproduces (same z_h and test counts in 36 of 36 cases).
- globmp/synthetic: joints.py supplies the per-pair states (positions on a grid, zero derivatives),
piece cost, piece test and route label; init.py removed. Same class and joints as before on all
80 instances; INIT takes 0.5 to 1.3 s per instance (median per robot count).
- The name INIT is used everywhere; the ranking file is N*_i*_init.json.
- gridstart run.py --first-order calls the current Algorithm 2 again.