Método de Monte Carlo e os perigos de ignorar o desvio padrão

Método de Monte Carlo

Este pequeno experimento visa demonstrar o efeito e perigos de fazer dimensionamento a partir da média, desconsiderando o desvio padrão. Utilizaremos o método de Monte Carlo, em Excel, para isto. Download do arquivo.

Suponha a seguinte situação. Uma fábrica produz 10 mil itens por dia, envia para um centro consumidor, e neste, 10 mil itens são consumidos por dia. Pergunta: qual o estoque necessário para suportar a demanda?

Monte01.jpg

Montando num excel, é só considerar uma coluna para produção (10 mil), outra para demanda (10 mil).
Só tem uma fórmula: estoque de hoje = estoque dia anterior + produção – consumo.

Monte02.png

Resposta: É necessário estoque zero. Nada.
Se o mundo fosse determinístico, perfeito, não seria necessário ter item algum em estoque. Produção é igual à demanda, e fim de papo.


 

Mundo não-determinístico

O único problema é que o mundo não é determinístico. É o livre-arbítrio de cada um de nós que decide o que queremos fazer, o que queremos consumir. A soma de todas essas decisões individuais é o mercado. Não controlamos o mercado. É o mercado que dita as regras, e tais regras podem ter um comportamento estatístico modelável (ou não). Para descrever este comportamento estatístico, podemos lançar mão de ferramentas como o Método de Monte Carlo.

Basicamente, o método de Monte Carlo simula o comportamento da fábrica e o do consumidor, segundo alguma distribuição estatística.

Uma normal (ou gaussiana) é completamente definida por uma média e um desvio padrão. Quanto maior o desvio padrão, maior a chance do valor observado estar mais distante da média.

Monte03.png

No mesmo caso descrito, digamos que tanto a produção quanto o consumo sejam modelados por uma normal de média 10 mil e desvio padrão de 3 mil.

Monte04.jpg

O Monte Carlo vai sortear um valor para a produção, que vai ser próximo de 10 mil, talvez um pouco para cima ou um pouco para baixo. 65% dos valores estarão entre 7 mil e 13 mil (mais ou menos um desvio padrão), 95% dos valores estarão entre 4 mil e 16 mil (dois desvios padrões). Portanto, pode haver um dia com consumo muito acima da média, mas tais ocorrências serão raras. Por haver sorteios, este método lembra um cassino, por isso o nome “Monte Carlo”, em referência ao cassino.

Em termos de modelo Excel, usamos a função genNormal(média, desvio) para simular um sorteio de uma variável aleatória normal. Esta função é do pacote Yasai, cujas fórmulas estão contidas na planilha anexa. O Yasai é um pacote open source para simulação em planilha. Alguns pacotes mais famosos são o Cristal Ball e AtRisk.

Para um trial, ou seja, uma rodada aleatória, a produção gira em torno de 10 mil, a demanda também em torno de 10 mil. Estoque inicial igual a zero. Mas o estoque varia ao longo dos dias.

Monte05.png

No gráfico, nota-se que o estoque ficou negativo a maior parte do tempo.

Monte06.png

Para um outro trial:
(para simular outro trial no excel, apertar F9).

Monte07.png

Deve-se simular o modelo diversas vezes e guardar os resultados, para ter massa de dados para compensar o efeito da aleatoriedade de um trial.

Rodando uns 1000 trials neste caso, vai dar que 50% das vezes haverá problemas de desabastecimento e 50% sem problemas.

Na média, o consumo é igual à produção, mas o problema é o desvio padrão. Para suportar tais flutuações, são necessários os estoques.

 

Digamos, um estoque de 7 mil peças dá um aumento da garantia de abastecimento. O estoque tem que ser suficiente para cobrir o efeito somado dos desvios padrões (consumo e produção).

Monte08.jpg

Deve-se variar o estoque inicial, rodar outros tantos 1000 trials, e verificar a probabilidade de desabastecimento.

A pergunta final a responder é: qual o risco que quero correr? Qual o estoque mínimo que compense o custo do desabastecimento?

  • Se o produto não for importante, pode faltar à vontade, e é necessário pouco ou nenhum estoque.
  • Se o produto for crucial, é bom que o estoque seja bem calculado.
  • Quanto maior o custo do desabastecimento, maior o estoque de segurança necessário.

 

O método de Monte Carlo pode ser utilizado para modelar situações complexas da vida real, e fornecer uma estimativa dos riscos associados. O modelo apresentado é muito simples, mas este pode ser tão complicado quanto se queira, com outras distribuições estatísticas, etc.

Ponderar Riscos x Seguros é exatamente a mesma conta de fazer o seguro do carro. Pagar o seguro é salgado, digamos 2 mil reais, mas ter o azar de ter o carro roubado é muito pior, digamos 50 mil reais.

Um seguro, um estoque, custa caro, mas vale a pena se este for dimensionado para evitar um prejuízo ordens de grandeza maior.

 

 

 

Gerador de Bullshit Comunista

Fiz um geradorzinho de bullshit comunista em javascript, e hospedei no link a seguir (porque o servidor do blog não aceita javascript):

 

http://asgunzi.github.io/BullshitComunista/

 


 

Tutorial para criar um gerador de bullshit:

1 – Escolha um tema facilmente “bullshitável”, como textos sobre comunismo.

 


2 – Separe algumas frases para o começo, algumas para o meio, e outras para o fim.

TabelaFrases.JPG

 


3 – Combine-as aleatoriamente.

Ex 1: “Ainda que as circunstâncias tenham mudado, sob o jugo do absolutismo feudal opondo um manifesto do próprio partido à lenda do espectro do comunismo.”

Ex 2:  “Um espectro ronda a Europa – o espectro do comunismo, da mesma forma que o pequeno burguês em duas grandes classes diametralmente opostas: a burguesia e o proletariado.”

 


 

 

Talvez haja algum maluco que veja sentido nisto, mas são frases que não pé nem cabeça.

Fica a dica.

 

http://asgunzi.github.io/BullshitComunista/

 

O mesmo projetinho encontra-se no Github, para quem quiser se inspirar.

Pequeno experimento com o Dilema do Prisioneiro

O Dilema do prisioneiro é um jogo clássico da Teoria dos Jogos. É um dilema porque, se um oponente escolher trair o outro, o primeiro obtém ganhos locais. Mas, se um confiar no outro e ambos colaborarem, o resultado global é melhor para todo mundo.
 

Fiz um pequeno simulador baseado neste jogo. É em Excel, disponível para download neste link.
https://drive.google.com/file/d/0B7qV4XXADYw2bzYweWc3YkViOUk/view?usp=sharing

 

TelaDilema


 

O jogo

Você está participando de um jogo com as seguintes regras:
 

– são 12 pontos em jogo, você contra um oponente
– tanto você quanto o oponente têm duas opções: dividir os pontos (cooperar), ou tomar todos os pontos para si.
– caso ambos cooperam, cada um receberá 6 pontos (6 e 6).
– caso um escolha “cooperar” e o outro “tomar”, o primeiro não ganhará pontos, e o segundo ganhará 10 pontos (10 e 0) ou (0 e 10).
– Caso os dois oponentes escolham tomar tudo, ambos ganham um ponto (1 e 1).
– são 20 rodadas contra cada oponente.


 

Os personagens
Simulei três tipos de personagens para jogar: o avarento, o coração mole, e o assertivo.

 
O tipo avarento é alguém que sempre joga “tomar tudo”, a fim de maximizar seus ganhos imediatos.

 
O tipo coração mole sempre joga compartilhar, sabendo que a longo prazo o bolo a ser dividido é maior se houver colaboração.

 
O tipo assertivo é baseado na estratégia “tit for tat” – retribui na mesma moeda o resultado anterior do oponente. Se o oponente escolheu cooperar na rodada anterior, ele coopera também. Se o outro escolheu tomar, ele também vai fazer isto. O primeiro voto dele é sempre cooperar, dando um voto de confiança. Um assertivo é alguém que não é nem “bonzinho” nem “malvado”, e o tit for tat é o comportamento que mais se aproxima de alguém assim.


 

Duelos

O Coração Mole é massacrado pelo Avarento.

game1

 

O Avarento também ganha do Assertivo, mas a margem é menor.

game2

Um avarento contra outro avarento: todo mundo sai perdendo.

game3

Já um coração mole contra um assertivo ou outro coração mole: todos saem ganhando.

Um assertivo contra outro assertivo também resulta em cooperação plena.

games4_6


 

Portanto, o quadro final de resultados entre jogos ficaria assim:

TelaResultados

 

Neste caso, o Assertivo ganha, com o ganancioso em segundo e o coração mole em terceiro.

 

Imaginando algo mais próximo da população de verdade, digamos que 25% da população seja de Avarentos, 50% de assertivos e 25% de corações moles. Neste caso, o ranking de ganhos ponderado ficaria assim:

TelaResumo

 

E o comportamento assertivo sai ganhando, neste mini campeonato de algoritmos.

E, numa população onde a maioria é de assertivos ou corações moles, o coração também ganha do avarento.

O resultado deste joguinho é meio metafórico, mas creio que podem surgir lições daí.

Uma sociedade onde ninguém coopera dá origem à “tragédia dos comuns” – um termo da Economia, onde um resultado que seria melhor para todos nunca é alcançado.

Uma sociedade só com “bonzinhos” é vulnerável a um espertalhão, ganancioso.

De algum modo, o ideal é ficar entre estes extremos.

 

 

Arnaldo Gunzi

Jun/2015