Source code for scml.std.world

from typing import Any

from scml.oneshot.world import PLACEHOLDER_AGENT_PREFIX, SCMLBaseWorld

__all__ = [
    "StdWorld",
    "SCML2024StdWorld",
    "STD_DEFAULT_PARAMS",
    "STD_DEFAULT_PARAMS2024",
    "PLACEHOLDER_AGENT_PREFIX",
]

[docs] STD_DEFAULT_PARAMS = dict( perishable=False, n_processes=(2, 3), horizon=10, disposal_cost=0, disposal_cost_dev=0, storage_cost=(0.01, 0.05), storage_cost_dev=0, price_range_fraction=0.1, price_multiplier=0.0, wide_price_range=False, one_time_per_negotiation=False, quantity_multiplier=3, max_productivity=(0.8, 1.0), max_supply=(0.2, 1.0), exogenous_supply_predictability=(0.0, 0.7), exogenous_sales_predictability=(0.0, 0.7), cap_exogenous_quantities=False, )
[docs] STD_DEFAULT_PARAMS2024 = STD_DEFAULT_PARAMS
[docs] class StdWorld(SCMLBaseWorld): """The world representing the base standard simulation (starting SCML 2024)""" def __init__( self, *args, horizon=STD_DEFAULT_PARAMS["horizon"], price_range_fraction=STD_DEFAULT_PARAMS["price_range_fraction"], price_multiplier=STD_DEFAULT_PARAMS["price_multiplier"], wide_price_range=STD_DEFAULT_PARAMS["wide_price_range"], one_time_per_negotiation=STD_DEFAULT_PARAMS["one_time_per_negotiation"], perishable=STD_DEFAULT_PARAMS["perishable"], quantity_multiplier=STD_DEFAULT_PARAMS["quantity_multiplier"], **kwargs, ): super().__init__( *args, price_range_fraction=price_range_fraction, # type: ignore horizon=horizon, # type: ignore one_time_per_negotiation=one_time_per_negotiation, # type: ignore perishable=perishable, # type: ignore quantity_multiplier=quantity_multiplier, # type: ignore price_multiplier=price_multiplier, # type: ignore wide_price_range=wide_price_range, # type: ignore **kwargs, ) @classmethod
[docs] def generate( cls, *args, n_processes=STD_DEFAULT_PARAMS["n_processes"], disposal_cost=STD_DEFAULT_PARAMS["disposal_cost"], disposal_cost_dev=STD_DEFAULT_PARAMS["disposal_cost_dev"], storage_cost=STD_DEFAULT_PARAMS["storage_cost"], storage_cost_dev=STD_DEFAULT_PARAMS["storage_cost_dev"], perishable=STD_DEFAULT_PARAMS["perishable"], max_productivity=STD_DEFAULT_PARAMS["max_productivity"], max_supply=STD_DEFAULT_PARAMS["max_supply"], exogenous_supply_predictability=STD_DEFAULT_PARAMS[ "exogenous_supply_predictability" ], exogenous_sales_predictability=STD_DEFAULT_PARAMS[ "exogenous_sales_predictability" ], cap_exogenous_quantities=STD_DEFAULT_PARAMS["cap_exogenous_quantities"], **kwargs, ) -> dict[str, Any]: """ Generates the configuration for a world Remarks: - This method just sets the defaults differently to create a std instead of a oneshot world. """ return super().generate( *args, n_processes=n_processes, # type: ignore disposal_cost=disposal_cost, disposal_cost_dev=disposal_cost_dev, storage_cost=storage_cost, storage_cost_dev=storage_cost_dev, perishable=perishable, # type: ignore max_productivity=max_productivity, max_supply=max_supply, exogenous_supply_predictability=exogenous_supply_predictability, exogenous_sales_predictability=exogenous_sales_predictability, cap_exogenous_quantities=cap_exogenous_quantities, # type: ignore **kwargs, )
[docs] class SCML2024StdWorld(StdWorld): """The SCML-standard simulation as used in [SCML 2024](https://scml.cs.brown.edu)""" pass