Releases: gtw123/OpusSolver
Releases · gtw123/OpusSolver
v3.0
New features
- New low-cost solver which generates solutions with low (but not quite minimal) cost.
- New
--optimize
option to generate multiple solutions for each puzzle and pick the best ones. - New
--analyze
option to generate a summary of each puzzle, including reagents, products and required reactions. - Readme now includes a detailed design overview.
Improvements
- Many small optimizations to the old ("standard") solver.
- Now uses
lp_solve
to generate a more sensible recipe for each solution, avoiding waste where possible. - Now verifies multiple solutions in parallel to save time (controlled via
--maxparallelverifiers
). - Optional wrapper script (
run.ps1
) to both generate and verify solutions in parallel.
Internal changes
- Now targets .NET 8.0
- Extensive refactoring and other changes
v2.2
New features
- Improved the console output to better handle many puzzles. It now displays progress dots instead of full puzzle names, but still displays errors for unsuccessful solutions.
- Added a
--report
option for saving a summary of the generated solutions and their metrics. - Improved solution verification to also detect overlapping parts.
- Added tests, using puzzles from omsim and the recent 24-hour challenge sample/test puzzles.
Improvements to generated solutions
- Added a new assembler for generating linear products.
- Added a new assembler for generating products which fit within a hexagon of diameter 3.
- Pistons are now automatically replaced with arms where possible.
- Many other small optimizations.
Bug fixes
- Extra copies of repeating molecules were sometimes being generated.
Repeat
instructions were generated at the wrong location when a sequence started with aWait
instruction.- If a puzzle had multiple identical products, they were sometimes dropped onto the wrong output.
v2.1
- Generated solutions are now automatically verified using libverify from omsim. If verification is successful, the cost/cycles/area/instructions metrics are automatically written to the solution file.
- Removed the hard-coded 18 repetitions for puzzles that contain both repeating and non-repeating products. OpusSolver now uses the "output scale" of a puzzle to work out how many products to create in this situation, which may lead to simpler solutions for some puzzles.