Simulação de Monte Carlo simples para isolar e ilustrar o efeito da disposição para despedir trabalhadores numa empresa em recessão

Função-modelo

Começa-se por definir uma curva que relaciona a rentabilidade económica de uma empresa (R) em função do número de trabalhadores (n) e do tempo (t). Esta curva pode ser deduzida integrando a curva da receita marginal dos trabalhadores (receita trazida à empresa por cada trabalhador adicional) e subtraindo as despesas totais em salários.

Algoritmo

Por cada timestep, gera-se aleatoriamente uma proposta para o novo nº de trabalhadores, e calcula-se o ΔR em relação ao timestep anterior.

Se ΔR for positivo, a empresa aceita automaticamente a proposta. Se for negativo, aceita com probalidade P = exp(ΔR/k), sendo k a constante que mede a disposição da empresa em despedir trabalhadores.

Esta função de probabilidade vem de uma adaptação do critério de Metropolis, P = min(1,exp(-ΔE/T)). Normalmente é usado em simulações de redes cristalinas, em que a função modelo E é a energia da rede cristalina, e T a temperatura. O critério reflete o facto de que um sistema tende a diminuir a sua energia se possível (P = 1 se ΔE < 0), e que temperaturas maiores permitem aceder estados energéticos mais altos e instáveis.

Código

Python

O ficheiro simul.py é a versão mais simples e fácil de ler, apenas contém o esqueleto da simulação.

Ao executar python simul.py, a simulação é corrida para uma empresa, e dá apenas um output textual do valor atual da função-modelo e dos seus parâmetros, por cada iteração.

R

O ficheiro simul.R contém, adicionalmente, toda a maquinaria para gerar gráficos.

Ao executar Rscript simul.R, a simulação é corrida em paralelo para todas as empresas, e gera-se um gráfico com a posição das empresas na curva R por cada graph_step, que depois podem ser combinados para formar um GIF de overview.

No final, são gerados vários gráficos relevantes, como o corte de R em relação a n, e n(t), para cada empresa.

Gráficos

Overview de uma simulação para 3 empresas



Emprego em função de t



Corte de R(t,n) em n



Emprego marginal até à 1ª falência



Histograma das Δn aceites para k = 1



Histograma das Δn aceites para k = 10



Histograma das Δn aceites para k = 100