FirmsDecideVacancies#

class bamengine.events.planning.FirmsDecideVacancies[source]#

Bases: Event

Calculate number of job vacancies to post.

Firms compare their desired labor force to their current labor force and post vacancies for the difference (if positive).

Algorithm

For each firm i:

\[V_i = \max(L^d_i - L_i, 0)\]

where:

  • \(V\): number of vacancies to post

  • \(L^d\): desired labor (from FirmsDecideDesiredLabor)

  • \(L\): current labor force

Examples

>>> import bamengine as be
>>> sim = be.Simulation.init(n_firms=100, seed=42)
>>> event = sim.get_event("firms_decide_vacancies")
>>> event.execute(sim)
>>> (sim.emp.n_vacancies >= 0).all()
True
>>> (
...     sim.emp.n_vacancies == sim.emp.desired_labor - sim.emp.current_labor
... ).all()
True

See also

FirmsDecideDesiredLabor

Calculate labor requirements

bamengine.events._internal.planning.firms_decide_vacancies

Implementation

execute(sim)[source]#

Execute the event’s logic.

Mutates simulation state in-place. This method must be implemented by all Event subclasses.

Parameters:

sim (Simulation) – The simulation instance containing all state and configuration.

Returns:

All mutations are in-place.

Return type:

None

Examples

Implement execute in a custom event:

>>> from bamengine import event, ops
>>>
>>> @event
... class CustomPricingEvent:
...     def execute(self, sim):
...         prod = sim.get_role("Producer")
...         # Apply 10% markup to all prices
...         new_prices = ops.multiply(prod.price, 1.1)
...         ops.assign(prod.price, new_prices)

Access configuration and RNG:

>>> @event
... class StochasticEvent:
...     def execute(self, sim):
...         shock = sim.config.h_rho
...         random_values = sim.rng.uniform(0, shock, size=sim.n_firms)
...         # Use random_values in calculations

Notes

The execute method receives full Simulation access, including: - All roles: sim.get_role(“RoleName”) or sim.prod, sim.wrk, etc. - Configuration: sim.config - RNG: sim.rng - Economy state: sim.ec

__init__()#
name = 'firms_decide_vacancies'#