Skip to content

Releases: popmonkey/jres_solver_cpp

JRES Solver v3.1.1

15 Jan 23:34
8c7a5be

Choose a tag to compare

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

Full Changelog: v3.1.0...v3.1.1

JRES Solver v3.1.0

15 Jan 02:48

Choose a tag to compare

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

Full Changelog: v3.0.4...v3.1.0

JRES Solver 3.0.4

14 Jan 06:38
74e1480

Choose a tag to compare

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

Full Changelog: v3.0.3...v3.0.4

JRES Solver v3.0.3

13 Jan 19:17
ee449c5

Choose a tag to compare

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

11 Jan 07:20
cc5753d

Choose a tag to compare

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

Full Changelog: v2.2.1...v3.0.2

JRES Solver v3.0.1

11 Jan 05:47
8e3fcef

Choose a tag to compare

JRES Solver v3.0.1 Pre-release
Pre-release

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

Full Changelog: v2.2.1...v3.0.1

JRES Solver v3.0.0

11 Jan 01:45

Choose a tag to compare

JRES Solver v3.0.0 Pre-release
Pre-release

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

Full Changelog: v2.2.1...v3.0.0

JRES Solver v2.2.1

08 Jan 00:03
7c8fe9f

Choose a tag to compare

  • 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

Full Changelog: v2.0.0...v2.2.1

JRES Solver v2.1.1

06 Jan 05:48
a35661d

Choose a tag to compare

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

Full Changelog: v2.0.0...v2.1.1

JRES Solver v2.0.0

09 Dec 01:44
91860b4

Choose a tag to compare

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

Full Changelog: v1.0.0...v2.0.0