This patch addresses some memory leaks and input validation
New in version 3
- Maximum Busy Hours Constraint: Implemented a new global
maximumBusyHours setting. This limits the total combined time a team member can be "busy" (either driving or spotting) within a sliding window, preventing overwork across multiple roles. - Global vs. Individual Constraints: Moved constraint definitions from individual team members to global solver settings to enforce uniform team rules:
- Minimum Rest: minimumRestHours is now a global setting applied to all members.
- Consecutive Stints: Replaced the per-member maxStints attribute with a global consecutiveStints setting, enforcing a consistent stint block size for all drivers.
- Advanced Optimization Incentives: Introduced new weights to fine-tune the solver's behavior:
- Role Coupling: roleCouplingWeight incentivizes keeping specific driver-spotter pairs together.
- Rotation Beat: rotationBeatWeight incentivizes regular, fair rotation patterns.
- Standardized packaging (
jres_solver-[version]-[platform]) - Output json includes all the options, settings, and solver version values used to arrive at the solution
For end users:
Note
Currently the easiest way to generate input for the tools (and library) is to use the JRES Availability Planner spreadsheet v3.0
Important
You must use the v3.0 spreadsheet. The other spreadsheets will not generate data in a format the JRES Solver v3 can handle
Check out the TOOLS documentation for standalone tools available for Windows, Linux, and MacOS (Intel and ARM)
For developers
Important
Breaking changes for library users. The input paramaters have changed.
The solver is available as a library on Windows, Linux, and MacOS (Intel and ARM)
See the main README for documentation
To develop the library, see the CONTRIBUTING documentation
What's Changed
- Refactor string use and fix memory leaks by @popmonkey in #52
Full Changelog: v3.1.0...v3.1.1