Sequential Decision Analytics and Modeling 2ª edição
Back to SDA site →

Capítulo 1: Modelagem de problemas de decisão sequencial

O processo de resolução de qualquer problema físico (e em particular qualquer problema de decisão sequencial) no computador exige a construção de um modelo matemático, como ilustrado na Figura 1.1. Durante décadas, a comunidade de pesquisa utilizou um arcabouço matemático padrão para problemas de decisão em que todos os dados são conhecidos com antecedência (conhecido como otimização determinística). Uma versão simples de um problema de otimização determinística, conhecida como programa linear, pode ser escrita

\[\begin{align} \min_x c^T x, \label{eq:linearprogram1} \end{align}\]

em que $x$ é um vetor de elementos que precisam satisfazer um conjunto de restrições que tipicamente são escritas

\[\begin{align} A x & = b, \label{eq:linearprogram2}\\ x & \geq 0. \label{eq:linearprogram3} \end{align}\]
A ponte entre o mundo real e o computador é um modelo matemático.
Figura 1.1. A ponte entre o mundo real e o computador é um modelo matemático.

Não é necessário entender as equações $\eqref{eq:linearprogram1}$–$\eqref{eq:linearprogram3}$ (o que exige familiaridade básica com álgebra linear), mas milhares de estudantes se formam a cada ano em cursos onde aprendem essa notação, e também aprendem como traduzir uma ampla gama de problemas físicos para essa notação. Depois, existem pacotes de software que traduzem problemas nesse formato em uma solução. O mais importante é que essa linguagem notacional é falada em todo o mundo. A mesma afirmação pode ser feita sobre modelagem estatística/aprendizado de máquina, que hoje é uma comunidade muito maior do que as pessoas que entendem as equações $\eqref{eq:linearprogram1}$–$\eqref{eq:linearprogram3}$.

Não podemos fazer a mesma afirmação sobre problemas de decisão sequencial, que constituem uma classe de problemas estudada por pelo menos 15 comunidades diferentes, usando oito estilos notacionais fundamentalmente distintos, muitas vezes com uma matemática que exige treinamento avançado. Neste livro, usamos um estilo de ensino por exemplo para mostrar como modelar a classe incrivelmente rica de problemas que chamamos de problemas de decisão sequencial. Embora nos concentremos em problemas relativamente mais simples, nosso arcabouço pode ser usado para modelar qualquer problema de decisão sequencial. Além disso, o modelo resultante pode ser traduzido diretamente para software.

O fundamento analítico deste livro está contido em Reinforcement Learning and Stochastic Optimization: A unified framework for sequential decisions (RLSO), que é um texto de nível de pós-graduação centrado em metodologia. De tempos em tempos, faremos referência a material contido nesse livro para leitores que possam ter interesse em maior profundidade, e encorajamos os leitores com inclinação técnica a usar o RLSO como referência. No entanto, isso não é necessário. Este livro foi projetado para fornecer o embasamento contextual na forma de uma série de exemplos que devem permitir aos leitores pensar de forma clara e precisa sobre problemas de decisão sequencial, mesmo que nunca venham a escrever uma linha de código.

Este livro é voltado para estudantes de graduação ou de mestrado que tenham cursado uma disciplina de probabilidade e estatística (não é necessário conhecimento de programação linear, embora tenhamos um exemplo que exige a resolução de um programa linear). Todos os capítulos são construídos em torno de exemplos específicos, com exceção do capítulo 1, que fornece uma visão geral de todo o arcabouço de modelagem, e do capítulo 7, no qual fazemos uma pausa e usamos os seis primeiros capítulos para ilustrar alguns princípios importantes.

A apresentação não deve exigir matemática além do que seria esperado em um primeiro curso de probabilidade e estatística. Dito isso, o livro é centrado em mostrar como descrever problemas de decisão sequencial usando uma notação suficientemente precisa para servir de base a um software de computador.

Módulos em Python acompanham a maioria dos capítulos; esses módulos foram escritos em torno do arcabouço de modelagem que perpassa todo o livro. Ao mesmo tempo, qualquer pacote de software que simule um problema de decisão sequencial, independentemente de como está sendo resolvido, pode ser traduzido diretamente para o arcabouço de modelagem que usamos. Por essa razão, encorajamos os leitores a olhar para qualquer trecho de notação como uma variável em um programa de computador.

Primeiros passos

Problemas de decisão sequencial sempre podem ser escritos como

\[decision,\ information, \ decision, \ information, \ decision, \ldots\]

Cada vez que tomamos uma decisão, incorremos em um custo ou recebemos uma contribuição ou recompensa (há muitas maneiras de medir o desempenho). As decisões são tomadas com um método que chamaremos de política. Um objetivo importante, que é o foco central deste livro, é projetar políticas eficazes que funcionem bem ao longo do tempo, na presença da incerteza de informações que ainda não chegaram.

Problemas de decisão sequencial são onipresentes, surgindo em praticamente todo processo humano. A Tabela 1.1 fornece uma amostra de campos, com exemplos de algumas das decisões que podem surgir. A maioria desses campos provavelmente tem muitos tipos diferentes de decisões, variando em complexidade desde quando vender um ativo ou adotar um novo design de site, até escolher o melhor medicamento, material ou instalação a projetar, ou gerenciar cadeias de suprimentos complexas ou despachar uma frota de caminhões.

CampoQuestões
NegóciosQuais produtos devemos vender, com quais características? Quais fornecedores devemos usar? Que preço devemos cobrar?
EconomiaQue taxa de juros o Federal Reserve deveria cobrar dado o estado da economia? Quais níveis de liquidez de mercado deveriam ser fornecidos?
FinançasEm quais ações uma carteira deveria investir? Como um operador deveria proteger um contrato contra uma possível perda?
InternetQuais anúncios devemos exibir para maximizar os cliques em anúncios? Quais filmes atraem mais atenção? Quando/como avisos em massa devem ser enviados?
EngenhariaComo projetar dispositivos, desde latas de aerossol até veículos elétricos, pontes até sistemas de transporte, transistores até computadores?
Saúde públicaComo devemos conduzir testes para estimar a progressão de uma doença? Como as vacinas devem ser alocadas? Quais grupos populacionais devem ser priorizados?
Pesquisa médicaQual configuração molecular produzirá o medicamento que mata mais células cancerígenas? Que conjunto de etapas é necessário para produzir nanotubos de parede única?
Gestão da cadeia de suprimentosQuando devemos fazer um pedido de estoque à China? Qual fornecedor deve ser usado?
Transporte de cargaQual motorista deve mover uma carga? Quais cargas uma transportadora de carga completa deveria se comprometer a mover? Onde os motoristas devem ser domiciliados?
Coleta de informaçõesPara onde devemos enviar um drone para coletar informações sobre incêndios florestais ou espécies invasoras? Qual medicamento devemos testar para combater uma doença?
Sistemas multiagentesComo uma grande empresa em um mercado oligopolista deveria licitar contratos, antecipando a resposta de seus concorrentes?
AlgoritmosQual regra de passo (stepsize) devemos usar em um algoritmo de busca? Como determinamos o próximo ponto para avaliar uma função de custo elevado?

Tabela 1.1. Uma amostra de diferentes campos e decisões que precisam ser tomadas em cada campo.

Ainda mais desafiador do que listar todos os tipos de decisões é identificar as diferentes fontes de incerteza que surgem em muitas aplicações. O comportamento humano, os mercados, os processos físicos, as redes de transporte, os sistemas de energia e a ampla gama de incertezas que surgem na área da saúde dão uma ideia da diversidade de diferentes fontes de incerteza.

No momento em que este livro está sendo escrito, a humanidade luta contra a disseminação de variantes da COVID-19. Lidar com essa pandemia foi descrito como “extremamente complexo” [USA Today, 8 de setembro de 2020], mas isso é, na verdade, resultado de uma falha em pensar sobre o problema de forma estruturada. Mostraremos ao leitor como decompor problemas em uma série de componentes básicos que levam a soluções práticas.

Nossa abordagem começa identificando alguns elementos centrais, como métricas de desempenho, decisões e fontes de incerteza, o que então leva à criação de um modelo matemático do problema. A próxima etapa costuma ser (mas nem sempre) implementar o modelo no computador, mas haverá muitos problemas em que o processo de construção de um modelo computacional é impraticável por diversas razões. Por essa razão, também consideraremos problemas em que precisamos testar e avaliar ideias no campo. Para melhorar o desempenho, primeiro precisamos aprender a tomar boas decisões ao longo do tempo (é assim que controlamos o sistema). Em seguida, voltamo-nos para o projeto do sistema.

Neste momento, a comunidade acadêmica não adotou um processo de modelagem padrão para problemas de decisão sequencial. Isso contrasta fortemente com a área dos problemas de otimização estáticos e determinísticos, que seguem um arcabouço rígido desde a década de 1950 (as equações $\eqref{eq:linearprogram1}$–$\eqref{eq:linearprogram3}$ representam uma amostra desse arcabouço). Nosso processo de modelagem é baseado na apresentação do RLSO, um livro voltado a um público técnico, primordialmente interessado em desenvolver e implementar modelos no computador.

Em contraste, este livro é voltado a um público mais amplo, primordialmente interessado em aprender a pensar sobre problemas de decisão sequencial. Ele utiliza um estilo de ensino por exemplo que se concentra em comunicar o processo de modelagem, o qual acreditamos ser útil mesmo sem, ao final, criar modelos computacionais. Central à nossa abordagem é a criação de um modelo matemático que elimina a ambiguidade ao descrever problemas em inglês corrente (plain English). Para os leitores interessados em desenvolver modelos computacionais, a notação é o trampolim para a escrita de software. No entanto, usaremos a notação matemática principalmente para trazer clareza na descrição de um problema, mesmo que o leitor nunca pretenda escrever uma linha de código.

Nossa apresentação segue da seguinte forma:

Os capítulos de aplicação (2–6 e 8–14) seguem todos o mesmo esquema. Podem ser cobertos em qualquer ordem, tendo em mente que as aplicações dos capítulos 2–6 são mais simples e foram escolhidas para ilustrar cada uma das quatro classes de políticas. Leitores interessados em tópicos específicos de modelagem (como variáveis de estado, modelagem de incertezas, ou em ver diferentes exemplos de políticas) podem folhear os capítulos, pulando diretamente para os tópicos de seu interesse.

Cada capítulo termina com uma série de exercícios divididos em três categorias:

Afinal, o que é uma decisão?

Há uma longa história, que remonta a mais de 2.000 anos, aos tempos de Sócrates, Aristóteles e Platão, documentando o estudo de como as pessoas tomam decisões. Depois, há uma literatura substancial, principalmente desde a década de 1950 (mas com alguns trabalhos importantes anteriores), sobre a matemática de tomar decisões ótimas, consistindo em muitos milhares de artigos e livros. O que essa literatura parece negligenciar é a pergunta básica:

O que é uma decisão?

Começamos com a observação de que uma decisão é uma forma de informação que afeta o comportamento de algum “sistema” que buscamos controlar. Implícita nesse sistema está uma ou mais medidas que quantificam o quão bem nosso sistema está funcionando. Precisamos então identificar um agente que controla algum aspecto do nosso sistema.

Dado esse fundamento, ajuda identificar três classes de informação:

  1. O estado de conhecimento – Esta é a informação que temos agora e que é relevante para o desempenho do nosso sistema.
  2. Informação que altera o estado de conhecimento que controlamos (isso exige identificar um agente controlador para nosso sistema).
  3. Informação que chega ao nosso sistema e que altera o estado de conhecimento, mas que está além do nosso controle.

Referimo-nos à informação da classe 2 como decisões. Isso sugere uma definição formal de decisão, baseada em Bridging Decision Problems, Volume I: Framing the Problem:

Definição (formal): Uma decisão é uma classe de informação endogenamente controlável.

Uma definição informal poderia ser:

Definição (informal): Uma decisão é algo que controlamos.

Essas definições oferecem um ponto de partida, mas não aprendemos muito com elas. Muito mais interessante é identificar exemplos específicos de decisões, o que faremos a seguir.

Tipos de decisões

Identificamos 10 tipos de decisões com base nos contextos e nas ferramentas que podemos usar para determinar as melhores decisões. São elas:

1) Decisões físicas e financeiras – Essas decisões surgem na gestão de recursos físicos e financeiros, como pessoas, equipamentos, instalações, produtos, água, energia, bem como recursos financeiros como caixa ou investimentos. As decisões incluem comprar, vender e modificar recursos, em que uma modificação pode significar movê-lo de um local para outro, reparar equipamentos, treinar uma pessoa ou combinar ingredientes para fazer um bolo.

2) Decisões complexas/estratégicas – São decisões que podem produzir múltiplas mudanças em um sistema (alterando recursos, parâmetros, crenças) e que tipicamente envolvem fontes significativas de incerteza. Essas decisões geralmente são avaliadas uma única vez, mas pode existir a opção de esperar e tomar a decisão mais tarde.

3) Decisões de aquisição de informação/observação – Incluem decisões como conduzir experimentos em laboratório, testes de campo ou simulações computacionais. Pode incluir fazer pesquisa de mercado, contratar um especialista, ou consultar um modelo de linguagem de grande porte.

4) Decisões de comunicação/compartilhamento de informação – Estas ocorrem em duas formas:

5) Métricas de desempenho e objetivos – Estas representam a escolha crítica de quantificar o que estamos tentando alcançar, como maximizar receitas, minimizar custos, minimizar doenças ou maximizar votos recebidos.

6) Escolha de funções – Podem ser métodos para tomar decisões (políticas), a formulação de modelos de otimização, a escolha de métricas de desempenho, métodos de previsão ou estimação, ou o design de funções de transição (como a forma pela qual uma doença se espalha).

7) Definição de parâmetros – Frequentemente existem vários parâmetros que afetam o desempenho de um sistema. Podem ser preços, os coeficientes em um modelo estatístico, a temperatura usada em um processo de fabricação. Podem ser o peso atribuído a uma métrica de desempenho, ou metas de desempenho.

8) Estimação ou identificação – Podemos precisar identificar uma pessoa, prever a demanda ou nomear uma doença.

9) Características e comportamentos – Como projetar um produto, quais características um pacote de software deve ter, quais serviços devem ser fornecidos a um cliente, ou a área de estudo de um estudante, que determina quais habilidades ele terá ao se formar.

10) Decidir o que decidir – Embora geralmente não usemos análise formal para essa decisão final, é importante reconhecer quando estamos tomando uma decisão e se queremos abordá-la formalmente usando análise de dados e modelagem.

Implícita na identificação de decisões está a compreensão de como a decisão afeta o desempenho do sistema. Mover recursos físicos (tipo 1) tem um custo, enquanto satisfazer demandas traz receitas. Uma decisão pode ter um impacto imediato sobre uma ou mais métricas de desempenho (como frequentemente ocorre na gestão de recursos), mas muitas vezes as decisões precisam ser avaliadas ao longo do tempo, e dependem de informações que não são conhecidas no momento em que a decisão é tomada. Por essa razão, frequentemente estamos avaliando como estamos tomando decisões (ou seja, o método) em vez da decisão em si.

Enquadrando o problema

O primeiro passo ao abordar um problema de decisão envolve responder a três perguntas:

Observe que as respostas a essas perguntas são fundamentais para qualquer problema de decisão. Neste livro, essas perguntas parecerão bastante simples, porque as respondemos no contexto dos modelos que já projetamos para resolver um problema. Em aplicações reais, as listas de métricas de desempenho, decisões e incertezas podem ser bastante extensas.

Como uma amostra da riqueza que o enquadramento de um problema pode assumir, encorajamos o leitor a consultar a monografia Framing the Problem, dedicada exatamente a esse tópico. A monografia possui capítulos inteiros dedicados a cada uma dessas perguntas, ilustrados usando uma dúzia de aplicações diferentes.

O objetivo do processo de enquadramento é identificar o que importa, começando pelas métricas de desempenho, em que até mesmo um problema simples de estoque pode ser descrito com mais de 20 métricas de desempenho, 30 tipos diferentes de decisões e mais de 30 tipos de incertezas. A planilha listando esses itens pode ser encontrada em tinyurl.com/PowellInventoryDecisions. Isso não significa que de fato construiremos um modelo com toda essa complexidade. Por essa razão, o livro apresenta um dispositivo chamado matrizes de interação, no qual um especialista do domínio prioriza as métricas e depois usa seu julgamento para identificar as decisões e incertezas que têm o maior impacto sobre as métricas mais importantes.

Este livro assume que já reduzimos um problema a um pequeno número de métricas, decisões e incertezas, e usa esses elementos para orientar o desenvolvimento de um modelo matemático.

O processo de modelagem

Modelagem é uma arte, mas é uma arte guiada por uma estrutura matemática que garante que obtenhamos um problema bem definido, que podemos colocar no computador e resolver. Isso pode ser visto como a construção de uma ponte entre um problema do mundo real, confuso e mal definido, e algo com a clareza que um computador pode entender, mesmo que seu objetivo final não seja colocá-lo no computador.

Historicamente, se um esforço de modelagem envolvia tentar tomar decisões, as pessoas recorriam à estrutura bem conhecida da otimização determinística, que frequentemente se assemelha ao modelo dado pelas equações $\eqref{eq:linearprogram1}$–$\eqref{eq:linearprogram3}$, que consiste em variáveis de decisão $x$, uma função objetivo $cx$, e as restrições dadas por $\eqref{eq:linearprogram2}$–$\eqref{eq:linearprogram3}$.

O problema com essa estrutura clássica de modelagem é o que ela deixa de fora:

Os modelos matemáticos devem, antes de tudo, fornecer um caminho que nos diga como pensar sobre os problemas. Os modelos clássicos de otimização determinística que seguem o formato das equações $\eqref{eq:linearprogram1}$–$\eqref{eq:linearprogram3}$ ignoram completamente qualquer coisa relacionada à evolução do nosso problema ao longo do tempo.

Este livro é inteiramente estruturado em torno de uma abordagem de modelagem chamada de framework universal de modelagem. Em resumo, ela aspira a representar qualquer aspecto de um sistema controlável. Nosso modelo padrão assumirá que o sistema evolui ao longo do tempo, à medida que novas informações chegam.

Nesta seção, apresentaremos uma versão bastante compacta do framework universal de modelagem. Em seguida, ilustraremos o framework, inicialmente usando um problema de estoque muito simples, mas depois introduzindo algumas extensões modestas. Após apresentar esses exemplos, voltaremos a uma apresentação mais detalhada do framework universal de modelagem.

Uma apresentação compacta de um modelo dinâmico

Começamos observando que podemos modelar qualquer problema de decisão sequencial usando a sequência

\[(S_0,x_0,W_1,S_1,x_1,W_2, \ldots, S_t, x_t, W_{t+1}, \ldots, S_T),\]

onde:

A decisão $x_t$ é determinada por algum método que chamamos de política, que denotamos por $X^\pi(S_t)$. A notação $\pi$ carrega informação sobre a estrutura da função, que representamos por $f$ em um conjunto de funções potenciais $\Fcal$, e quaisquer parâmetros ajustáveis $\theta\in\Theta^f$, que são definidos pela estrutura da função. Por exemplo, uma política de estoque poderia ser pedir $\theta^{order}$ unidades sempre que o estoque cair abaixo de $\theta^{min}$, o que significa que os parâmetros ajustáveis são $\theta = (\theta^{order}, \theta^{min})$. A estrutura da função seria um exemplo de uma função $f$.

Assumimos que temos uma função de transição que recebe como entrada o estado $S_t$, a decisão $x_t$, e a informação exógena $W_{t+1}$, e nos fornece o estado atualizado $S_{t+1}$. Funções de transição são um conjunto de equações que atualizam cada elemento da variável de estado $S_t$, que pode ter apenas um elemento, ou dezenas de milhares (ou muito mais).

Incorremos em uma contribuição (ou custo) $C(S_t,x_t)$ quando tomamos a decisão $x_t=X^\pi(S_t)$ dada a informação no estado $S_t$. Nosso objetivo é encontrar a política que maximize algum objetivo que dependa das contribuições $C(S_t,x_t)$ onde $x_t=X^\pi(S_t)$. Para ambientes mais complexos, $C(S_t,x_t)$ pode, na verdade, ser um conjunto de métricas de desempenho, embora seja necessário combiná-las de alguma forma para identificar qual decisão $x_t$ escolher.

Esta é uma descrição bastante compacta de um problema de decisão sequencial. A seguir, descrevemos um conjunto de passos a seguir no processo de modelagem.

Os passos no processo de modelagem

É possível dividir todo o processo de modelagem em sete passos (para os nossos propósitos). Precedendo esses passos (indicado abaixo como “Passo 0”) há um breve resumo da complexidade técnica da aplicação para ajudar a orientar os leitores.

Passo 0. Resumo do capítulo – Abrimos cada capítulo com um resumo do que o capítulo vai abordar e, em alguns casos, como ele se relaciona com o material de outros capítulos. Os resumos indicam quais abordagens são usadas para modelar a incerteza e as políticas que são utilizadas.

Passo 1. A narrativa – Esta será uma descrição em inglês simples (ou, no nosso caso, em português simples) do problema. A narrativa não fornecerá todas as informações necessárias para criar um modelo matemático; em vez disso, é um primeiro passo que deve dar ao modelador a visão geral sem se perder na notação.

Passo 2. Enquadrando o problema – Isso consiste em responder a três perguntas:

Passo 3. Identificando os elementos centrais do problema, com ênfase especial em três dimensões de qualquer problema de decisão sequencial. Esses elementos são descritos sem o uso de matemática:

Nos referimos ao processo de responder a essas três perguntas como enquadrar o problema.

Tipo de incertezaDescrição
1) Erros observacionaisObservar pessoas com sintomas; erros ao classificar pessoas com sintomas como tendo COVID
2) Incerteza exógenaRelatos de novos casos, mortes; disponibilidade de UTIs; produção real de vacinas
3) Incerteza prognósticaAdmissões hospitalares; desempenho futuro das vacinas; resposta da população às vacinas
4) Incerteza inferencialEstimativas de taxas de infecção; estimativas de eficácia das vacinas
5) Incerteza experimentalDesempenho de medicamentos em um ensaio clínico; número de pessoas vacinadas
6) Incerteza de modeloTaxas de transmissão da doença; disseminação geográfica das infecções
7) Incerteza transicionalAdições/retiradas dos estoques de vacinas
8) Incerteza de controleQuais grupos populacionais foram vacinados; alocações de vacinas
9) Incerteza de implementaçãoFalha em vacinar
10) Erros de comunicaçãoErros de relato do campo; falha em notificar quando ser vacinado
11) Incerteza de objetivoDivergências sobre quem deveria ser vacinado
12) Incerteza ambientalSe/quando uma vacina será aprovada; alocação de vacinas para diferentes estados, países

Tabela 1.2. Ilustração de diferentes tipos de incerteza que surgem na resposta de vacinação à pandemia de COVID.

Passo 4. O modelo matemático – Aqui construímos a partir dos três primeiros elementos do Passo 2, mas agora precisamos criar um modelo matemático que consiste em cinco dimensões que se aplicam a todo problema de decisão sequencial:

\[S_{t+1} = S^M(S_t,x_t,W_{t+1}),\]

onde $S^M(\cdot)$ é conhecido como o modelo de transição de estado (ou sistema) (daí o $M$ no sobrescrito). A função de transição descreve como cada elemento da variável de estado muda dadas as decisões $x_t$ e a informação exógena $W_{t+1}$. Em problemas complexos, a função de transição pode exigir milhares de linhas de código para ser implementada.

\[\begin{align} \max_{\pi=(f,\theta)} F^\pi(S_0) = \E \left\{\sum_{t=0}^T C(S_t,X^\pi(S_t\vert \theta))\vert S_0\right\},\label{eq:baseobjectivefunction} \end{align}\]

onde “$\E$” é chamado de operador de expectativa, o que significa que estamos tirando uma média sobre qualquer coisa aleatória, o que pode incluir informação incerta no estado inicial $S_0$, assim como o processo de informação exógena $W_1, \ldots, W_T$. É padrão escrever o operador de expectativa, mas nunca conseguimos realmente calculá-lo. Mais adiante mostraremos como aproximá-lo executando uma série de simulações e tirando uma média, ou observando um processo em campo.

É preciso cautela ao interpretar o operador de expectativa “$\E$” na equação $\eqref{eq:baseobjectivefunction}$. O que esse operador literalmente significa é “tirar uma média sobre tudo que é incerto.” A peça mais óbvia de incerteza é o processo de informação exógena $W_1, W_2, \ldots, W_t, \ldots, W_T$.

A transição do problema real (guiado pela narrativa) para os elementos do modelo matemático é talvez o passo mais difícil, pois frequentemente envolve solicitar informações de uma fonte não técnica.

Observamos que apresentamos o modelo inteiro sem especificar como tomamos decisões, o que é representado pela política $X^\pi(S_t)$. Chamamos isso de “modelar primeiro, depois resolver” e isso representa uma grande ruptura com a vasta literatura que trata de problemas de decisão sequencial. É difícil comunicar o quão importante é abordar problemas de decisão sequencial dessa forma.

Passo 5. O modelo de incerteza – Esta é a forma como modelamos os diferentes tipos de incerteza. Há duas maneiras de introduzir incerteza em nosso modelo:

  1. Através do estado inicial $S_0$, que pode especificar uma distribuição de probabilidade para parâmetros incertos, como a forma como um paciente pode responder a um medicamento ou como o mercado pode responder a um preço.
  2. Através do processo de informação exógena $W_1, \ldots, W_T$.

Temos três maneiras de modelar o processo de informação exógena:

Passo 6. Projetando políticas – Políticas são funções, então precisamos buscar a melhor função. (Sim, políticas são funções para escolher a melhor decisão, mas escolher a política também é uma decisão!) Fazemos isso identificando duas estratégias centrais para o projeto de políticas:

Vamos ser muito mais explícitos sobre como identificar essas políticas. Uma seção posterior descreve quatro classes de políticas que incluirão qualquer método para tomar decisões (estas são metaclasses).

Passo 7. Avaliando políticas – Encontrar a melhor política significa avaliar políticas para determinar qual é a melhor. Há duas maneiras de avaliar uma política:

Simuladores podem ser complexos e difíceis de construir, e ainda estão sujeitos a aproximações de modelagem. Por esse motivo, a vasta maioria dos problemas práticos encontrados na prática tende a envolver testes em campo, o que é lento (leva um dia para simular um dia) e requer conviver com os resultados dos experimentos.

A única maneira de se familiarizar com um modelo matemático é vê-lo ilustrado usando um exemplo familiar. Começamos com um problema universal que todos nós encontramos no dia a dia: gerenciar estoques.

Alguns problemas de estoque

Vamos ilustrar nosso framework de modelagem usando duas variações de um problema de estoque clássico, que é amplamente utilizado como aplicação para ilustrar certos métodos de resolução de problemas de decisão sequencial. Começamos com um exemplo simples de estoque que transmite os elementos centrais do nosso framework de modelagem, mas nos permite ignorar muitas das complexidades que exploraremos no restante do livro.

Em seguida, vamos fazer a transição para um problema de estoque ligeiramente mais complicado, que nos permitirá ilustrar alguns princípios de modelagem. Ao longo do livro, também vamos usar a ideia de começar com uma versão básica de um problema, e então introduzir extensões que sugerem os tipos de complicações que podem surgir em aplicações reais.

Um problema simples de estoque

Um dos problemas de decisão sequencial mais familiares que todos nós vivenciamos cada vez que visitamos uma loja é um problema de estoque. Vamos usar uma versão simples desse problema para ilustrar os seis passos do nosso processo de modelagem que introduzimos acima:

Passo 1: Narrativa – Uma pizzaria precisa decidir quantas libras de linguiça pedir ao seu distribuidor de alimentos. O restaurante precisa tomar a decisão no final do dia $t$, comunicar o pedido que então chega na manhã seguinte para atender aos pedidos de amanhã. Se houver linguiça sobrando, ela pode ser mantida até o dia seguinte. O custo da linguiça, e o preço pelo qual será vendida no dia seguinte, são conhecidos com antecedência, mas a demanda não é.

Passo 2: Os elementos centrais do problema são:

Passo 3: O modelo matemático – Isso consiste em cinco elementos.

1) A variável de estado $S_t$ – Distinguimos entre a variável de estado inicial $S_0$, e a variável de estado dinâmica $S_t$ para $t > 0$. A variável de estado inicial $S_0$ consiste em parâmetros fixos e valores iniciais de variáveis que mudam ao longo do tempo, dando-nos

\[S_0 = (R^{inv}_0, (p, c), (\Dbar, \sigmabar^D)).\]

Dividimos o estado inicial em três tipos de variáveis:

A variável de estado dinâmica $S_t$ é nosso estoque, que vamos chamar de $R^{inv}_t$. Por enquanto, este é o único elemento da variável de estado dinâmica, então

\[S_t = R^{inv}_t.\]

Mais adiante, vamos introduzir elementos adicionais à nossa variável de estado.

2) A variável de decisão $x_t$ é quanto pedimos no tempo $t$, o que assumimos (por enquanto) chega imediatamente. Tomamos nossas decisões com uma política $X^\pi(S_t)$ que projetamos mais adiante.

3) A informação exógena é a demanda aleatória por nosso produto, que vamos denotar $\Dhat_{t+1}$, então $W_{t+1} = \Dhat_{t+1}$.

4) Nossa função de transição captura como o estoque $R_t$ evolui ao longo do tempo, o que é dado por

\[\begin{align} R^{inv}_{t+1} = \max\{0, R^{inv}_t+x_t-\Dhat_{t+1}\}. \label{eq:inventoryexampleequation} \end{align}\]

5) Nossa função objetivo. Para nosso problema de estoque, é mais natural calcular a contribuição incluindo o custo de compra do produto $x_t$ e a receita da satisfação da demanda $\Dhat_{t+1}$, o que significa que nossa função de contribuição de período único seria escrita

\[C(S_t,x_t,\Dhat_{t+1}) = -cx_t + p \min\{R^{inv}_t+x_t, \Dhat_{t+1}\},\]

onde $x_t = X^\pi(S_t)$. Dada uma sequência de demandas $\Dhat_1, \ldots, \Dhat_T$, o valor de uma política $\Fhat^\pi$ seria

\[\Fhat^\pi(S_0) = \sum_{t=0}^T C(S_t,X^\pi(S_t),\Dhat_{t+1}).\]

Nossos lucros $\Fhat^\pi(S_0)$ são aleatórios porque dependem de uma sequência particular de demandas aleatórias $\Dhat_1, \ldots, \Dhat_T$. Finalmente, fazemos a média sobre essas demandas aleatórias tomando a expectativa:

\[\begin{align} F^\pi(S_0) = \E \left\{\sum_{t=0}^T C(S_t,X^\pi(S_t),\Dhat_{t+1})\vert S_0\right\}. \label{eq:inventoryobjective} \end{align}\]

Aqui, o condicionamento no estado inicial $S_0$ pode ser lido como dizendo “tome a expectativa dado o que sabemos inicialmente.” O condicionamento em $S_0$ é implícito sempre que tomamos uma expectativa, e como resultado muitos autores o omitem. No entanto, vamos incluir o condicionamento em $S_0$ para deixar claro que, se nossos insumos iniciais (incluindo crenças) mudarem, isso pode ter um efeito sobre como uma política se comporta.

Passo 4. O modelo de incerteza – A abordagem mais simples para modelar a incerteza é simplesmente usar dados históricos. O problema que podemos encontrar é que, se ficarmos sem linguiça, podemos não observar a demanda completa por linguiça naquele dia. Se conseguirmos capturar essa demanda perdida, então essa é uma abordagem razoável.

Uma alternativa é construir um modelo matemático. Podemos assumir que nossa demanda é normalmente distribuída com alguma média $\Dbar$ e desvio padrão $\sigmabar^D$. Se assumirmos que ambos são conhecidos, podemos escrever nossa demanda como

\[\Dhat_{t+1} \sim N(\Dbar,(\sigmabar^D)^2),\]

e aproveitar pacotes que podem amostrar da distribuição normal (por exemplo, no Excel isso é chamado de Norm.inv$(Rand(),\Dbar,\sigmabar)$ para gerar uma observação aleatória com média $\Dbar$ e desvio padrão $\sigmabar$.

Usando este modelo, podemos criar um conjunto de demandas $(\Dhat_1, \Dhat_2, \ldots, \Dhat_T)$. Então, podemos repetir isso $N$ vezes para criar $N$ sequências de $T$ demandas, dando-nos a sequência $(\Dhat^n_1, \Dhat^n_2, \ldots, \Dhat^n_T)$ para $n=1, \ldots, N$ que precisamos para estimar o valor da política (usamos isso abaixo no Passo 6).

Passo 5. Projetando políticas – A seguir, precisamos projetar um método para determinar nossos pedidos. Uma estratégia comumente usada para problemas de estoque é conhecida como política “order-up-to” (pedir até o limite), que se parece com

\[\begin{align} X^\pi(S_t\vert \theta) = \begin{cases} \theta^{max} - R_t & \text{if } R_t < \theta^{min}, \\ 0 & \text{otherwise,}\end{cases} \label{eq:introorderupto} \end{align}\]

onde $\theta = (\theta^{min},\theta^{max})$ é um conjunto de parâmetros que precisam ser ajustados. É chamada de “order-up-to” já que fazemos um pedido para elevar o estoque “até” o limite superior $\theta^{max}$.

Passo 6. Avaliando políticas – Há uma variedade de estratégias que poderíamos usar. Na prática, não podemos calcular a expectativa na função objetivo na equação $\eqref{eq:inventoryobjective}$, então tomamos uma série de amostras de demandas. Seja $\Dhat^n_1, \ldots, \Dhat^n_T$ uma amostra de demandas ao longo de $t=1, \ldots, T$, e assumamos que podemos gerar $N$ dessas. Agora podemos estimar nossos lucros esperados a partir da política $X^\pi(S_t)$ fazendo a média sobre as amostras para $n=1, \ldots, N$, o que é calculado usando

\[\Fbar^\pi(\theta\vert S_0) = \frac{1}{N} \sum_{n=1}^N \sum_{t=0}^T C(S_t,X^\pi(S_t\vert \theta),\Dhat^n_{t+1}).\]

Em termos simples, estamos simulando a política $X^\pi(S_t\vert \theta)$ $N$ vezes usando as amostras simuladas (ou observadas a partir do histórico) de demandas $\Dhat^n_1, \ldots, \Dhat^n_T$, e então fazendo a média do desempenho para obter $\Fbar^\pi(\theta\vert S_0)$. Em seguida, enfrentamos o problema de encontrar o melhor valor de $\theta$. Uma estratégia simples seria gerar $K$ valores possíveis $\theta_1, \ldots, \theta_K$, simulando cada um para encontrar $\Fbar^\pi(\theta_k\vert S_0)$ para cada $k$, e então escolher o valor de $\theta_k$ que funciona melhor. Esta não é uma estratégia ótima, mas fornece um ponto de partida simples e prático.

Um problema ligeiramente mais complicado

O problema simples de estoque acima é um cenário clássico para demonstrar um método particular de resolução de problemas de decisão sequencial conhecido como programação dinâmica, que depende de ter uma variável de estado simples que a) seja discreta e b) não tenha muitos valores possíveis. Em nosso problema de estoque ligeiramente mais complicado, vamos ilustrar três tipos diferentes de variáveis de estado que representariam uma complicação seria para um método popular de resolução de problemas de decisão sequencial, mas não tem efeito sobre a política que escolhemos.

Passo 1: Narrativa – Novamente temos nossa pizzaria que precisa pedir linguiça, mas agora vamos permitir que o preço que pagamos pela linguiça varie de dia para dia, onde assumimos que o preço em um dia é independente do preço no dia anterior. Além disso, vamos assumir que, embora a demanda por linguiça de amanhã seja aleatória, receberemos uma previsão da demanda de amanhã que, mesmo não sendo perfeita, é melhor do que não ter previsão nenhuma. Fora isso, tudo sobre nosso problema mais complicado é o mesmo de antes.

Passo 2: Elementos centrais – Estes são:

Passo 3: Modelo matemático – Ainda temos os mesmos cinco elementos, mas agora o problema é um pouco mais rico:

1) Para construir a variável de estado, precisamos listar a informação (especificamente, informação que evolui ao longo do tempo) que é necessária em três partes diferentes do modelo: (1) a função objetivo, (2) a política para tomar decisões (que inclui as restrições), e (3) a função de transição. É claro que ainda não introduzimos nenhuma dessas funções, então você precisa ler adiante e verificar que nossa variável de estado contém todas as informações necessárias para calcular cada uma dessas funções. Pense nisso como um dicionário das informações que vamos precisar.

Começamos com o estado inicial $S_0$ que consiste em parâmetros constantes, e valores iniciais de quantidades e parâmetros que mudam ao longo do tempo. Estes são:

Isso significa que nossa variável de estado inicial é

\[S_0 = (R_0,c_0, p, f^D_{0,1}, \sigmabar^D_0, \sigmabar^f_0).\]

Temos então a informação que evolui ao longo do tempo, que compõe nossa variável de estado dinâmica $S_t$:

Nossa variável de estado dinâmica é então dada por

\[S_t = (R^{inv}_t, c_t, f^D_{t,t+1}, \sigmabar^D_t, \sigmabar^f_t).\]

2) A variável de decisão $x_t$ é quanto pedimos no tempo $t$, que assumimos (por ora) chegar imediatamente. Tomamos nossas decisões com uma política $X^\pi(S_t)$ que projetamos mais adiante.

3) A informação exógena agora consiste em:

\[\Dhat_{t+1} = f^D_{t,t+1} + \varepsilon^D_{t+1}.\]

Nosso conjunto completo de variáveis de informação exógena pode agora ser escrito

\[W_{t+1} = \big(\chat_{t+1}, \varepsilon^f_{t+1}, \varepsilon^D_{t+1}\big).\]

4) Função de transição – Isso especifica como cada uma das variáveis de estado (dinâmicas) $S_t$ evolui ao longo do tempo. Atualizamos nosso estoque usando:

\[\begin{align} R^{inv}_{t+1} &= \max\{0, R^{inv}_t + x_t - \Dhat_{t+1}\}. \label{eq:introcomplexinventorytransition1} \end{align}\]

A demanda é a demanda prevista mais o desvio $\varepsilon^D_{t+1}$ em relação à previsão, o que nos dá a equação:

\[\begin{align} \Dhat_{t+1} &= f^D_{t,t+1} + \varepsilon^D_{t+1}. \label{eq:introcomplexinventorytransition2} \end{align}\]

Assumimos que nossa previsão é atualizada usando

\[\begin{align} f^D_{t+1,t+2} &= f^D_{t,t+1} + \varepsilon^f_{t+1}. \label{eq:introcomplexinventorytransition3} \end{align}\]

A seguir, vamos estimar adaptativamente a variância na demanda e na previsão de demanda:

\[\begin{align} (\sigmabar^D_{t+1})^2 &= (1-\alpha)(\sigmabar^D_t)^2 + \alpha (f^D_{t,t+1} - \Dhat_{t+1})^2, \label{eq:introcomplexinventorytransition4}\\ (\sigmabar^f_{t+1})^2 &= (1-\alpha)(\sigmabar^f_t)^2 + \alpha (f^D_{t,t+1} - f^D_{t+1,t+2})^2, \label{eq:introcomplexinventorytransition5} \end{align}\]

onde $0 < \alpha < 1$ é um fator de suavização.

Por fim, atualizamos o custo $c_{t+1}$ com o “custo observado” $\chat_{t+1}$, o que escrevemos simplesmente como

\[\begin{align} c_{t+1} = \chat_{t+1}.\label{eq:introcomplexinventorytransition6} \end{align}\]

A equação $\eqref{eq:introcomplexinventorytransition6}$ é um exemplo de uma variável de estado que observamos em vez de calcular, como fizemos com o estoque $R^{inv}_t$ em $\eqref{eq:introcomplexinventorytransition1}$. A equação $\eqref{eq:introcomplexinventorytransition1}$ é às vezes chamada de “baseada em modelo”, pois reflete a física de como os estoques são atualizados, enquanto a equação $\eqref{eq:introcomplexinventorytransition6}$ é chamada de “livre de modelo”, pois não fazemos nenhuma tentativa de modelar o processo subjacente que produz a mudança nos custos.

Nossa função de transição $S_{t+1} = S^M(S_t,x_t,W_{t+1})$ consiste nas equações $\eqref{eq:introcomplexinventorytransition1}$–$\eqref{eq:introcomplexinventorytransition6}$.

5) Por fim, nossa função de contribuição de período único seria agora escrita como

\[C(S_t,x_t,\Dhat_{t+1}) = -c_tx_t + p \min\{R_t+x_t, \Dhat_{t+1}\},\]

onde a única diferença em relação ao problema de estoque mais simples é que o custo $c$ agora depende do tempo $c_t$. Nós rompemos com nossa convenção de escrever a contribuição como $C(S_t,x_t)$ e permitimos que ela inclua receitas provenientes das demandas $\Dhat_{t+1}$.

Agora declaramos nossa função objetivo formalmente como

\[\begin{align} \max_{\pi=(f,\theta)} \E \left\{\sum_{t=0}^T C(S_t,X^\pi(S_t\vert \theta),\Dhat_{t+1})\vert S_0\right\}. \label{eq:introcomplexinventoryobjective} \end{align}\]

A otimização $\max_\pi$ significa que estamos buscando entre todas as políticas possíveis representadas por $(f,\theta)$, o que literalmente significa buscar entre todas as diferentes funções que poderíamos usar para tomar uma decisão. Os exemplos neste livro vão demonstrar como vamos realizar essa busca entre funções.

Lembre-se de que anteriormente afirmamos que o índice $\pi$ carrega informação sobre o tipo de função $f\in\Fcal$, e quaisquer parâmetros ajustáveis $\theta\in\Theta^f$. Na prática, a busca entre os tipos de funções $f\in\Fcal$ tende a ser ad hoc (um analista experiente escolhe funções que fazem sentido para um problema), enquanto um algoritmo computacional realiza a busca pelo melhor valor de $\theta\in\Theta^f$.

Passo 4. O modelo de incerteza – Vamos assumir que as mudanças exógenas $\varepsilon^D_{t+1}$ e $\varepsilon^f_{t+1}$ são descritas por distribuições normais com média 0 e variâncias $(\sigmabar^D_t)^2$ e $(\sigmabar^f_t)^2$, o que expressamos escrevendo

\[\varepsilon^D_t \sim N(0, (\sigmabar^D_t)^2), \quad \varepsilon^f_t \sim N(0, (\sigmabar^f_t)^2).\]

Modelos de incerteza podem se tornar bastante complexos, mas isso servirá como ilustração.

Passo 5. Projetando políticas – A seguir, temos que projetar um método para determinar nossos pedidos. Em vez da política de “pedir até um nível” do nosso modelo mais simples, vamos sugerir a ideia de pedir o suficiente para atender à demanda esperada para o dia seguinte, com um ajuste. Poderíamos escrever isso como

\[\begin{align} X^\pi(S_t\vert \theta) = \max\{0,f^D_{t,t+1}-R_t\} + \theta. \label{eq:adjustedforecastpolicy} \end{align}\]

Se tivéssemos uma previsão perfeita, tudo o que teríamos que pedir seria $f^D_{t,t+1}$ (nossa previsão de $\Dhat_{t+1}$) menos o estoque disponível. No entanto, devido à incerteza, vamos adicionar um ajuste $\theta$ para que tenhamos algum amortecimento para evitar rupturas de estoque.

Passo 6. Avaliando políticas – Desta vez, temos que gerar amostras de todas as variáveis aleatórias na sequência $W_1, W_2, \ldots, W_T$. Novamente, podemos gerar $N$ amostras de toda a sequência para que possamos estimar o desempenho de uma política usando

\[\Fbar^\pi(\theta) = \frac{1}{N} \sum_{n=1}^N \sum_{t=0}^T C(S_t,X^\pi(S_t\vert \theta),\Dhat^n_{t+1}).\]

Novamente enfrentamos o problema de encontrar o melhor valor de $\theta$, mas retornaremos a esse desafio mais adiante.

O arcabouço universal de modelagem

Estamos agora prontos para descrever com mais detalhes os elementos do arcabouço universal de modelagem (UMF, do inglês universal modeling framework). Notamos que o UMF pode modelar qualquer problema de decisão sequencial. Essa afirmação bastante ampla se tornará evidente conforme os elementos se desenrolam, já que estamos apenas aplicando notação à declaração geral de um problema de decisão sequencial.

Os cinco elementos do UMF

O UMF consiste nos seguintes elementos:

  1. As variáveis de estado $S_t$.
  2. As variáveis de decisão $x_t$.
  3. O processo de informação exógena $W_t$.
  4. O modelo de transição de estado $S^M(S_t,x_t,W_{t+1})$.
  5. A função objetivo.

Descrevemos estes com mais detalhes a seguir:

Variáveis de estado – O estado $S_t$ do sistema no tempo $t$ tem toda a informação que é necessária e suficiente para modelar nosso sistema a partir do tempo $t$ em diante. Mais especificamente, essa informação consiste em:

Há três tipos de informação em $S_t$:

O estado físico $R_t$ poderia ser a quantidade de dinheiro em uma conta, enquanto $I_t$ poderia ser o estado atual dos mercados de ações e bônus. Se estivermos viajando por uma rede dinâmica, $R_t$ poderia ser nossa localização na rede, enquanto $I_t$ poderia ser o que sabemos sobre os tempos de viagem em cada trecho. Se planejarmos um caminho e depois quisermos penalizar desvios do plano, então o plano seria incluído na variável de estado por meio de $I_t$.

As variáveis de estado tipicamente não são óbvias. Elas emergem durante o processo de modelagem, em vez de serem algo que você pode simplesmente escrever imediatamente. Apenas porque a escrevemos primeiro não significa que você sempre conseguirá listar todos os elementos da variável de estado de imediato. Mas, no final, é aqui que você armazena toda a informação necessária para modelar seu sistema a partir do tempo $t$ em diante.

Variáveis de decisão – Diferentes comunidades usam notações diferentes para decisão, como $a_t$ para uma ação (tipicamente discreta) ou $u_t$ para um controle (tipicamente contínuo) na engenharia. Usamos $x_t$ como nosso padrão, já que é amplamente usado pela comunidade de programação matemática.

As variáveis de decisão vêm em diferentes tipos:

Notamos que há classes de algoritmos determinadas pela natureza da variável de decisão.

Assumimos que as decisões são tomadas com uma política, que poderíamos denotar $X^\pi(S_t)$ se usarmos $x_t$ como nossa decisão. Assumimos que uma decisão $x_t = X^\pi(S_t)$ é viável no tempo $t$, o que significa $x_t \in \Xcal_t$ para algum conjunto (ou região) $\Xcal_t$, que pode depender de $S_t$.

Deixamos “$\pi$” carregar a informação sobre o tipo de função $f\in\Fcal$ (por exemplo, um modelo linear com variáveis explicativas específicas), e quaisquer parâmetros ajustáveis $\theta \in \Theta^f$.

Informação exógena – Deixamos $W_{t+1}$ ser qualquer nova informação que se torna conhecida primeiro no tempo $t+1$ (ou seja, entre $t$ e $t+1$), onde a fonte da informação é externa ao nosso sistema (por isso é “exógena”). Ao modelar variáveis específicas, usamos “chapéus” para indicar informação exógena. Assim, $\Dhat_{t+1}$ poderia ser a demanda que surge entre $t$ e $t+1$, ou poderíamos deixar $\phat_{t+1}$ ser a mudança no preço entre $t$ e $t+1$.

O processo de informação exógena pode ser estacionário ou não estacionário, puramente exógeno ou dependente do estado (e possivelmente da ação) (se decidirmos vender uma grande quantidade de ações, isso poderia pressionar os preços para baixo).

Deixamos $\omega$ representar uma trajetória amostral $W_1, \ldots, W_T$, que representa uma sequência de resultados de cada $W_t$. Frequentemente, criaremos um conjunto $\Omega$ de amostras discretas, onde cada amostra representa uma sequência particular dos resultados do nosso processo $W_t$, que poderíamos escrever como $W_1(\omega), \ldots, W_T(\omega)$. Se tivermos 20 trajetórias amostrais, podemos pensar em $\omega$ como consistindo em um número entre 1 e 20, o que nos permite consultar a trajetória amostral.

Função de transição – Denotamos a função de transição por

\[\begin{align} S_{t+1} = S^M(S_t,x_t,W_{t+1}), \label{eq:transition} \end{align}\]

onde $S^M(\cdot)$ também é conhecida por nomes como modelo de transição de estado, modelo de sistema, modelo de planta, equação de planta, equação de estado e função de transferência.

A equação $\eqref{eq:transition}$ é a forma clássica de uma função de transição que fornece as equações do estado $S_t$ para o estado $S_{t+1}$. A equação $\eqref{eq:inventoryexampleequation}$ foi a única equação de transição para nosso exemplo simples de estoque, enquanto as equações $\eqref{eq:introcomplexinventorytransition1}$–$\eqref{eq:introcomplexinventorytransition6}$ compuseram a função de transição para nosso exemplo mais complicado.

A função de transição pode capturar qualquer um dos seguintes tipos de atualizações:

A função de transição pode ser um conjunto conhecido de equações, ou desconhecida, como quando descrevemos o comportamento humano ou a evolução do CO2 na atmosfera. Quando as equações são desconhecidas, o problema é frequentemente descrito como “livre de modelo” ou “orientado por dados”, o que significa que só podemos observar mudanças em uma variável, em vez de usar um modelo físico. A equação $\eqref{eq:introcomplexinventorytransition6}$, onde “observamos” o custo $c_{t+1} = \chat_{t+1}$, sem nenhuma ideia de como evoluímos a partir de $c_t$, é um exemplo de uma transição livre de modelo.

Funções de transição podem ser lineares, não lineares contínuas ou funções escalonadas. Quando o estado $S_t$ inclui um estado de crença $B_t$, então a função de transição precisa incluir as equações de atualização (ilustramos isso mais adiante no livro).

Dada uma política $X^\pi(S_t)$, um processo exógeno $W_{t+1}$ e uma função de transição, podemos escrever nossa sequência de estados, decisões e informações como

\[(S_0, x_0, W_1, S_1, x_1, W_2, \ldots, x_{T-1}, W_T, S_T).\]

Funções objetivo – Há várias maneiras de escrever funções objetivo. Uma das mais comuns, que usaremos como padrão, maximiza contribuições totais esperadas ao longo de algum horizonte $t=0, \ldots, T$

\[\begin{align} \max_{\pi=(f,\theta)} F^\pi(S_0) = \E \left\{\sum_{t=0}^T C_t(S_t,X^\pi_t(S_t\vert \theta))\vert S_0\right\}, \label{eq:objectivecumulativereward} \end{align}\]

onde

\[\begin{align} S_{t+1} = S^M(S_t,X^\pi_t(S_t),W_{t+1}). \label{eq:basetransition} \end{align}\]

O modelo está completamente especificado quando também temos um modelo do estado inicial $S_0$, e um modelo do processo exógeno $W_1, W_2, \ldots$. Escrevemos toda a informação exógena como

\[\begin{align} (S_0, W_1, W_2, \ldots, W_T). \label{eq:basestochasticmodel} \end{align}\]

As equações $\eqref{eq:objectivecumulativereward}$, $\eqref{eq:basetransition}$ e $\eqref{eq:basestochasticmodel}$ constituem um modelo de um problema de decisão sequencial.

Seguindo adiante, por questão de compactação, vamos usar $\max_\pi$ para representar uma busca entre os tipos de funções $f\in\Fcal$ e parâmetros ajustáveis $\theta\in\Theta^f$.

A equação $\eqref{eq:objectivecumulativereward}$ usa uma esperança $\E$, o que significa tirar uma média sobre todos os resultados possíveis de $W_1, \ldots, W_T$. Isso praticamente nunca é possível de fazer computacionalmente. Em vez disso, deixe $\omega$ representar um único resultado da sequência $W_1, \ldots, W_T$, que poderíamos escrever $W_1(\omega), \ldots, W_T(\omega)$. Assuma que podemos criar $N$ resultados possíveis dessa sequência, e deixe $\omega^n$ representar como indexamos a sequência $n^{th}$.

Se estivermos seguindo uma trajetória amostral $\omega$, então reescreveríamos nossa função de transição em $\eqref{eq:basetransition}$ usando

\[\begin{align} S_{t+1}(\omega) = S^M(S_t(\omega),X^\pi_t(S_t(\omega)),W_{t+1}(\omega)). \label{eq:basetransition2} \end{align}\]

Indexamos cada variável na equação $\eqref{eq:basetransition2}$ por $\omega$ para indicar que estamos seguindo uma única trajetória amostral de valores de $W_t$.

Podemos agora substituir nossa função objetivo baseada em expectativa por uma média que podemos escrever

\[\begin{align} \max_\pi \Fbar^\pi(S_0) = \frac{1}{N}\sum_{n=1}^N \sum_{t=0}^T C_t(S_t(\omega^n),X^\pi_t(S_t(\omega^n))). \label{eq:objectivecumulativerewardaverage} \end{align}\]

Frequentemente, estamos trabalhando apenas com uma única trajetória amostral, possivelmente do histórico. Nesse caso, estamos aproximando o desempenho da política usando essa única trajetória amostral, o que podemos escrever como

\[\begin{align} \max_\pi \Fhat^\pi(\omega\vert S_0) = \sum_{t=0}^T C_t(S_t(\omega),X^\pi_t(S_t(\omega))). \label{eq:objectivecumulativerewardsample} \end{align}\]

Sempre que escrevermos uma função objetivo usando uma expectativa como em $\eqref{eq:objectivecumulativereward}$, lembre-se de que o que realmente faríamos é usar uma média como fazemos em $\eqref{eq:objectivecumulativerewardaverage}$ ou uma amostra como em $\eqref{eq:objectivecumulativerewardsample}$.

A expectativa também pode precisar refletir a incerteza no estado inicial $S_0$, o que pode capturar crenças sobre previsões incertas, ou estimativas incertas sobre o estado da doença em um paciente. Nesse caso, a trajetória amostral $\omega$ precisa incluir amostras dessas distribuições iniciais.

Haverá algumas configurações em que faz mais sentido usar um contador $n$ em vez do tempo. Nesse caso, deixamos $S^n$ ser o estado após $n$ observações (estas podem ser experimentos, chegadas de clientes, iterações de um algoritmo). Usaremos o tempo $t$ como nosso índice padrão.

As variáveis de estado iniciais $S_0$

Precisamos distinguir entre o estado inicial $S_0$ e os estados subsequentes $S_t$ para $t > 0$:

Escrevemos a dependência explícita do desempenho da política em relação ao estado inicial $S_0$, seja usando $F^\pi(S_0)$, $\Fbar^\pi(S_0)$ ou $\Fhat^\pi(\omega\vert S_0)$. Embora isso deva ser óbvio, é frequentemente negligenciado. O estado inicial inclui elementos como:

Notamos que ajuda separar valores iniciais que nunca mudam daqueles que evoluem ao longo do tempo, seja diretamente como resultado de decisões ou de informação exógena. Valores que nunca mudam são armazenados em $S_0$, mas não são representados em $S_t$ para $t > 0$. A razão para isso é o desejo de manter $S_t$ o mais compacto possível.

Suponha que nossa política $X^\pi(S_t\vert \theta)$ tenha parâmetros ajustáveis. Por exemplo, podemos estar gerenciando um sistema de estoque em que usamos a familiar política “pedir até completar” (conhecida na literatura de estoque como uma política $(s,S)$) dada por

\[X^\pi(S_t\vert \theta) = \begin{cases} \theta^{max} - R_t & R_t < \theta^{min},\\ 0 & \text{otherwise.}\end{cases}\]

onde $\theta = (\theta^{min},\theta^{max})$. Por simplicidade, podemos assumir que, quando fazemos um pedido, ele chega imediatamente (uma suposição padrão de livro-texto que nunca é verdadeira na prática), o que nos permite escrever a evolução do nosso estado físico $R_t$ (a quantidade em estoque logo antes de fazermos nosso pedido instantâneo) usando

\[R_{t+1} = \max\{0,R_t + x_t - \Dhat_{t+1}\}\]

onde $x_t = X^\pi(S_t\vert \theta)$ e $\Dhat_{t+1}$ é a demanda pelo nosso produto ao longo do intervalo $(t,t+1)$ (esta é nossa informação exógena $W_{t+1}$). Finalmente, seja $C(S_t,x_t,W_{t+1})$ nosso lucro líquido ao longo do intervalo $(t,t+1)$ (o que não é importante agora).

Agora imagine que temos um processo de demanda histórica $W_1, W_2, \ldots, W_t, \ldots, W_T$ que nos permite executar uma simulação do nosso sistema. Seja $\omega$ representando essa sequência histórica de demandas (ou qualquer informação exógena). Escreveríamos o problema de encontrar o melhor conjunto de parâmetros de pedido $\theta$ usando

\[\begin{align} \max_\theta \Fhat^\pi(\omega,\theta\vert S_0) = \sum_{t=0}^T C_t(S_t(\omega),X^\pi_t(S_t(\omega))), \label{eq:optimizingtheta} \end{align}\]

onde a variável de estado evolui de acordo com

\[S_{t+1}(\omega) = S^M(S_t(\omega), X^\pi_t(S_t(\omega)), W_{t+1}(\omega)).\]

Seja $\theta^\ast $ o valor de $\theta$ que encontramos otimizando $\eqref{eq:optimizingtheta}$. A forma correta de escrever esse valor ótimo é como uma função $\theta^\ast (S_0)$ que depende da informação em $S_0$ (também depende da trajetória amostral $\omega$). Isso ajuda a comunicar a realidade de que, se mudarmos os dados de entrada do nosso problema, representados por $S_0$, isso pode ter um impacto nos melhores valores dos nossos parâmetros de política $\theta$. Na verdade, podemos até ter que mudar nossa escolha de política!

Variações

Existem duas variações importantes do nosso modelo matemático básico:

\[\omega^n = (W^n_1, \ldots, W^n_t, \ldots, W^n_T).\]

Se estamos buscando iterativamente pela melhor política, podemos escrever nossa política para a iteração $n$ usando $X^{\pi,n}(S_t)$, o que então produz

\[S^n_0, x^n_0, W^n_1, \ldots, S^n_t, x^n_t, W^N_{t+1}, \ldots, S^N_T,\]

onde $x^n_t = X^{\pi,n}(S^n_t\vert \theta)$.

\[\begin{align} \max_\pi \Fhat^\pi(S^\theta_0) & = \E_{\What} F(\theta^{\pi,N}, \What) \label{eq:objectivefinalreward1} \\ &\approx \frac{1}{M} \sum_{m=1}^M F(\theta^{\pi,N}, \What^m). \label{eq:objectivefinalreward2} \end{align}\]

Dito de forma simples, avaliamos nossa política de aprendizado para $\theta$, que denotamos $\Theta^\pi(S^{\theta,N})$, simulando por $N$ iterações usando observações de $W^n$ (que pode ser uma simulação inteira ao longo do tempo $t$). Quando obtemos nossa estimativa final do parâmetro $\theta$, que chamamos de $\theta^{\pi,N}$, avaliamos o desempenho desse valor usando uma simulação separada em que fixamos $\theta = \theta^{\pi,N}$ e então criamos um novo conjunto de observações aleatórias que chamamos de $\What^m$ para $m=1, \ldots, M$.

Modelando a incerteza

Para muitos problemas complexos (cadeias de suprimentos, sistemas de energia e saúde pública são apenas alguns exemplos), identificar e modelar as diferentes formas de incerteza pode ser um exercício rico e complexo. Vamos apontar as questões que surgem, mas não vamos tentar uma discussão completa dessa dimensão.

A incerteza é comunicada ao nosso modelo através de dois mecanismos: o estado inicial $S_0$, onde modelaríamos os parâmetros de distribuições de probabilidade descrevendo quantidades e parâmetros que não conhecemos perfeitamente, e o processo de informação exógena $W_1, \ldots, W_T$.

Incerteza no estado inicial

A variável de estado inicial pode conter parâmetros determinísticos ou valores iniciais de quantidades e parâmetros que variam dinamicamente. Se isso é tudo que está no estado inicial, então ele não está capturando nenhuma forma de incerteza.

Existem muitos problemas em que não conhecemos algumas quantidades ou parâmetros, mas podemos representar o que sabemos através dos parâmetros de uma distribuição de probabilidade. Alguns exemplos são:

Estas são várias maneiras pelas quais podemos inicializar um modelo com incerteza em algumas das entradas.

Uma crença probabilística inicial pode vir de julgamento subjetivo, ou de observações ou experimentos anteriores.

O processo de informação exógena

A segunda forma pela qual a incerteza entra em nosso modelo é através do processo de informação exógena. A variável $W_t$ contém informação que não é conhecida até o período de tempo $t$. Isso significa que temos que tomar uma decisão $x_t$ no tempo $t$ antes de sabermos o resultado de $W_{t+1}$.

Abaixo está uma lista de exemplos de $W_{t+1}$ que são revelados após uma decisão $x_t$ ser tomada:

Em cada caso, a informação que observamos após tomarmos a decisão afeta o desempenho da decisão (e qual decisão teria sido a melhor).

A esta altura, o leitor provavelmente já percebeu que $W_{t+1}$ é geralmente uma coleção de diferentes tipos de informação. Por exemplo, imagine que estamos tratando um paciente que está apresentando açúcar elevado no sangue. O médico quer experimentar diferentes estratégias, variando de dieta e exercício ou medicamentos para reduzir o peso, até medicamentos que visam especificamente o açúcar no sangue. As fontes de informação que o médico precisa processar podem incluir:

Cada um desses é um fluxo separado de informação. Podemos modelá-los introduzindo o conjunto $\Ical_t$, o conjunto de processos de informação no tempo $t$ (o conjunto pode mudar à medida que mudamos de estratégias, abrindo novos fluxos de informação). Podemos agora expressar os diferentes tipos de informação usando $W_{t+1,i}$, a realização da informação da fonte $i\in\Ical_t$, de modo que $W_{t+1} = (W_{t+1,i})_{i\in\Ical_t}$.

Continuaremos usando $W_{t+1}$ para representar a nova informação chegando, mas o leitor deve lembrar que, em aplicações reais, isso normalmente vai incluir um conjunto inteiro de fontes de informação, cada uma com seus próprios comportamentos.

Processos dependentes de estado/decisão

Existem muitas aplicações em que a informação $W_{t+1}$ depende do estado atual $S_t$ e/ou da decisão $x_t$. Alguns exemplos incluem:

Por esse motivo, é útil representar a informação exógena como uma função $W_{t+1}(S_t,x_t)$, a função de informação exógena que fornece a informação que chega no intervalo $(t,t+1)$.

Por exemplo, imagine que estamos comprando ou vendendo ações em grandes quantidades, o que pode influenciar o preço futuro. A dinâmica poderia ser escrita como

\[\begin{align} p_{t+1} = \theta^p_0 p_t + \theta^p_1 p_{t-1} + \theta^p_2 p_{t-2} + W_{t+1}(S_t,x_t). \label{eq:statedependentprice} \end{align}\]

O estado desse processo de preços seria escrito como

\[S_t = (p_t, p_{t-1}, p_{t-2}).\]

A variação aleatória no preço, dada por $W_{t+1}(S_t,x_t)$, reflete nossa crença de que a mudança no preço pode depender do preço atual (se o preço estiver alto, as mudanças futuras provavelmente serão negativas), bem como da quantidade que estamos comprando ($x_t > 0$) ou vendendo ($x_t < 0$).

É claro que gostaríamos de usar dados históricos para tentar separar qualquer influência estrutural de $S_t$ e $x_t$ sobre os preços futuros do ruído verdadeiramente exógeno. Assim, poderíamos propor um modelo

\[W_{t+1}(S_t,x_t) = \theta^x x_t + \varepsilon_{t+1},\]

em que poderíamos supor que

\[\varepsilon_{t+1} \sim N(0, \vert x_t\vert \sigma^2_t),\]

Esse modelo assume que $\varepsilon_{t+1}$ tem média 0 e variância que cresce com o valor absoluto de $x_t$. A informação $W_{t+1}(S_t,x_t)$ teria então média $\theta^x x_t$, que é positiva se estivermos comprando ações ($x_t > 0$) e negativa se estivermos vendendo no mercado ($x_t < 0$).

Este livro continuará a usar $W_{t+1}$ como notação padrão, mas o leitor deve estar atento ao fato de que ela pode depender do estado atual e/ou da decisão tomada dado o estado.

Estilos de incerteza

Identificar os tipos de informação é o primeiro passo para entender a incerteza. O próximo passo é caracterizar os diferentes estilos de incerteza. Um resumo de algumas das formas mais importantes pelas quais os processos de informação podem se comportar inclui:

Esses comportamentos podem impactar a escolha da política para a tomada de decisões, tema que trataremos a seguir.

A incerteza é amplamente reconhecida como um problema para o qual empresas, organizações e até governos precisam se planejar. Frequentemente ignorado é o fato de que a razão para modelar a incerteza é entender como ela afeta as decisões. A incerteza está sempre associada a processos de informação que chegam no futuro, portanto precisamos pensar em como uma decisão tomada agora é afetada por essa informação futura.

Projetando políticas

Uma política é um método para tomar uma decisão… qualquer método.

Políticas são funções que usam a informação contida na variável de estado para tomar uma decisão. Isso parece ser um problema bem definido; afinal, a comunidade de aprendizado de máquina é construída inteiramente em torno do desafio de encontrar funções que se ajustem a um conjunto de dados de treinamento. Entretanto, projetar políticas é muito mais rico, como evidenciado pela diversidade de comunidades que trabalham nessa área.

A Figura 1.2 mostra as capas de livros representando aproximadamente 15 campos distintos que lidam com decisões sequenciais sob incerteza. Eles usam oito sistemas notacionais diferentes e adotam abordagens fundamentalmente distintas em relação à modelagem. Alguns confundem políticas (que envolvem problemas de otimização embutidos) com funções objetivo.

Uma amostra dos principais livros representando diferentes campos em otimização estocástica.
Figura 1.2. Uma amostra dos principais livros representando diferentes campos em otimização estocástica.

Métricas de desempenho de políticas

A otimização determinística é caracterizada por uma função objetivo que determina se uma decisão é melhor do que outra. Com problemas de decisão sequencial, normalmente teremos uma função objetivo que avalia o desempenho de uma política, como fizemos com as equações $\eqref{eq:objectivecumulativereward}$, $\eqref{eq:objectivecumulativerewardaverage}$ e $\eqref{eq:objectivecumulativerewardsample}$.

Na prática, entretanto, as políticas são escolhidas com base em vários critérios concorrentes:

As comunidades de otimização matemática ilustradas na Figura 1.2 podem falar sobre políticas ótimas, o que implica otimizar a esperança na equação $\eqref{eq:objectivecumulativereward}$. No entanto, é importante prestar atenção a todas essas características.

As quatro classes de políticas

Os livros na Figura 1.2 apresentam uma variedade de formas de tomar decisões ao longo do tempo. Acontece que todas elas podem ser divididas em classes bem definidas de políticas. Existem duas estratégias fundamentais para criar políticas, cada uma das quais pode ser subdividida em duas classes, criando quatro classes de políticas:

Busca de política – É quando você pesquisa entre métodos (funções) para tomar decisões, simulando seu desempenho (como fazemos na equação $\eqref{eq:objectivecumulativereward}$), para encontrar o método que funciona melhor, em média, ao longo do tempo. Isso pode envolver a busca entre diferentes classes de métodos, bem como quaisquer parâmetros ajustáveis para um determinado método. Essa ideia abre duas classes de políticas:

Políticas de horizonte de previsão – Podemos construir políticas eficazes otimizando a contribuição (ou custo) de uma decisão, mais uma aproximação das contribuições (ou custos) futuras resultantes da decisão tomada agora. Novamente, podemos dividi-las em mais duas classes de políticas:

\[\begin{align} V_t(S_t) = \max_{x_t} \big(C(S_t,x_t) + V_{t+1}(S_{t+1})\big). \label{eq:bellmangraph} \end{align}\]

A equação $\eqref{eq:bellmangraph}$ é conhecida como a equação de Bellman. Quando é usada para encontrar o melhor caminho em uma rede determinística como a que representamos na Figura 1.3, é bastante fácil visualizá-la.

Grafo determinístico simples para percorrer do nó 1 ao nó 11.
Figura 1.3. Grafo determinístico simples para percorrer do nó 1 ao nó 11.

Há muitos problemas em que a transição do estado $S_t$ para $S_{t+1}$ envolve informação aleatória que não é conhecida no instante $t$. Vimos um exemplo simples de aleatoriedade em nosso primeiro problema de estoque, e um exemplo mais complicado em nosso segundo problema de estoque.

Para esses problemas mais gerais, se estamos em um estado $S_t$, tomamos uma decisão $x_t$ e então observamos uma nova informação $W_{t+1}$ (que não é conhecida no instante $t$), isso nos levará a um novo estado $S_{t+1}$ de acordo com nossa função de transição

\[S_{t+1} = S^M(S_t,x_t,W_{t+1}).\]

Isso significa que, no instante $t$, quando precisamos escolher $x_t$, $W_{t+1}$ é uma variável aleatória, o que significa que $S_{t+1}$ também é uma variável aleatória. Nesse caso, precisamos inserir uma esperança na equação de Bellman e escrever a equação $\eqref{eq:bellmangraph}$ como

\[\begin{align} V_t(S_t) = \max_{x_t} \big(C(S_t,x_t) + \E_{W_{t+1}} \left\{V_{t+1}(S_{t+1})\vert S_t,x_t\right\}\big). \label{eq:bellmanstochastic} \end{align}\]

Aqui inserimos a esperança $\E_{W_{t+1}}\lbrace \cdot\rbrace $, que literalmente significa fazer a média sobre todos os resultados aleatórios de $W_{t+1}$.

A versão estocástica da equação de Bellman em $\eqref{eq:bellmanstochastic}$ é extremamente geral. O estado $S_t$ não significa apenas um nó em um grafo; ele captura toda (e qualquer) informação relevante para o problema. A dificuldade é que não podemos mais calcular a função de valor $V_t(S_t)$, o que, por sua vez, significa que não teremos acesso a $V_{t+1}(S_{t+1})$, que supomos conhecer nas equações $\eqref{eq:bellmangraph}$ e $\eqref{eq:bellmanstochastic}$.

A estratégia que a comunidade de pesquisa tem usado ao tentar aplicar a equação de Bellman é recorrer ao campo do aprendizado de máquina para estimar uma aproximação estatística que vamos chamar de $\Vbar_t(S_t)$. Supondo que possamos chegar a uma aproximação razoável $\Vbar_{t+1}(S_{t+1})$, escreveríamos nossa política (nosso método para tomar uma decisão) usando

\[\begin{align} X^\pi(S_t) = \argmax_{x_t\in\Xcal_t} \big(C(S_t,x_t) + \E_{W_{t+1}} \{\Vbar_{t+1}(S_{t+1})\vert S_t,x_t\}\big). \label{eq:introvbarpolicy} \end{align}\]

A notação “$\argmax_x f(x)$” significa o valor de $x$ que maximiza a função $f(x)$. O índice $\pi$ carrega a informação que especifica a estrutura da função $f$, e quaisquer parâmetros ajustáveis $\theta$ que precisaríamos na aproximação $\Vbar_{t+1}(S_{t+1})$.

Essa classe de política se encaixa em categorias como programação dinâmica aproximada e, mais frequentemente, aprendizado por reforço. Embora seja uma ideia poderosa, não é fácil de aplicar e depende de nossa capacidade de criar uma aproximação precisa $\Vbar_{t+1}(S_{t+1})$.

Existe uma literatura muito rica sobre métodos para aproximar funções de valor, mas isso não é uma panaceia. Este livro ilustrará essa ideia em alguns pontos, mas os leitores devem ficar atentos ao fato de que essa classe de políticas é bastante difícil de usar.

Ilustramos nosso arcabouço de modelagem usando dois problemas de estoque, e sugerimos duas políticas simples (formas de PFAs) com as equações $\eqref{eq:introorderupto}$ e $\eqref{eq:adjustedforecastpolicy}$, mas fizemos isso apenas para ter um exemplo concreto de política. Embora as PFAs sejam amplamente usadas na tomada de decisão do dia a dia, esses são exemplos especializados.

Em contraste, vamos afirmar que as quatro classes de políticas que acabamos de descrever (PFAs, CFAs, VFAs e DLAs) são universais, no sentido de que cobrem qualquer método que possamos usar para resolver qualquer problema de decisão sequencial. Para deixar claro, essas são metaclasses. Isto é, se pensarmos que um problema se presta a uma classe específica, ainda não terminamos, pois ainda precisamos projetar a política específica dentro dessa classe. Da mesma forma, sentimos que essas quatro classes fornecem um roteiro para orientar o processo de projeto de políticas.

Testando políticas

Para testar o valor de uma política, vamos usar a equação $\eqref{eq:objectivecumulativerewardsample}$, que simula uma política sobre uma única trajetória amostral do processo de informação $W_t$. A parte mais difícil ao simular uma política é, tipicamente, criar o processo de informação exógena.

Seja $\omega$ uma trajetória amostral, onde $W_1(\omega), \ldots, W_T(\omega)$ representa uma trajetória amostral específica. A Tabela 1.3 ilustra 10 trajetórias amostrais de preços que são indexadas de $\omega^1$ a $\omega^{10}$. Se escolhermos $\omega^6$, então $W_7(\omega^6) = 44.16$.

$t=1$$t=2$$t=3$$t=4$$t=5$$t=6$$t=7$$t=8$
$\omega^n$$p_1$$p_2$$p_3$$p_4$$p_5$$p_6$$p_7$$p_8$
$\omega^1$45.0045.5347.0747.5647.8048.4346.9346.57
$\omega^2$45.0043.1542.5140.5141.5041.0039.1641.11
$\omega^3$45.0045.1645.3744.3045.3547.2347.3546.30
$\omega^4$45.0045.6746.1846.2245.6944.2443.7743.57
$\omega^5$45.0046.3246.1446.5344.8445.1744.9246.09
$\omega^6$45.0044.7043.0543.7742.6144.3244.1645.29
$\omega^7$45.0043.6743.1444.7843.1242.3641.6040.83
$\omega^8$45.0044.9844.5345.4246.4347.6747.6849.03
$\omega^9$45.0044.5745.9947.3845.5146.2746.0245.09
$\omega^{10}$45.0045.0146.7346.0847.4049.1449.0348.74

Tabela 1.3. Ilustração de um conjunto de trajetórias amostrais de preços, todas começando em $45.00.

A questão é: como criamos uma amostra de observações como as retratadas na Tabela 1.3? Existem três estratégias típicas:

Se $W_{t+1}$ depende do estado $S_t$ e/ou da decisão $x_t$, então temos que conceber uma forma de refletir essa dependência. Criar um modelo matemático torna possível realizar muitas simulações no computador, mas criar amostras do processo de informação também requer recriar correlações ao longo do tempo, assim como no espaço. Encaminhamos o leitor para RLSO, Capítulo 10, para uma discussão mais detalhada sobre modelagem de incerteza.

Próximos passos

Os próximos cinco capítulos do livro vão aplicar nosso arcabouço de modelagem a cinco problemas diferentes:

Cada um desses capítulos seguirá o mesmo roteiro que usamos acima para descrever os dois problemas de estoque. Esse roteiro consiste em:

Em seguida, retornamos às quatro classes de políticas no Capítulo 7 e discutimos nosso arcabouço geral de modelagem, usando os problemas dos Capítulos 2–6 para ilustrar diferentes ideias de modelagem.

Após essa discussão, retornamos ao nosso padrão de capítulos de ensino por exemplo, mas usando problemas mais complexos. Nossos capítulos restantes cobrem os seguintes problemas:

O que aprendemos?

Exercícios

Questões de revisão

  1. Quais são os cinco elementos do modelo matemático de um problema de decisão sequencial?
  2. Qual é a diferença entre as variáveis no estado inicial $S_0$ e aquelas no estado dinâmico $S_t$ para $t > 0$?
  3. Qual é a diferença entre uma decisão e a informação exógena?
  4. Quais são as duas grandes categorias de políticas, e como elas são diferentes?
  5. Compare as variáveis de estado do problema de estoque simples com as do problema de estoque mais complicado.

Questões de resolução de problemas

  1. Compare as políticas dos dois problemas de estoque em termos de como elas tratariam um comportamento dependente do tempo. Por exemplo, nossa pizzaria pode ter demandas muito mais altas nos fins de semana do que nos dias de semana. Comente sobre o valor de tornar o parâmetro ajustável $\theta$ dependente do tempo (ou do dia da semana) em termos de como isso poderia melhorar a solução.
  2. Contraste como você abordaria o ajuste do parâmetro $\theta$ para os problemas de estoque:
    1. Em um simulador.
    2. No campo.
    Discuta as vantagens e desvantagens de cada abordagem.