Skip to content

Discrete optimization#32

Merged
arincdemir merged 4 commits into
mainfrom
discrete-optimization
Apr 26, 2026
Merged

Discrete optimization#32
arincdemir merged 4 commits into
mainfrom
discrete-optimization

Conversation

@arincdemir

Copy link
Copy Markdown
Owner

This pull request adds support for streaming binary input files into property monitors and refactors the feeder interface for both JSON and binary data sources. The most significant changes are the introduction of new binary feeders, a redesign of the feeder API to return internal result vectors directly, and updates to benchmarks and code formatting for consistency.

Binary input support:

  • Added a new binary_feeder.cpp implementation and corresponding binary_feeder.hpp header, introducing DenseBinaryFeeder and DiscreteBinaryFeeder classes for streaming .row.bin files into monitors. These feeders automatically finalize monitors with a fixed proposition order and expose a unified interface for advancing time steps and retrieving results. [1] [2] [3]

Feeder API redesign and improvements:

  • Refactored the JSON feeder API in json_feeder.hpp and json_feeder.cpp so that feed_next now returns a pointer to the internal result vector (valid until the next call), instead of filling an output parameter and returning a boolean. This change also applies to the new binary feeders, ensuring a consistent interface across data sources. [1] [2] [3] [4] [5] [6]

Benchmark and code formatting updates:

  • Updated benchmark_multi_property.cpp to use the new feeder API, simplified the logic for advancing feeders, and improved formatting for readability and consistency. [1] [2] [3] [4] [5] [6] [7]

General code cleanup:

  • Improved code formatting and organization across several files, including consistent indentation, parameter ordering, and removal of unused includes. [1] [2] [3] [4] [5] [6] [7]

These changes collectively make the codebase more extensible for new input formats, simplify the feeder interface, and improve code maintainability.

Enhances the benchmarking suite to provide statistically rigorous and scientifically valid performance comparisons between DBSet and Boost.ICL.

Key changes:
- Added comprehensive correctness validation; all DBSet operations are now verified against Boost.ICL to ensure 'faster' is also 'correct'.
- Fixed temporal state leakage in Serial Update benchmarks by ensuring set state is reset within the measurement loop.
- Implemented interleaved, non-overlapping interval generation for scaling analysis, ensuring that normalized set complexity scales linearly with N.
- Added ablation benchmarks for specialized MTL operations: checkAndClip and unionIntervalFromRight.
- Parameterized input sizes (N=100 to 10,000) to demonstrate performance scaling and memory trends.
- Add binary_feeder.hpp and binary_feeder.cpp
- Integrate binary feeder into main.cpp to support --binary argument
- Add test coverage for dense and discrete binary feeders in test_json_input.cpp
- Update CMakeLists.txt to compile the new binary feeder
…ble slowdown. Instead, the user of the code can decide what to do with the outputs, that are given as a reference.
@arincdemir arincdemir merged commit fc50197 into main Apr 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant