Skip to content

Releases: Thell/bdo-empire

v0.5.5

27 Oct 21:03

Choose a tag to compare

Bug Fix for bonus and reserved lodging handling.

  • improve reporting details of warehouse lodging summary

v0.5.4

25 Oct 19:13

Choose a tag to compare

Fix imports and extra logging output from v0.5.0 to v0.5.3.

v0.5.0

25 Oct 17:47

Choose a tag to compare

Improve performance, improve console output and add 'Base Empire' feature.

  • Complete rewrite of the model and associated code improves solution time by more than 50% in most cases.

Comparison times (in seconds) using the same pricelist and settings...

Budget v0.4.5 v0.5.0
100 108 67
200 243 150
300 388 218
400 1810 861
500 3412 1378
550 4261 1398
  • console output now shows 'human' information instead of just id numbers.
warehouse               node                           task                     worker       value    value_rank
----------------------  -----------------------------  -----------------------  --------  --------  ------------
Velia                   Bartali Farm                   Chicken Meat Production  7571 🐢    10472035             1
Velia                   Finto Farm                     Chicken Meat Production  7571 🐢    10472035             1
Velia                   Ancient Stone Chamber          Excavation               7572 👺    11399548             1
Velia                   Ehwaz Hill                     Lumbering                7571 🐢     5307541             1
Velia                   Forest of Seclusion            Lumbering                7572 👺     4812704             1
Velia                   Forest of Seclusion            Mining                   7572 👺     1716699             1
Heidel                  Northern Plain of Serendia     Lumbering                7571 🐢     2464040             1
Heidel                  Lynch Farm Ruins               Excavation               7572 👺    11637435             1
Glish                   Serendia Shrine                Lumbering                7572 👺     3343528             1
Glish                   Glish Ruins                    Excavation               7572 👺    12886366             1
  • 'Base Empire' feature allows 'growing' from a given empire using the worker node assignments from the base'

Example of growing from a base empire of 450 CP to 460 CP in 48 seconds:

Extension to base empire:

warehouse          node                       task             worker      value    value_rank
-----------------  -------------------------  ---------------  --------  -------  ------------
Olvia              Wale Farm                  Olives           7573 👨    1307798             1
Calpheon City      Northern Wheat Plantation  Paprika Farming  7573 👨    1371063             1
Valencia City      Erdal Farm                 Pistachio        7573 👨    1480721             1
Sand Grain Bazaar  Bazaar Farmland            Nutmeg           7571 🐢    2857951             1


Extension to base empire:

warehouse            used    purchased    cost
-----------------  ------  -----------  ------
Olvia                   1            1       0
Calpheon City           1            1       0
Valencia City           1            1       0
Sand Grain Bazaar       1            1       0


Extension to base empire:

  Added Lodging cost: 0
  Added Worker Nodes: 4 cost: 4
     Added Waypoints: Unknown (depends on base empire routing)
   Added Total Value: 7017533

v0.4.5

04 Oct 18:14

Choose a tag to compare

Improve performance.

These changes improve performance upwards of 15x on test instances with an improvement of 5-6x on common empire sizes.

  • use continuous flow to dramatically reduce branching
  • disable reduced root cost heuristic

v0.4.4

02 Sep 20:44

Choose a tag to compare

Update lodging levels for Hakinza Sanctuary

v0.4.3

24 Aug 12:49

Choose a tag to compare

Update Hakinza lodging bonus limit to 7.

v0.4.2

22 Aug 02:27

Choose a tag to compare

v0.4.1

02 Aug 13:40

Choose a tag to compare

Fix forced nodes handling.

v0.4.0

31 Jul 20:59

Choose a tag to compare

UI feature: stop solver button

  • Allows user to interrupt solver and obtain the generated workerman json file from the current incumbent solution.

UI feature: improvement timeout in solver config

  • Allows user to set a timeout since the last solution improvement in seconds. ie: setting to 600 will timeout after 10 minutes of no improvements.

Solution quality: May 2025 changes to node CP costs caused optimal solutions to be missed. (This dramatically increases runtime!)

  • 'top_n' from 4 to 6 (top n towns per plant to consider)
  • 'nearest_n' from 5 to 7 (nearest n towns waypoints transport for)
  • 'max_waypoint_ub' from 25 to 17 (max workers transitting a waypoint)

Performance: solver thread solution sharing

  • Allows for solution sharing between multiple processes improving solution time when using multiple threads

Solver: Replaced PuLP with HiGHSpy to directly interface with the HiGHS solver instances and utilize the HiGHS callbacks to implement the above mentioned features (HiGHSpy now has a modelling interface on par with PuLP and PyOptInterface).

NOTE: The solution sharing helps reduce the increased runtime from the parameter changes but either setting the improvement timeout or manually stopping after a period of no improvement will likely be the 'normal' thing to do as the improvement increments typically get smaller as more time goes by and rarely make enough of an impact on CP savings from node connections to allow for additional nodes to be assigned which means they are more likely to be 'shifted' from one town/worker to another for the same cost and perhaps a few 10s or 100s of thousands improvement in the $/day.

v0.3.1

31 May 03:50

Choose a tag to compare

fix: forced selected nodes

When specific nodes are force activated the cp for the full connection is now properly optimized, accounted for.