Releases: popmonkey/jres_solver_cpp
JRES Solver v3.1.1
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
JRES Solver v3.1.0
This version introduces a much more "human readable" diagnosis mode with advice on what to tweak when the solver cannot find a feasable solution.
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
- Detailed "human readable" diagnosis by @popmonkey in #51
Full Changelog: v3.0.4...v3.1.0
JRES Solver 3.0.4
This patch fixes #49
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
- additional validation by @popmonkey in #50
Full Changelog: v3.0.3...v3.0.4
JRES Solver v3.0.3
This patch fixes #47
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
- respect start/end boundaries for availability by @popmonkey in #48
Full Changelog: v3.0.2...v3.0.3
JRES Solver v3.0.2
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
- v3 - blocks and global stints and rest by @popmonkey in #41
- V3 cleanup by @popmonkey in #42
- maxBusyHours constraint by @popmonkey in #43
- input parameter changes by @popmonkey in #44
- provide version in the library binary by @popmonkey in #45
- include the version in the json output by @popmonkey in #46
Full Changelog: v2.2.1...v3.0.2
JRES Solver v3.0.1
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 and settings 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
- v3 - blocks and global stints and rest by @popmonkey in #41
- V3 cleanup by @popmonkey in #42
- maxBusyHours constraint by @popmonkey in #43
- input parameter changes by @popmonkey in #44
Full Changelog: v2.2.1...v3.0.1
JRES Solver v3.0.0
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])
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
- v3 - blocks and global stints and rest by @popmonkey in #41
- V3 cleanup by @popmonkey in #42
- maxBusyHours constraint by @popmonkey in #43
Full Changelog: v2.2.1...v3.0.0
JRES Solver v2.2.1
- Added optimization to incentivize consecutive stints (up to
maxStints) for both drivers and spotters - Fixed minimumRest
- add iRacing fair share as a hard constraint
- Combined standard and diagnosing solver
Note
Currently the easiest way to generate input for the tools (and library) is to use the JRES Availability Planner spreadsheet v2.0
Important
You must use the v2.0 spreadsheet. The other spreadsheets will not generate data in a format the JRES Solver v2 can handle
For end users:
Check out the TOOLS documentation for standalone tools available for Windows, Linux, and MacOS (Intel and ARM)
For developers
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
- incentives and optimizations by @popmonkey in #37
- apply consecutive incentives to spotters as well by @popmonkey in #38
- merge solver and diagnostic into elastic solver by @popmonkey in #39
- add a hard fair share requirement by @popmonkey in #40
Full Changelog: v2.0.0...v2.2.1
JRES Solver v2.1.1
Added optimization to incentivize consecutive stints (up to maxStints) for both drivers and spotters
Note
Currently the easiest way to generate input for the tools (and library) is to use the JRES Availability Planner spreadsheet v2.0
Important
You must use the v2.0 spreadsheet. The other spreadsheets will not generate data in a format the JRES Solver v2 can handle
For end users:
Check out the TOOLS documentation for standalone tools available for Windows, Linux, and MacOS (Intel and ARM)
For developers
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
- incentives and optimizations by @popmonkey in #37
- apply consecutive incentives to spotters as well by @popmonkey in #38
Full Changelog: v2.0.0...v2.1.1
JRES Solver v2.0.0
Major rewrite that changes what data is passed into the solver:
- Input / Output into the solvers is now via simple C-API structures (can be used from Python, Go, etc)
- JSON -> SolverInput and SolverOutput->JSON helper funcions can also be used to manage these
Warning
BREAKING CHANGE:
- Input into the solver no longer describes the race (start of race, lap times, fuel, etc) - instead the caller must provide a list of stints to solve for. This allows the caller to specify start/end times for each stint which may need to be varied to cover weather, day/night cycle, etc.
Note
Currently the easiest way to generate input for the tools (and library) is to use the JRES Availability Planner spreadsheet v2.0
Important
You must use the new v2.0 spreadsheet. The older spreadsheet will not generate data in a format the JRES Solver v2 can handle
For end users:
Check out the TOOLS documentation for standalone tools available for Windows, Linux, and MacOS (Intel and ARM)
For developers
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
Full Changelog: v1.0.0...v2.0.0
What's Changed
- v2.0 by @popmonkey in #33
- 2.0 fixes - balanced schedule and other fixes by @popmonkey in #34
- Gh workflow fixes by @popmonkey in #35
- Release cleanup by @popmonkey in #36
Full Changelog: v1.0.0...v2.0.0