Add setTracefile() method for structured optimization progress loggingAdd settracefile api #1158
+124
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds
setTracefile()method for structured, machine-readable optimization progress logging.Closes #1147
Motivation
As discussed in #1147, structured progress logging is useful for:
This provides a simpler alternative to implementing custom event handlers.
Design Decisions
primalbound,dualbound,time,nodesfor consistencyChanges
setTracefile(path, mode="a")method to Model_write_trace_event()for centralized trace writingBESTSOLFOUNDeventsEvents Recorded
solution_update: when a new best solution is foundsolve_finish: when optimization terminatesFields
type,time,primalbound,dualbound,gap,nodes,nsolUsage
trace.jsonl contains JSONL records
Future Work
Open Questions
solve_startevent be added to distinguish multiple optimize() calls in append mode?