Skip to content

netoptim v0.4.0 β€” Oracle Speedup & Clock-Skew Survey Release

Latest

Choose a tag to compare

@luk036 luk036 released this 09 Oct 05:32

netoptim v0.4.0 β€” Oracle Speedup & Clock-Skew Survey Release

Speeds up the oracle hot path (~3.4Γ— on the optscaling stress graph), forwards Options through new solve_network_feas / solve_opt_scaling facades, fixes a feasibility-facade AttributeError, and adds a full clock-skew scheduling survey paper + 30-minute Beamer deck. 36 tests pass.


Features

  • Oracle facades + EdgeOracle protocol: Added _typing.py (EdgeOracle Protocol + Cut alias), re-exported the oracles from __init__.py, and added solve_network_feas / solve_opt_scaling facades. OptScalingOracle.Ratio gained its missing update() no-op. (#9137d2f)
  • Tighter default optimizer settings: DEFAULT_TOLERANCE tightened to 1e-10 (was 1e-8; measured ~1e-5 vs ~1e-4 objective error for ~10–15 extra iterations), and solve_opt_scaling's gamma now defaults to float('inf'). (#1d36ef0)

Performance

  • Oracle hot path + Options forwarding: Forward Options through the facades (default 1e-8 vs ellalgo's 1e-20: 51β†’27 iterations on the stress graph); added an optional EdgeOracle.make_weight_fn hook with Ratio binding x[0]/x[1] once per assessment to avoid NumPy scalar indexing in the per-edge loop. Measured ~300 ms β†’ ~90 ms (3.4Γ—) on the 250-node / 1844-edge optscaling stress graph with identical gamma. (#505fab2)

Bug Fixes

  • solve_network_feas facade: It called cutting_plane_optim (needs assess_optim) and raised AttributeError; now calls cutting_plane_feas and drops the unused x0 argument. NetworkOracle now nominally subclasses OracleFeas, making mypy clean. (#505fab2)
  • Ratio.update() latent AttributeError: Added the missing no-op. (#9137d2f)
  • mypy config: Removed the duplicate ignore_missing_imports entry. (#8aa12b1)
  • RTD docs build: Added matplotlib to docs/requirements.txt. (#be689e8)

Testing & Code Quality

  • Oracle tests: Added tests for the make_weight_fn hook, Options forwarding, and the feasibility facade. (#505fab2)

Code Cleanup

  • Removed AI slop: Stripped docstring/comment boilerplate and expanded the EdgeOracle protocol stubs to multi-line. (#94f68b0, #d62cc66)

Documentation

  • Clock-skew scheduling survey paper + slides: Added a 16-page two-column Pandoc survey (paper/clock_skew_scheduling.md) and a 30-minute Beamer deck (41 frames) with a vendored IEEE CSL, TikZ figures, offline build Makefiles, and reference-availability notes. (#1f0df97, #59b61e2, #ab91ef7, #1fc930c, #25981dd)
  • Tunable parameter reference: Added tunable_parameter.md. (#7afef62)
  • AGENTS.md: Added agent guidelines. (#6e36a7f)

Build & CI

  • Updated GitHub Actions: checkoutβ†’v4, setup-pythonβ†’v5, codecov-actionβ†’v4; removed the stale .bak workflow files. (#6016c29, #5351aa8)

Full commit log (16 commits since 0.3):

  1. 25981dd docs: sync clock skew slides with paper revision
  2. 1fc930c docs: revise clock skew scheduling paper
  3. ab91ef7 docs: refresh figures for clock skew paper revision
  4. d62cc66 style: expand EdgeOracle protocol stubs to multi-line
  5. 59b61e2 docs: add reference availability notes for clock skew paper
  6. 1f0df97 docs: add clock skew scheduling survey paper and slide deck
  7. 1d36ef0 feat: default solve_opt_scaling gamma to inf and tighten tolerance to 1e-10
  8. 7afef62 docs: add tunable parameter reference
  9. 505fab2 perf: speed up oracle hot path, forward Options, fix feasibility facade
  10. 9137d2f refactor: formalize EdgeOracle protocol, add oracle facades, dedup Cut
  11. 94f68b0 cleanup: remove AI slop from docstrings and comments
  12. 6e36a7f docs: add AGENTS.md agent guidelines
  13. 5351aa8 ci: remove stale .bak workflow files
  14. 6016c29 ci: update GitHub Actions versions
  15. 8aa12b1 fix: remove duplicate ignore_missing_imports in mypy.ini
  16. be689e8 fix: add matplotlib to docs/requirements.txt for RTD build