Programing with Uncertainty

When

1 – 2:30 p.m., Today

Where

Abstract: Dealing with uncertainty is hard. Dealing with uncertainty coupled with real-world details and edge-cases is even harder. What conceptual tools do we have to model and optimize stochastic systems? How can we translate those designs into our code?
I saw this dynamic first-hand working on supply chain optimization at Target. We needed our models and optimization to handle random demand, while operating under constraints imposed by business rules and operational limitations.
Category theory gave us a language to express the concepts we needed to handle this complexity in a way that we could reify as types in our code. We modeled probability distributions as monads which gave us a lightweight way to do probabilistic programming. We then framed our optimization and simulation problems with a Markov decision process (MDP) framework built on top of the probability monad. This framework abstracted over the stochastic control aspects of our system, while also providing structure for the domain-specific types and logic we needed to integrate our system with Target's day-to-day operations.

Zoom link: https://www.math.arizona.edu/~klin/rtg-zoom