Changelog

[0.0.13] - 2025-02-05

Changed

  • Changing a vessel’s schedule purges the event queue of all of the vessel’s events.

[0.0.12] - 2025-01-29

Fixed

  • Old schedules being applied after a ‘receive’ had a timeout.

[0.0.11] - 2024-12-29

Added

  • Prevent schedules containing unallocated trades to be applied.

  • Prevent schedules containing one trade that is allocated to several vessels.

  • The simulation continues after an exception in any agent’s code. An exception in an agent’s code will end that agent’s run of pre_inform, inform or receive for the current auction.

  • Info field for simulation export.

Fixed

  • Problems with vessel’s OnJourney in SimpleCompany.get_arrival_time.

[0.0.10] - 2024-12-11

Fixed

  • Schedules not detecting time window violations in some cases.

[0.0.9] - 2024-12-09

Added

  • Penalty calculation for unfulfilled contracts. The penalty is the transportation cost of using the biggest ship in the agent’s fleet.

  • The SimulationEngine applies new Schedules via apply_new_schedules. This function also logs any rejected schedules.

  • Function to format time (format_time in Mable.util)

Changed

  • Arrival time windows for all trades of an auction are between the auction time and the next auction time. For example, for monthly (every 30 days) auctions, trades at the auction on day 60 will have a pick-up window between 60 and 90.

  • SimpleCompany.apply_schedules

    • The function now defers the application of schedules. This means that schedules are not applied immediately and the function will not return a list of rejected schedules.

    • The function is no longer static but an instance function.

  • Refactored simulation_space into a package that has dedicated modules for the dataclasses and the network structure.

    • New modules simulation_space.structure, simulation_space.universe

Removed

  • Events (event_management.Event) no longer have a format_time function, use Mable.util.format_time.

[0.0.8] - 2024-12-4

Changed

  • Changed default of use_only_precomputed_routes in examples.environment.get_specification_builder to True

[0.0.7] - 2024-12-3

Added

  • Routes that are not precomputed and are computed during a run will also be buffered in the precomputed routes.

  • Added option use_only_precomputed_routes to examples.environment.get_specification_builder to only generate cargoes between ports that have a pre-exiting precomputed route

Fixed

  • Vessel location not being updated in TradingHeadquarters get_companies function.

  • TypeError for TradingCompany’s get_arrival_time() (SimpleCompany) if the vessel is OnJourney.

[0.0.6] - 2024-11-28

Changed

  • Schedule.copy to not create a deepcopy of the internal schedule. The original and the copy will remain independent with respect to add_transportation etc..

Fixed

  • Trade auction using sorted bids to determine payments.

  • Fixed adding to schedule producing “TypeError: unhashable type: ‘OnJourney’” when the vessel is on a journey.

  • Schedule completion time to calculate the full time.

[0.0.5] - 2024-11-26

Changed

  • Set Fuel price to 1, i.e. amount of consumed fuel is equivalent to fuel costs.

Fixed

  • Trade auction not being a reverse auction.

[0.0.4] - 2024-11-24

Added

  • Generate mixed fleets of Aframax, Suezmax and VLCCs

  • Timeouts for TradeCompany’s pre_inform, inform and receive

  • Calculate final idling per vessel

  • Calculate OnJourney locations and distances (distance calculation is time intensive)