Skip to content

Assign the ACT non-negativity default through sparse set iteration#1023

Open
Wegatriespython wants to merge 1 commit into
iiasa:mainfrom
Wegatriespython:fix/act-lo-generation-time
Open

Assign the ACT non-negativity default through sparse set iteration#1023
Wegatriespython wants to merge 1 commit into
iiasa:mainfrom
Wegatriespython:fix/act-lo-generation-time

Conversation

@Wegatriespython

@Wegatriespython Wegatriespython commented Jun 10, 2026

Copy link
Copy Markdown

This PR closes issue #1022.

It assigns the non-negativity default on ACT over the set intersection alone, and exempt the activity tuples with an explicitly negative bound_activity_lo — flagged in a derived set built from
the parameter's sparse records — in a second assignment. Under AUX_BOUNDS debug mode the exempted tuples receive the auxiliary bound, as before.

On the inputs from #1022: the assignment drops from 6,358 s to < 10 s (~225-node case) and from 56 s to < 2 s (R12); total time to solver handoff at ~225 nodes drops from ~111 min to ~5 min
(n = 3). Generated matrices are unchanged — identical row/column/nonzero counts at both scales, gdxdiff-identical ACT bounds (459,751 records at R12, including 323 negative bound_activity_lo
entries; also with AUX_BOUNDS active), and identical solve objectives (R12: 4581467.5705 in both forms; ~225-node case: Optimal, matching the stored solution of the same scenario).

How to review

PR checklist

  • Continuous integration checks all pass
    - [ ] Add or expand tests
  • Add, expand, or update documentation
  • Update RELEASE_NOTES

The relational test on bound_activity_lo in the inter-vintage-arbitrage
guard cannot drive sparse iteration (absent records satisfy >= 0), so the
assignment scans a label space that grows superlinearly with node count —
95 % of time-to-solver on a ~225-node Nexus input (6,358 s of 6,668 s).

Assign the default over the set intersection alone and exempt explicitly
negative bounds (new derived set is_bound_activity_lo_negative) in a
second sparse assignment. Matrices are unchanged; time to solver handoff
drops from ~111 min to ~6 min at ~225 nodes.
@codecov

codecov Bot commented Jun 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.3%. Comparing base (b0ded63) to head (fa8a398).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##            main   #1023     +/-   ##
=======================================
- Coverage   92.3%   92.3%   -0.1%     
=======================================
  Files         60      60             
  Lines       5260    5260             
=======================================
- Hits        4856    4855      -1     
- Misses       404     405      +1     

see 1 file with indirect coverage changes

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant