Commit 3b32d6d8 authored by Asbjørn Nilsen Riseth's avatar Asbjørn Nilsen Riseth
Browse files

Add portrait example

parent 510ee184
.4992331427562247 -28128610551902963e-33 -.4249797011143752
.5063650447955994 .10848020502169069 -.22880992597988917
.513496946834974 .2051558484815738 -.0775871224816668
.5206288488743487 .2912149768176659 .040835703115504905
.5277607509137234 .36771979099258584 .13485461662239762
.534892652953098 .4356210354292664 .21039406227372826
.5420245549924726 .49577060527931405 .2717139521200004
.5491564570318472 .5489326102336508 .32193060726826256
.5562883590712219 .5957930988570276 .36336013450877147
.5634202611105966 .6369686184589088 .3977491796975678
.5705521631499711 .6730137609438013 .42643278910010124
.5776840651893459 .7044278242025407 .45044420223309556
.5848159672287204 .731660700823378 .47059239082350107
.5919478692680951 .7551180907292462 .48751760329424876
.5990797713074697 .7751661213764398 .5017316836500557
.6062116733468443 .7921354480408449 .5136477015903544
.6133435753862191 .8063248971864181 .5236019797769268
.6204754774255936 .8180047077180049 .5318706464517905
.6276073794649683 .8274194178668408 .5386822002294206
.6347392815043429 .8347904393738546 .5442271385182053
.6418711835437175 .8403183553805139 .5486654017021462
.6490030855830922 .8441849738907027 .5521321769361612
.6561349876224668 .8465551647264705 .554742458830334
.6632668896618416 .8475785044811696 .5565946600307555
.6703987917012162 .8473907510017057 .5577734897782409
.6775306937405907 .8461151663433443 .5583522641642247
.6846625957799655 .8438637048870916 .5583947720002295
.69179449781934 .8407380813394002 .5579567908213542
.6989263998587147 .8368307316150458 .5570873256534745
.7060583018980894 .8322256780969657 .5558296267457526
.713190203937464 .8269993094477253 .554222030047305
.7203221059768387 .8212210839894765 .5522986547469774
.7274540080162132 .8149541646510802 .5500899849422113
.7345859100555879 .808255992587491 .5476233569053094
.7417178120949625 .8011788057872327 .5449233690697223
.7488497141343372 .7937701082894724 .5420122284633802
.7559816161737118 .7860730950189301 .5389100446497683
.7631135182130864 .7781270367046188 .5356350801310021
.7702454202524611 .7699676288691106 .5322039644947101
.7773773222918359 .7616273084501652 .5286318782525808
.7845092243312104 .753135541240562 .5249327112488276
.791641126370585 .744519082997325 .5211191996550364
.7987730284099597 .7358022167752857 .5172030448717684
.8059049304493343 .7270069687758284 .5131950170908496
.8130368324887088 .7181533047667329 .509105045810952
.8201687345280836 .7092593089199127 .5049422992214438
.8273006365674583 .700341346727315 .5007152540587048
.8344325386068329 .6914142134884035 .49643175728364314
.8415644406462075 .682491269714378 .4920990807169567
.8486963426855821 .6735845646605875 .4877239695929036
.6187833918061408 1.090854163930982
.6250975080490606 1.101221416062654
.6314116242919805 1.1106006279805403
.6377257405349003 1.1190245194169175
.64403985677782 1.126526250840242
.6503539730207398 1.1331396048422475
.6566680892636597 1.1388990795981084
.6629822055065794 1.1438399015257823
.6692963217494993 1.147997967375626
.675610437992419 1.1514097280923714
.6819245542353389 1.1541120278832557
.6882386704782586 1.1561419120714804
.6945527867211785 1.157536416658314
.7008669029640983 1.158332351247013
.707181019207018 1.1585660852991877
.7134951354499378 1.158273345791975
.7198092516928577 1.1574890323904725
.7261233679357776 1.1562470543776513
.7324374841786973 1.154580191889292
.7387516004216171 1.1525199825438206
.7450657166645369 1.150096633364454
.7513798329074567 1.147338956966566
.7576939491503765 1.1442743303112748
.7640080653932964 1.140928673879498
.7703221816362162 1.137326448865307
.7766362978791359 1.1334906698872553
.7829504141220557 1.1294429307365719
.7892645303649755 1.1252034407896123
.7955786466078953 1.1207910698810974
.8018927628508151 1.1162233996412796
.8082068790937348 1.1115167795258354
.8145209953366547 1.106686385997937
.8208351115795746 1.1017462835471616
.8271492278224943 1.0967094864426192
.8334633440654141 1.0915880203133592
.8397774603083339 1.086392982825224
.8460915765512538 1.0811346028789073
.8524056927941734 1.0758222978892187
.8587198090370933 1.0704647288212341
.8650339252800132 1.06506985275672
.8713480415229329 1.05964497284538
.8776621577658528 1.0541967855620986
.8839762740087727 1.0487314252450934
.8902903902516924 1.0432545059325855
.8966045064946123 1.0377711605487079
.902918622737532 1.0322860775146716
.9092327389804518 1.0268035348796005
.9155468552233715 1.0213274320785921
.9218609714662914 1.0158613194339305
.9281750877092112 1.0104084255204127
.09725857996956377 .6590558821252489
.09609151082264347 .6590239380992253
.09496970220468157 .6589312250541086
.09388996876103126 .6587820198041189
.09284949071470333 .6585801083209596
.09184575578016631 .6583288637231326
.09087651400930181 .6580313069019861
.0899397408240042 .6576901561559703
.08903360649119692 .6573078681749858
.08815645071896051 .6568866721488764
.08730676136129506 .6564285983594649
.08648315644745526 .6559355023088543
.0856843689227338 .6554090852072043
.08490923361689279 .6548509114695564
.08415667605527474 .6542624237385845
.08342570280386298 .6536449558477793
.08271539309885995 .652999744059883
.08202489155713553 .6523279368521994
.08138968271617213 .6515818909337902
.08101166605079907 .6504905261249069
.08076340273198332 .6492249480641736
.08058180726740716 .6478698584519532
.08044204397647989 .6464586029009276
.08033135622807865 .6450083090912644
.08024219610738954 .6435291112264708
.08016967982171523 .6420275665276222
.08011044529538093 .6405081890834033
.08006207020293966 .6389742312274753
.08002274747548091 .637428119219698
.0799910964395231 .6358717068204365
This diff is collapsed.
-.19485970181633205 0
-.17610096054086466 .014993512882192972
-.15804984522779697 .029687155506742835
-.14067556026810435 .044089834911004155
-.12394889737715195 .05821010883675104
-.1078421402892689 .072056202686269
-.09232897599351048 .08563602550021998
-.07738441200569335 .09895718502247619
-.0629846992149992 .11202700191223736
-.049107259882670035 .12485252315919904
-.03573062040583412 .1374405347534391
-.022834348491760824 .14979757365787694
-.010398994417154458 .1619299391276885
.0015939639262621454 .17384370341786393
.013162172474370907 .1855447219171431
.0243224491739019 .19703864274386906
.03509082913854969 .20833091583679209
.0454826069918816 .2194268015715779
.0555123765941346 .23033137893162592
.06519406833470029 .2410495532598782
.07454098415805471 .2515860636164653
.08356583047805907 .26194548976537857
.09228074912380799 .2721322588118098
.10069734644941429 .2821506515103662
.10882672073024165 .2920048082630451
.1166794879590159 .30169873482462295
.124265806146917 .31123630773198196
.13159539822707406 .32062127947282315
.13867757365086147 .3298572834082545
.14552124876087283 .3389478384628126
.15213496601850335 .3478963535946433
.15852691215853593 .3567061320577636
.16470493533806127 .36538037546760505
.1706765613423622 .37392218768034957
.1764490089060675 .38233457849593133
.1820292042038758 .3906204671939857
.18742379456145003 .3987826859114718
.1926391614336591 .4068239828701805
.19768143269417598 .4147470254618495
.20255649427750663 .4225544031981654
.20727000121180214 .43024863053250595
.211827388078288 .43783214955987737
.21623387893079793 .44530733260114364
.22049449670673923 .4526764846772853
.22461407215878396 .4599418458791156
.2285972523347237 .4671055936375632
.23244850863116315 .4741698448993661
.23617214444512927 .4811366582127299
.2397723024461382 .4880080357272807
.2432529714898849 .49478592511238184
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% NB: must be compiled with pdflatex -shell-escape poster_portrait %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a0paper,portrait,fontscale=0.35]{baposter}
\usepackage{amsfonts,amsmath,amssymb}
\usepackage{graphicx,subcaption}
\usepackage{relsize}
\usepackage{natbib}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\pgfmathdeclarefunction{gauss}{2}{%
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\usepackage{microtype}
\usepackage{environ}
\makeatletter
\newsavebox{\measure@tikzpicture}
\NewEnviron{scaletikzpicturetowidth}[1]{%
\def\tikz@width{#1}%
\def\tikzscale{1}\begin{lrbox}{\measure@tikzpicture}%
\BODY
\end{lrbox}%
\pgfmathparse{#1/\wd\measure@tikzpicture}%
\edef\tikzscale{\pgfmathresult}%
\BODY
}
\makeatother
%%% Define a caption font
\newcommand{\mycaption}[1]{
{
\smaller
\emph{#1}
}
}
%%% Color Definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{oxford_blue}{RGB}{14,31,71}
\definecolor{oxford_border}{RGB}{14,31,71}
\begin{document}
\typeout{Poster rendering started}
\begin{poster}
{
% Show grid to help with alignment
grid=false,
columns=4,
% Column spacing
colspacing=0.7em,
% Color style
% headerColorOne=cyan!20!white!90!black,
% borderColor=cyan!30!white!90!black,
headerColorOne=oxford_blue,
borderColor=oxford_border,
headerFontColor=white,
% Format of textbox
textborder=faded,
% Format of text header
headerborder=open,
headershape=roundedright,
headershade=plain,
background=none,
bgColorOne=cyan!10!white,
headerheight=0.08\textheight
}
% Eye Catcher: Oxford logo and personal picture
{
\makebox[0.23\textwidth]{
\begin{tabular}{cc}
\includegraphics[height=0.05\textheight]{./img/oxlogo}
&
\includegraphics[height=0.05\textheight]{./img/profile}
\end{tabular}
\hfill
}
}
%%% Title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{\textsc{Pricing\,under\,uncertainty}}
%%% Authors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{
\vspace{0.5em}
Asbj{\o}rn Nilsen Riseth ---
% \texttt{riseth@maths.ox.ac.uk}\\[0.1em]
\texttt{https://people.maths.ox.ac.uk/riseth}\\[0.1em]
{ Mathematical Institute, University of Oxford}
}
%%% InFoMM Logo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{
\makebox[0.23\textwidth]{
\includegraphics[height=0.05\textheight]{./img/InFoMM}
}
}
\headerbox{How do you decide the price of your products?}{name=introduction,span = 2,column=0,row=0}{
Retail managers must decide the prices of hundreds of products
to maximise revenue or profit.
Such decisions must be made with only partial knowledge of future
outcomes, which we will model as random variables.
The industry is interested in understanding how to formulate
optimisation problems with uncertainty, in particular the topics:
\begin{itemize}
\item Uncertainty in the objective --- how do we define optimality?
\item Uncertainty in the constraint --- can we make sense of a
``random constraint''?
\item Sequential decision problems --- how do we take into account
the full value of each action?
\end{itemize}
We model the product demand per unit time $V(x)$ as a function of product
price $x$. A discussion of the modelling aspect can be found in
\citep{ryzin2012}. Define
\begin{align}
\mbox{Revenue}(x) &= xV(x),\\
\mbox{Profit}(x,c) &= (x-c)V(x),& \text{given \emph{marginal cost} c}
\end{align}
One particular problem of industry interest is to
understand how to handle the uncertainty of marginal costs in
optimisation formulations.
\vspace{1em}
\begin{minipage}[c]{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{./img/multiple_profit}\\
\mycaption{Expected profit of two products}
\end{minipage}%
\begin{minipage}[c]{0.5\textwidth}
\centering
\begin{scaletikzpicturetowidth}{0.9\textwidth}
\begin{tikzpicture}[inner sep=0.333em, outer
sep=0.5\pgflinewidth, scale=\tikzscale]
\begin{axis}[%[width=0.9\textwidth,
grid=major,
xmin=0.5,
xmax=4,
ymin=0,
% title={Single product: Scale factor 1.0, elasticity -2.2},
xlabel=Price,
ylabel=Profit,
domain=0.5:4,
samples=100,
% cycle list name=exotic,
cycle list={
{blue},
{green},
{red},
{cyan},
{purple}
}
]
\pgfplotsinvokeforeach {0.50,0.75,1.00,1.25,1.50}
{
\addplot+[mark=none] {(x-#1)*x^(-2.2)};
\addlegendentry {$c=#1$};
}
\end{axis}
\end{tikzpicture}
\end{scaletikzpicturetowidth}
\\
\mycaption{\quad Profit depends on uncertain cost}
\end{minipage}
}
\headerbox{Maximise uncertain profit}
{name=randomobjective, column=0, below=introduction, above=bottom, span=2}
{
Take two prices which give rise
to two different probabilistic forecasts of profit. How should a manager decide between
the two prices? With the distributional information of the two competing choices,
they can compare the possible outcomes.
Our goal is to model the result of such a comparison.
\vspace{0.5em}
\textbf{Expected utility theory:}
The degree of preference of an outcome is modelled by a utility
function $u:\mathbb R\to\mathbb R$. The best choice is one that
has the highest average utility:
\begin{align}
x_1\preceq x_2 \Leftrightarrow
\mathbb E_C[u(\mbox{Profit}(x_1,c))] \leq
\mathbb E_C[u(\mbox{Profit}(x_2,c)].
\end{align}
This approach weighs all outcomes according to their degree of
preference and how probable they are. Risk-aversion requires
that $u$ is concave and increasing.
\vspace{0.5em}
\begin{minipage}{0.5\textwidth}
\centering
\begin{scaletikzpicturetowidth}{0.9\textwidth}
\begin{tikzpicture}[inner sep=0.333em, outer
sep=0.5\pgflinewidth, scale=\tikzscale]
\begin{axis}[
ymajorgrids,
title={Risk-averse utility function},
xlabel=Wealth,
ylabel=Utility,
domain=-1.5:1.5,
samples=150,
]
\addplot+[mark=none] {x}
node[pos=0.8, pin={[black]180:Risk neutral}]{};
\addplot+[mark=none] {1-exp(-x)}
node[pos=0.3, pin={[black]-45:$u(x)=1-\mathrm{e}^{-x}$}] {};
\end{axis}
\end{tikzpicture}
\end{scaletikzpicturetowidth}
% \\
% \mycaption{\quad Risk-averse utility}
\end{minipage}%
\begin{minipage}{0.5\textwidth}
\centering
\begin{scaletikzpicturetowidth}{0.9\textwidth}
\begin{tikzpicture}[inner sep=0.333em, outer
sep=0.5\pgflinewidth, scale=\tikzscale]
\begin{axis}[
ymin=0,
title={Risk-aversion increases the optimal price},
xlabel=Price,
ylabel={Expected utility of profit},
]
\addplot+[mark=none] table [y index = {1}] {./img/cara_comparison.dat}
node [pos=0.8, pin={[black]-90:Risk neutral}] {};
\addplot+[mark=none] table [y index = {2}] {./img/cara_comparison.dat}
node [pos=0.9, pin={[black]-90:$u(x)=1-\mathrm{e}^{-x}$}] {};
\end{axis}
\end{tikzpicture}
\end{scaletikzpicturetowidth}
% \\
% \mycaption{\quad Risk-aversion increases the optimal price}
\end{minipage}%
\vspace{1em}
\textbf{Mean-deviation approach:}
Maximising average outcomes give the highest returns over the long term.
To stabilise the returns over the medium term, we can try to
minimise the uncertainty modelled by a deviation measure $\mathbb
D$:
\begin{align}
\mathbb E[\mbox{Profit}]
\quad
\text{versus}
\quad
\mathbb D[\mbox{Profit}].
\end{align}
The measure can for example be the standard deviation, higher-order
moments or the lower semi-deviation.
The \emph{efficient frontier} shows what optimal trade-offs
that can be made between such competing objectives.
\vspace{0.5em}
\begin{minipage}{0.5\textwidth}
\centering
\begin{scaletikzpicturetowidth}{0.9\textwidth}
\begin{tikzpicture}[inner sep=0.333em, outer
sep=0.5\pgflinewidth, scale=\tikzscale]
\begin{axis}[
xlabel=Standard deviation,
ylabel=Expected profit,
title = {Efficient frontier},
scaled ticks = false,
xticklabel style={
/pgf/number format/precision=3,
/pgf/number format/fixed,
% /pgf/number format/fixed zerofill,
}]
\addplot[blue] table
{./img/pareto_std_prof_2_nbi.dat};
\draw [red, fill=red] (axis
cs:.0799910964395231,.6358717068204365)
circle (0.5mm) node[right, outer sep=1.5mm, text=black] {1};
\draw [red, fill=red]
(axis cs:.0856843689227338,.6554090852072043)
circle (0.5mm) node[below, outer sep=1.5mm, text=black] {2};
\draw [red, fill=red]
(axis cs:.09725857996956377,.6590558821252489)
circle (0.5mm) node[below, outer sep=1.5mm, text=black] {3};
\end{axis}
\end{tikzpicture}
\end{scaletikzpicturetowidth}
\end{minipage}%
\begin{minipage}{0.5\textwidth}
\centering
\begin{scaletikzpicturetowidth}{0.9\textwidth}
\begin{tikzpicture}[inner sep=0.333em, outer
sep=0.5\pgflinewidth, scale=\tikzscale]
\begin{axis}[
% grid=major,
xlabel=Profit,
ylabel=Density,
title={Gaussian approximations from frontier},
xmin=0.3,
xmax=1,
domain=0.3:1,
samples=150,
]
\addplot+[mark=none]
{gauss(.6358717068204365,.0799910964395231)};
\addplot+[mark=none] {gauss(.6554090852072043,.0856843689227338)};
\addplot+[mark=none]
{gauss(.6590558821252489,.09725857996956377)};
\legend {1,2,3};
\end{axis}
\end{tikzpicture}
\end{scaletikzpicturetowidth}
\end{minipage}
\vspace{0.5em}
We have created a software to automate the generation of the
efficient frontier, available at
\texttt{https://github.com/anriseth/MultiJuMP.jl}.
}
\headerbox{Further work}
{name=furtherwork, column=2, row=0, span=2}
{
\textbf{Sequential decision problem:}
How should we price a product to get rid of stock before a given
time, e.g.~at an end-of-season sale?
The goal will be to maximise revenue and minimise cost from unsold
stock.
A natural approach is to set a price for a time period with
sales forecast $V_t$, then see
how many products $\hat{V}_t$ are sold, and update the price accordingly.
\begin{center}
\begin{scaletikzpicturetowidth}{0.9\textwidth}
\tikzstyle{init} = [pin edge={to-,thin,black}]
\tikzstyle{state} = [draw, rectangle, rounded corners, fill=blue!20!white!90!black]
\tikzstyle{value} = [draw, circle, fill=cyan!30!white!90!black]
\tikzstyle{optim} = [draw, rectangle, fill=red!20]
\begin{tikzpicture}[inner sep=0.333em, outer
sep=0.5\pgflinewidth, scale=\tikzscale,
node distance=2.5cm,auto,>=latex]
\node [optim, align=center] (start) {Decision\\policy $X^\pi$};
\node [pin={[init]above:$\hat{V}_1$}] (v0) [right of=start,
node distance=2.7cm, state]
{$V_1,\hat{V}_1$};
\node [pin={[init]above:$\hat{V}_2$}] (v1)
[right of=v0, node distance=3.3cm, state]
{$V_2,\hat{V}_2$};
\node (vt) [right of=v1, node distance=2.2cm] {...};
\node [pin={[init]above:$\hat{V}_T$}] (vT)
[right of=vt, node distance=2.2cm, state]
{$V_T,\hat{V}_T$};
\node (c0) [below of=v0, node distance=1.5cm, value]
{$x_1\hat{V}_1$};
\node (c1) [below of=v1, node distance=1.5cm, value] {$x_2\hat{V}_2$};
\node (cT) [below of=vT, node distance=1.5cm, value, align=center] {$x_T\hat{V}_T$,\\$\hat{V}_T$};
\node (totval) [below of=c1, node distance=2cm, optim] {Total value};
\path[->] (start) edge node {$X_1^\pi$} (v0);
\path[->] (v0) edge node {$X_2^\pi(V_1,\hat{V}_1)$} (v1);
\path[->] (v1) edge node {$X_3^\pi$} (vt);
\path[->] (vt) edge node {$X_{T}^\pi$} (vT);
\path[-] (c0) edge (v0);
\path[-] (c1) edge (v1);
\path[-] (cT) edge (vT);
\path[->] (c0) edge node [left, outer sep=2mm] {$u_1$} (totval);
\path[->] (c1) edge node [right] {$u_2$} (totval);
\path[->] (cT) edge node [right, outer sep=3mm] {$u_T$} (totval);
\path[<->] (start) edge [bend right=30] node [left, outer sep=2mm] {Optimise} (totval);
\end{tikzpicture}
\end{scaletikzpicturetowidth}
% \\
% \mycaption{The sequential decision problem.}
\end{center}
The optimisation problem can be formulated as
\begin{align}
\max_{\pi\in \Pi}\{\mathbb E_{V} \sum_{t=1}^T u_t(x_t,V_t)\mid x_t
= X_t^\pi(V_{t-1},\hat{V}_{t-1})\}.
\end{align}
\vspace{-0.1em}
This can be computationally intractable. The challenge is to understand
what policy-approximations that can be made in order to solve the problem.
We will start by considering
the approaches from \citep{powell2007approximate}.
\vspace{-0.1em}
\hrulefill
\textbf{Optimisation of integral-forms:} Define a decision space $\mathcal X$, a parameter space
$\mathcal Y$ and an objective $f:\mathcal X\times\mathcal Y\to
\mathbb R$.
Assume a probability density $\tau$ on $\mathcal Y$ and a utility
function $u$ are given. We are interested in solving the problem
\begin{align}
\max_{x\in\mathcal X}\{\mathbb E_\tau [u(f(x,\cdot))]\}.
\end{align}
In retail, the dimension of $\mathcal Y$ can be on the order of
hundreds. The expectation is therefore a high-dimensional integral
that is expensive to approximate. The challenge is to design
an algorithm to efficiently solve optimisations of
integral-forms. Some points we would like to consider are:
\begin{itemize}
\item The structure of the integrand and domain can be important;
we start to investigate cases with $f=\mbox{total profit}$ and
$u(x)=1-e^{-x}$.
% \item Optimality conditions such as Karush-Kuhn-Tucker.
\item Gaussian Process interpolation, or Kriging, to approximate
the integral.
\item Build on the recently
developed GLASSES algorithm \citep{gonzalez2015glasses}.
The aim there is to achieve the best approximate
solution for a given computational budget.
\end{itemize}
}
\headerbox{Uncertainty in the constraint}
{name=uncertainty, column=2, span=2, below=furtherwork}
{
Say a manager wants to maximise revenue, but keep his total profit
above a given level $p_{min}$. In the deterministic approach one would
impose a constraint on profit. With uncertainty one can only
assert whether the price decision satisfied the constraint at a