Compare commits
8 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
62af34f179 | |
|
|
32367faefe | |
|
|
4afbdffb8d | |
|
|
84c02e18ba | |
|
|
c50e8e8c71 | |
|
|
261f11e301 | |
|
|
05a760f28d | |
|
|
2f069a3a2e |
|
|
@ -1,4 +1,4 @@
|
|||
from ui.config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
|
||||
from ui.simpleBC_Config import state_dict, mechanisms, exogenous_states, env_processes, sim_config
|
||||
from engine.configProcessor import generate_config
|
||||
from engine.mechanismExecutor import simulation
|
||||
from engine.utils import flatten
|
||||
|
|
@ -11,7 +11,7 @@ def main():
|
|||
configs = generate_config(mechanisms, exogenous_states)
|
||||
# p = pipeline(states_list, configs, env_processes, range(10))
|
||||
N = sim_config['N']
|
||||
r = range(5)
|
||||
r = range(sim_config["R"])
|
||||
# Dimensions: N x r x mechs
|
||||
s = simulation(states_list, configs, env_processes, r, N)
|
||||
result = pd.DataFrame(flatten(s))
|
||||
|
|
|
|||
|
|
@ -0,0 +1,422 @@
|
|||
|
||||
% Default to the notebook output style
|
||||
|
||||
|
||||
|
||||
|
||||
% Inherit from the specified cell style.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\documentclass[11pt]{article}
|
||||
|
||||
|
||||
|
||||
\usepackage[T1]{fontenc}
|
||||
% Nicer default font (+ math font) than Computer Modern for most use cases
|
||||
\usepackage{mathpazo}
|
||||
|
||||
% Basic figure setup, for now with no caption control since it's done
|
||||
% automatically by Pandoc (which extracts  syntax from Markdown).
|
||||
\usepackage{graphicx}
|
||||
% We will generate all images so they have a width \maxwidth. This means
|
||||
% that they will get their normal width if they fit onto the page, but
|
||||
% are scaled down if they would overflow the margins.
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth
|
||||
\else\Gin@nat@width\fi}
|
||||
\makeatother
|
||||
\let\Oldincludegraphics\includegraphics
|
||||
% Set max figure width to be 80% of text width, for now hardcoded.
|
||||
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=.8\maxwidth]{#1}}
|
||||
% Ensure that by default, figures have no caption (until we provide a
|
||||
% proper Figure object with a Caption API and a way to capture that
|
||||
% in the conversion process - todo).
|
||||
\usepackage{caption}
|
||||
\DeclareCaptionLabelFormat{nolabel}{}
|
||||
\captionsetup{labelformat=nolabel}
|
||||
|
||||
\usepackage{adjustbox} % Used to constrain images to a maximum size
|
||||
\usepackage{xcolor} % Allow colors to be defined
|
||||
\usepackage{enumerate} % Needed for markdown enumerations to work
|
||||
\usepackage{geometry} % Used to adjust the document margins
|
||||
\usepackage{amsmath} % Equations
|
||||
\usepackage{amssymb} % Equations
|
||||
\usepackage{textcomp} % defines textquotesingle
|
||||
% Hack from http://tex.stackexchange.com/a/47451/13684:
|
||||
\AtBeginDocument{%
|
||||
\def\PYZsq{\textquotesingle}% Upright quotes in Pygmentized code
|
||||
}
|
||||
\usepackage{upquote} % Upright quotes for verbatim code
|
||||
\usepackage{eurosym} % defines \euro
|
||||
\usepackage[mathletters]{ucs} % Extended unicode (utf-8) support
|
||||
\usepackage[utf8x]{inputenc} % Allow utf-8 characters in the tex document
|
||||
\usepackage{fancyvrb} % verbatim replacement that allows latex
|
||||
\usepackage{grffile} % extends the file name processing of package graphics
|
||||
% to support a larger range
|
||||
% The hyperref package gives us a pdf with properly built
|
||||
% internal navigation ('pdf bookmarks' for the table of contents,
|
||||
% internal cross-reference links, web links for URLs, etc.)
|
||||
\usepackage{hyperref}
|
||||
\usepackage{longtable} % longtable support required by pandoc >1.10
|
||||
\usepackage{booktabs} % table support for pandoc > 1.12.2
|
||||
\usepackage[inline]{enumitem} % IRkernel/repr support (it uses the enumerate* environment)
|
||||
\usepackage[normalem]{ulem} % ulem is needed to support strikethroughs (\sout)
|
||||
% normalem makes italics be italics, not underlines
|
||||
|
||||
|
||||
|
||||
|
||||
% Colors for the hyperref package
|
||||
\definecolor{urlcolor}{rgb}{0,.145,.698}
|
||||
\definecolor{linkcolor}{rgb}{.71,0.21,0.01}
|
||||
\definecolor{citecolor}{rgb}{.12,.54,.11}
|
||||
|
||||
% ANSI colors
|
||||
\definecolor{ansi-black}{HTML}{3E424D}
|
||||
\definecolor{ansi-black-intense}{HTML}{282C36}
|
||||
\definecolor{ansi-red}{HTML}{E75C58}
|
||||
\definecolor{ansi-red-intense}{HTML}{B22B31}
|
||||
\definecolor{ansi-green}{HTML}{00A250}
|
||||
\definecolor{ansi-green-intense}{HTML}{007427}
|
||||
\definecolor{ansi-yellow}{HTML}{DDB62B}
|
||||
\definecolor{ansi-yellow-intense}{HTML}{B27D12}
|
||||
\definecolor{ansi-blue}{HTML}{208FFB}
|
||||
\definecolor{ansi-blue-intense}{HTML}{0065CA}
|
||||
\definecolor{ansi-magenta}{HTML}{D160C4}
|
||||
\definecolor{ansi-magenta-intense}{HTML}{A03196}
|
||||
\definecolor{ansi-cyan}{HTML}{60C6C8}
|
||||
\definecolor{ansi-cyan-intense}{HTML}{258F8F}
|
||||
\definecolor{ansi-white}{HTML}{C5C1B4}
|
||||
\definecolor{ansi-white-intense}{HTML}{A1A6B2}
|
||||
|
||||
% commands and environments needed by pandoc snippets
|
||||
% extracted from the output of `pandoc -s`
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
||||
% Add ',fontsize=\small' for more characters per line
|
||||
\newenvironment{Shaded}{}{}
|
||||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
|
||||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
|
||||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
|
||||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
|
||||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
|
||||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
|
||||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
|
||||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
|
||||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
|
||||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
|
||||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
|
||||
\newcommand{\RegionMarkerTok}[1]{{#1}}
|
||||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
|
||||
\newcommand{\NormalTok}[1]{{#1}}
|
||||
|
||||
% Additional commands for more recent versions of Pandoc
|
||||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{{#1}}}
|
||||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
|
||||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
|
||||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{{#1}}}
|
||||
\newcommand{\ImportTok}[1]{{#1}}
|
||||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{{#1}}}}
|
||||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
|
||||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
|
||||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{{#1}}}
|
||||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
|
||||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{{#1}}}
|
||||
\newcommand{\BuiltInTok}[1]{{#1}}
|
||||
\newcommand{\ExtensionTok}[1]{{#1}}
|
||||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{{#1}}}
|
||||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{{#1}}}
|
||||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
|
||||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{{#1}}}}}
|
||||
|
||||
|
||||
% Define a nice break command that doesn't care if a line doesn't already
|
||||
% exist.
|
||||
\def\br{\hspace*{\fill} \\* }
|
||||
% Math Jax compatability definitions
|
||||
\def\gt{>}
|
||||
\def\lt{<}
|
||||
% Document parameters
|
||||
\title{testBC}
|
||||
|
||||
|
||||
|
||||
|
||||
% Pygments definitions
|
||||
|
||||
\makeatletter
|
||||
\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax%
|
||||
\let\PY@ul=\relax \let\PY@tc=\relax%
|
||||
\let\PY@bc=\relax \let\PY@ff=\relax}
|
||||
\def\PY@tok#1{\csname PY@tok@#1\endcsname}
|
||||
\def\PY@toks#1+{\ifx\relax#1\empty\else%
|
||||
\PY@tok{#1}\expandafter\PY@toks\fi}
|
||||
\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{%
|
||||
\PY@it{\PY@bf{\PY@ff{#1}}}}}}}
|
||||
\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}}
|
||||
|
||||
\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
|
||||
\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}}
|
||||
\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
|
||||
\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}}
|
||||
\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
|
||||
\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}}
|
||||
\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit}
|
||||
\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf}
|
||||
\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}}
|
||||
\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}}
|
||||
\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}
|
||||
\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@fm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}}
|
||||
\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
|
||||
\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
|
||||
\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
|
||||
\expandafter\def\csname PY@tok@vm\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sa\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@dl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}}
|
||||
\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\expandafter\def\csname PY@tok@ch\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@cpf\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
|
||||
\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}}
|
||||
|
||||
\def\PYZbs{\char`\\}
|
||||
\def\PYZus{\char`\_}
|
||||
\def\PYZob{\char`\{}
|
||||
\def\PYZcb{\char`\}}
|
||||
\def\PYZca{\char`\^}
|
||||
\def\PYZam{\char`\&}
|
||||
\def\PYZlt{\char`\<}
|
||||
\def\PYZgt{\char`\>}
|
||||
\def\PYZsh{\char`\#}
|
||||
\def\PYZpc{\char`\%}
|
||||
\def\PYZdl{\char`\$}
|
||||
\def\PYZhy{\char`\-}
|
||||
\def\PYZsq{\char`\'}
|
||||
\def\PYZdq{\char`\"}
|
||||
\def\PYZti{\char`\~}
|
||||
% for compatibility with earlier versions
|
||||
\def\PYZat{@}
|
||||
\def\PYZlb{[}
|
||||
\def\PYZrb{]}
|
||||
\makeatother
|
||||
|
||||
|
||||
% Exact colors from NB
|
||||
\definecolor{incolor}{rgb}{0.0, 0.0, 0.5}
|
||||
\definecolor{outcolor}{rgb}{0.545, 0.0, 0.0}
|
||||
|
||||
|
||||
|
||||
|
||||
% Prevent overflowing lines due to hard-to-break entities
|
||||
\sloppy
|
||||
% Setup hyperref package
|
||||
\hypersetup{
|
||||
breaklinks=true, % so long urls are correctly broken across lines
|
||||
colorlinks=true,
|
||||
urlcolor=urlcolor,
|
||||
linkcolor=linkcolor,
|
||||
citecolor=citecolor,
|
||||
}
|
||||
% Slightly bigger margins than the latex defaults
|
||||
|
||||
\geometry{verbose,tmargin=1in,bmargin=1in,lmargin=1in,rmargin=1in}
|
||||
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
|
||||
\maketitle
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}1}]:} \PY{k+kn}{from} \PY{n+nn}{engine} \PY{k}{import} \PY{n}{run}
|
||||
\PY{k+kn}{import} \PY{n+nn}{matplotlib}\PY{n+nn}{.}\PY{n+nn}{pyplot} \PY{k}{as} \PY{n+nn}{plt}
|
||||
\PY{k+kn}{import} \PY{n+nn}{numpy} \PY{k}{as} \PY{n+nn}{np}
|
||||
|
||||
\PY{o}{\PYZpc{}}\PY{k}{matplotlib} inline
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}2}]:} \PY{n}{d}\PY{o}{=}\PY{n}{run}\PY{o}{.}\PY{n}{main}\PY{p}{(}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
Test
|
||||
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}3}]:} \PY{n}{names} \PY{o}{=} \PY{n}{d}\PY{o}{.}\PY{n}{keys}\PY{p}{(}\PY{p}{)}\PY{p}{[}\PY{p}{:}\PY{l+m+mi}{4}\PY{p}{]}
|
||||
\PY{k}{for} \PY{n}{n} \PY{o+ow}{in} \PY{n}{names}\PY{p}{:}
|
||||
\PY{n}{d}\PY{p}{[}\PY{n}{n}\PY{p}{]}\PY{o}{=}\PY{n}{d}\PY{p}{[}\PY{n}{n}\PY{p}{]}\PY{o}{.}\PY{n}{apply}\PY{p}{(}\PY{n+nb}{float}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}15}]:} \PY{n}{d}\PY{o}{.}\PY{n}{plot}\PY{p}{(}\PY{n}{x}\PY{o}{=}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{time\PYZus{}step}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,} \PY{n}{y}\PY{o}{=}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Pool}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,} \PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Supply}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{,} \PY{n}{figsize}\PY{o}{=}\PY{p}{(}\PY{l+m+mi}{15}\PY{p}{,}\PY{l+m+mi}{10}\PY{p}{)}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
/anaconda3/lib/python3.6/site-packages/pandas/plotting/\_core.py:1716: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html\#attribute-access
|
||||
series.name = label
|
||||
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{outcolor}Out[{\color{outcolor}15}]:} <matplotlib.axes.\_subplots.AxesSubplot at 0x113bd9438>
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{center}
|
||||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_3_2.png}
|
||||
\end{center}
|
||||
{ \hspace*{\fill} \\}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}13}]:} \PY{n}{d}\PY{o}{.}\PY{n}{plot}\PY{p}{(}\PY{n}{x}\PY{o}{=}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{time\PYZus{}step}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,} \PY{n}{y}\PY{o}{=}\PY{p}{[}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Pool}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,} \PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{Supply}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]}\PY{p}{,} \PY{n}{figsize}\PY{o}{=}\PY{p}{(}\PY{l+m+mi}{15}\PY{p}{,}\PY{l+m+mi}{10}\PY{p}{)}\PY{p}{,} \PY{n}{logy}\PY{o}{=}\PY{k+kc}{True}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
/anaconda3/lib/python3.6/site-packages/pandas/plotting/\_core.py:1716: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html\#attribute-access
|
||||
series.name = label
|
||||
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{outcolor}Out[{\color{outcolor}13}]:} <matplotlib.axes.\_subplots.AxesSubplot at 0x1132f1e80>
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{center}
|
||||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_4_2.png}
|
||||
\end{center}
|
||||
{ \hspace*{\fill} \\}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}8}]:} \PY{n}{d}\PY{p}{[}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{invar}\PY{l+s+s2}{\PYZdq{}}\PY{p}{]}\PY{o}{=}\PY{p}{(}\PY{n}{d}\PY{o}{.}\PY{n}{Pool}\PY{o}{/}\PY{n}{d}\PY{o}{.}\PY{n}{Supply}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}9}]:} \PY{n}{d}\PY{o}{.}\PY{n}{invar}\PY{o}{.}\PY{n}{describe}\PY{p}{(}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{outcolor}Out[{\color{outcolor}9}]:} count 2001.0
|
||||
mean 2.0
|
||||
std 0.0
|
||||
min 2.0
|
||||
25\% 2.0
|
||||
50\% 2.0
|
||||
75\% 2.0
|
||||
max 2.0
|
||||
Name: invar, dtype: float64
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}10}]:} \PY{n}{d}\PY{o}{.}\PY{n}{tail}\PY{p}{(}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{outcolor}Out[{\color{outcolor}10}]:} Belief Pool Price Supply mech\_step time\_step \textbackslash{}
|
||||
1996 1.479643 6.525178e+08 2.394507 3.262589e+08 2 998
|
||||
1997 1.604208 6.525178e+08 2.464774 3.262589e+08 1 999
|
||||
1998 1.806759 5.766994e+08 2.381050 2.883497e+08 2 999
|
||||
1999 1.988029 5.766994e+08 2.394131 2.883497e+08 1 1000
|
||||
2000 2.061324 5.198756e+08 2.332448 2.599378e+08 2 1000
|
||||
|
||||
timestamp invar
|
||||
1996 2018-10-01 15:33:02 2.0
|
||||
1997 2018-10-01 15:33:03 2.0
|
||||
1998 2018-10-01 15:33:03 2.0
|
||||
1999 2018-10-01 15:33:04 2.0
|
||||
2000 2018-10-01 15:33:04 2.0
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor}11}]:} \PY{n}{d}\PY{o}{.}\PY{n}{plot}\PY{p}{(}\PY{n}{x}\PY{o}{=}\PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{time\PYZus{}step}\PY{l+s+s1}{\PYZsq{}}\PY{p}{,}\PY{n}{y}\PY{o}{=}\PY{p}{[}\PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Price}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s2}{\PYZdq{}}\PY{l+s+s2}{Belief}\PY{l+s+s2}{\PYZdq{}}\PY{p}{,} \PY{l+s+s1}{\PYZsq{}}\PY{l+s+s1}{invar}\PY{l+s+s1}{\PYZsq{}}\PY{p}{]} \PY{p}{,}\PY{n}{figsize}\PY{o}{=}\PY{p}{(}\PY{l+m+mi}{15}\PY{p}{,}\PY{l+m+mi}{10}\PY{p}{)}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
/anaconda3/lib/python3.6/site-packages/pandas/plotting/\_core.py:1716: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html\#attribute-access
|
||||
series.name = label
|
||||
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{outcolor}Out[{\color{outcolor}11}]:} <matplotlib.axes.\_subplots.AxesSubplot at 0x113300940>
|
||||
\end{Verbatim}
|
||||
|
||||
\begin{center}
|
||||
\adjustimage{max size={0.9\linewidth}{0.9\paperheight}}{output_8_2.png}
|
||||
\end{center}
|
||||
{ \hspace*{\fill} \\}
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
{\color{incolor}In [{\color{incolor} }]:} \PY{n}{d}\PY{o}{.}\PY{n}{head}\PY{p}{(}\PY{l+m+mi}{11}\PY{p}{)}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
|
||||
% Add a bibliography block to the postdoc
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 73 KiB |
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,182 @@
|
|||
from engine.utils import bound_norm_random, ep_time_step, env_proc
|
||||
|
||||
import numpy as np
|
||||
from decimal import Decimal
|
||||
|
||||
alpha = Decimal('.95') #forgetting param
|
||||
theta = Decimal('.75') #weight param for rational price
|
||||
beta = Decimal('0.5') #agant response gain
|
||||
gamma = Decimal('.03') #action friction param
|
||||
delta = Decimal('.3') #bounds on price change
|
||||
omega = Decimal('.5') #bound on burn frac per period
|
||||
|
||||
seed = {
|
||||
'z': np.random.RandomState(1),
|
||||
'a': np.random.RandomState(2),
|
||||
'b': np.random.RandomState(3),
|
||||
'c': np.random.RandomState(3)
|
||||
}
|
||||
|
||||
# Behaviors per Mechanism
|
||||
|
||||
#arbit X Bond
|
||||
def b1m1(step, sL, s):
|
||||
#returns "delta p"
|
||||
if s['Price']< s['Pool']/s['Supply']-gamma:
|
||||
#print('arbit bond')
|
||||
#print((s['Pool']/s['Supply']-s['Price'])/s['Price']*s['Pool']*beta)
|
||||
return s['Pool']*(s['Pool']/s['Supply']-s['Price'])/s['Price']*beta
|
||||
else :
|
||||
return 0
|
||||
|
||||
|
||||
#invest X Bond
|
||||
def b2m1(step, sL, s):
|
||||
#returns "delta p"
|
||||
if s['Price']< s['Belief']:
|
||||
#print('invest bond')
|
||||
#print((s['Belief']-s['Price'])/s['Price']*s['Pool']*beta)
|
||||
return s['Pool']*(s['Belief']-s['Price'])/s['Price']*beta
|
||||
else :
|
||||
return 0
|
||||
|
||||
#arbit X Burn
|
||||
def b1m2(step, sL, s):
|
||||
#returns "delta s"
|
||||
if Decimal('1')/s['Price']< s['Supply']/s['Pool']-gamma:
|
||||
#print('arbit burn')
|
||||
#print((s['Supply']/s['Pool']-Decimal('1')/s['Price'])*s['Price']*s['Supply']*beta)
|
||||
return s['Supply']*s['Price']*(s['Supply']/s['Pool']-Decimal('1')/s['Price'])*beta
|
||||
else :
|
||||
return 0
|
||||
|
||||
#invest X Burn
|
||||
def b2m2(step, sL, s):
|
||||
#returns "delta s"
|
||||
if Decimal('1')/s['Belief']< Decimal('1')/s['Price']:
|
||||
#print('invest burn')
|
||||
#print(np.min([ s['Pool']*(Decimal('1')/s['Price']-Decimal('1')/s['Belief'])*beta, omega*s['Supply']]))
|
||||
return np.min([ s['Pool']*(Decimal('1')/s['Price']-Decimal('1')/s['Belief'])*beta, omega*s['Supply']])
|
||||
else :
|
||||
return 0
|
||||
|
||||
#
|
||||
#def b1m3(step, sL, s):
|
||||
# return s['s1']
|
||||
#def b2m3(step, sL, s):
|
||||
# return s['s2']
|
||||
|
||||
|
||||
# Internal States per Mechanism
|
||||
|
||||
#Pool X Bond
|
||||
def s1m1(step, sL, s, _input):
|
||||
#_input = "delta p"
|
||||
return ('Pool',s['Pool']+_input)
|
||||
#print("Pool="+str(s['Pool']))
|
||||
|
||||
#Supply X Bond
|
||||
def s2m1(step, sL, s, _input):
|
||||
#_input = "delta p"
|
||||
return ('Supply', s['Supply']+ _input*s['Supply']/s['Pool'] )
|
||||
#print("Supply="+str(s['Supply']))
|
||||
|
||||
# Pool X Burn
|
||||
def s1m2(step, sL, s, _input):
|
||||
#_input is "delta s"
|
||||
return ('Pool',s['Pool']- _input*s['Pool']/s['Supply'])
|
||||
#print("Pool="+str(s['Pool']))
|
||||
|
||||
# Supply X Burn
|
||||
def s2m2(step, sL, s, _input):
|
||||
return ('Supply',s['Supply'] - _input)
|
||||
#print("Supply="+str(s['Supply']))
|
||||
|
||||
#def s1m3(step, sL, s, _input):
|
||||
# s['s1'] = s['s1']+Decimal(.25)*(s['s2']-s['s1']) + Decimal(.25)*(_input-s['s1'])
|
||||
#
|
||||
#def s2m3(step, sL, s, _input):
|
||||
# s['s2'] = s['s2']+Decimal(.25)*(s['s1']-s['s2']) + Decimal(.25)*(_input-s['s2'])
|
||||
|
||||
# Exogenous States
|
||||
proc_one_coef_A = -delta
|
||||
proc_one_coef_B = delta
|
||||
def es3p1(step, sL, s, _input):
|
||||
rv = bound_norm_random(seed['a'], proc_one_coef_A, proc_one_coef_B)
|
||||
return ('Price', theta*s['Price'] * (Decimal('1')+rv) +(Decimal('1')-theta)*s['Pool']/s['Supply'] )
|
||||
|
||||
def es4p2(step, sL, s, _input):
|
||||
rv = bound_norm_random(seed['b'], proc_one_coef_A, proc_one_coef_B)
|
||||
return ('Belief', alpha*s['Belief']*(Decimal('1')+rv )+(Decimal('1')-alpha)*s['Pool']/s['Supply'])
|
||||
|
||||
def es5p2(step, sL, s, _input): # accept timedelta instead of timedelta params
|
||||
return ('timestamp', ep_time_step(s, s['timestamp'], seconds=1))
|
||||
|
||||
# Environment States
|
||||
#from numpy.random import randn as rn
|
||||
def env_a(x):
|
||||
return 3
|
||||
def env_b(x):
|
||||
return 7
|
||||
# def what_ever(x):
|
||||
# return x + 1
|
||||
|
||||
# Genesis States
|
||||
state_dict = {
|
||||
'Pool': Decimal(10.0),
|
||||
'Supply': Decimal(5.0),
|
||||
'Price': Decimal(.01),
|
||||
'Belief': Decimal(3.0),
|
||||
'timestamp': '2018-10-01 15:16:24'
|
||||
}
|
||||
|
||||
exogenous_states = {
|
||||
"Price": es3p1,
|
||||
"Belief": es4p2,
|
||||
"timestamp": es5p2
|
||||
}
|
||||
|
||||
env_processes = {
|
||||
"Price": env_proc('2018-10-01 15:16:25', env_a),
|
||||
"Belief": env_proc('2018-10-01 15:16:25', env_b)
|
||||
}
|
||||
|
||||
# test return vs. non-return functions as lambdas
|
||||
# test fully defined functions
|
||||
mechanisms = {
|
||||
"bond": {
|
||||
"behaviors": {
|
||||
"arbit": b1m1, # lambda step, sL, s: s['s1'] + 1,
|
||||
"invest": b2m1
|
||||
},
|
||||
"states": {
|
||||
"Pool": s1m1,
|
||||
"Supply": s2m1,
|
||||
}
|
||||
},
|
||||
"burn": {
|
||||
"behaviors": {
|
||||
"arbit": b1m2,
|
||||
"invest": b2m2
|
||||
},
|
||||
"states": {
|
||||
"Pool": s1m2,
|
||||
"Supply": s2m2,
|
||||
}
|
||||
},
|
||||
# "m3": {
|
||||
# "behaviors": {
|
||||
# "b1": b1m3,
|
||||
# "b2": b2m3
|
||||
# },
|
||||
# "states": {
|
||||
# "s1": s1m3,
|
||||
# "s2": s2m3,
|
||||
# }
|
||||
# }
|
||||
}
|
||||
|
||||
sim_config = {
|
||||
"N": 1,
|
||||
"R": 1000
|
||||
}
|
||||
|
|
@ -0,0 +1,198 @@
|
|||
from engine.utils import bound_norm_random, ep_time_step, env_proc
|
||||
|
||||
import numpy as np
|
||||
from decimal import Decimal
|
||||
|
||||
alpha = Decimal('.7') #forgetting param
|
||||
theta = Decimal('.75') #weight param for rational price
|
||||
beta = Decimal('0.5') #agant response gain
|
||||
gamma = Decimal('.03') #action friction param
|
||||
delta = Decimal('.3') #bounds on price change
|
||||
omega = Decimal('.5') #bound on burn frac per period
|
||||
|
||||
seed = {
|
||||
'z': np.random.RandomState(1),
|
||||
'a': np.random.RandomState(2),
|
||||
'b': np.random.RandomState(3),
|
||||
'c': np.random.RandomState(3)
|
||||
}
|
||||
|
||||
# Behaviors per Mechanism
|
||||
|
||||
#arbit X Bond
|
||||
def b1m1(step, sL, s):
|
||||
#returns "delta p"
|
||||
if s['Price']< s['Pool']/s['Supply']-gamma:
|
||||
print('arbit bond')
|
||||
print((s['Pool']/s['Supply']-s['Price'])/s['Price']*s['Pool']*beta)
|
||||
return (s['Pool']/s['Supply']-s['Price'])/s['Price']*s['Pool']*beta
|
||||
else :
|
||||
return 0
|
||||
|
||||
|
||||
#invest X Bond
|
||||
def b2m1(step, sL, s):
|
||||
#returns "delta p"
|
||||
if s['Price']< s['Belief']:
|
||||
print('invest bond')
|
||||
print(s['Pool']*(s['Belief']-s['Price'])/s['Price']*beta)
|
||||
return s['Pool']*(s['Belief']-s['Price'])/s['Price']*beta
|
||||
else :
|
||||
return 0
|
||||
|
||||
#arbit X Burn
|
||||
def b1m2(step, sL, s):
|
||||
#returns "delta s"
|
||||
if Decimal('1')/s['Price']< s['Supply']/s['Pool']-gamma:
|
||||
print('arbit burn')
|
||||
print((s['Supply']/s['Pool']-Decimal('1')/s['Price'])*s['Price']*s['Supply']*beta)
|
||||
return (s['Supply']/s['Pool']-Decimal('1')/s['Price'])*s['Price']*s['Supply']*beta
|
||||
else :
|
||||
return 0
|
||||
|
||||
#invest X Burn
|
||||
def b2m2(step, sL, s):
|
||||
#returns "delta s"
|
||||
if Decimal('1')/s['Belief']< Decimal('1')/s['Price']:
|
||||
print('invest burn')
|
||||
print(np.min([ s['Pool']*(Decimal('1')/s['Price']-Decimal('1')/s['Belief'])*beta, omega*s['Supply']]))
|
||||
return np.min([ s['Pool']*(Decimal('1')/s['Price']-Decimal('1')/s['Belief'])*beta, omega*s['Supply']])
|
||||
else :
|
||||
return 0
|
||||
|
||||
#
|
||||
#def b1m3(step, sL, s):
|
||||
# return s['s1']
|
||||
#def b2m3(step, sL, s):
|
||||
# return s['s2']
|
||||
|
||||
|
||||
# Internal States per Mechanism
|
||||
|
||||
#Pool X Bond
|
||||
def s1m1(step, sL, s, _input):
|
||||
#_input = "delta p"
|
||||
print("Bond Called")
|
||||
print("update Pool")
|
||||
print("Pool="+str(s['Pool']))
|
||||
print(str(_input)+" Bonded")
|
||||
return ('Pool',s['Pool']+_input)
|
||||
print("Pool="+str(s['Pool']))
|
||||
|
||||
#Supply X Bond
|
||||
def s2m1(step, sL, s, _input):
|
||||
#_input = "delta p"
|
||||
print("update Supply")
|
||||
print("Supply="+str(s['Supply']))
|
||||
print("Pool="+str(s['Pool']))
|
||||
print(str(s['Supply']/s['Pool'])+"minted token per Bonded")
|
||||
return ('Supply', s['Supply']+ _input*s['Supply']/s['Pool'] )
|
||||
print("Supply="+str(s['Supply']))
|
||||
print('')
|
||||
|
||||
# Pool X Burn
|
||||
def s1m2(step, sL, s, _input):
|
||||
#_input is "delta s"
|
||||
print("Burn Called")
|
||||
print("update Pool")
|
||||
print("Supply="+str(s['Supply']))
|
||||
print(str(_input)+" Burned")
|
||||
print("Pool="+str(s['Pool']))
|
||||
return ('Pool',s['Pool']- _input*s['Pool']/s['Supply'])
|
||||
print(str(s['Pool']/s['Supply'])+"withdrawn token per Burned")
|
||||
print("Pool="+str(s['Pool']))
|
||||
|
||||
# Supply X Burn
|
||||
def s2m2(step, sL, s, _input):
|
||||
print("update Supply")
|
||||
print("Supply="+str(s['Supply']))
|
||||
print(str(_input)+" Burned")
|
||||
return ('Supply',s['Supply'] - _input)
|
||||
print("Supply="+str(s['Supply']))
|
||||
|
||||
#def s1m3(step, sL, s, _input):
|
||||
# s['s1'] = s['s1']+Decimal(.25)*(s['s2']-s['s1']) + Decimal(.25)*(_input-s['s1'])
|
||||
#
|
||||
#def s2m3(step, sL, s, _input):
|
||||
# s['s2'] = s['s2']+Decimal(.25)*(s['s1']-s['s2']) + Decimal(.25)*(_input-s['s2'])
|
||||
|
||||
# Exogenous States
|
||||
proc_one_coef_A = -delta
|
||||
proc_one_coef_B = delta
|
||||
def es3p1(step, sL, s, _input):
|
||||
rv = bound_norm_random(seed['a'], proc_one_coef_A, proc_one_coef_B)
|
||||
return ('Price', theta*s['Price'] * (Decimal('1')+rv) +(Decimal('1')-theta)*s['Pool']/s['Supply'] )
|
||||
def es4p2(step, sL, s, _input):
|
||||
return ('Belief', alpha*s['Belief']+s['Pool']/s['Supply']*(Decimal('1')-alpha))
|
||||
|
||||
def es5p2(step, sL, s, _input): # accept timedelta instead of timedelta params
|
||||
return ('timestamp', ep_time_step(s, s['timestamp'], seconds=1))
|
||||
|
||||
# Environment States
|
||||
#from numpy.random import randn as rn
|
||||
def env_a(x):
|
||||
return 3
|
||||
def env_b(x):
|
||||
return 7
|
||||
# def what_ever(x):
|
||||
# return x + 1
|
||||
|
||||
# Genesis States
|
||||
state_dict = {
|
||||
'Pool': Decimal(10.0),
|
||||
'Supply': Decimal(5.0),
|
||||
'Price': Decimal(.01),
|
||||
'Belief': Decimal(10.0),
|
||||
'timestamp': '2018-10-01 15:16:24'
|
||||
}
|
||||
|
||||
exogenous_states = {
|
||||
"Price": es3p1,
|
||||
"Belief": es4p2,
|
||||
"timestamp": es5p2
|
||||
}
|
||||
|
||||
env_processes = {
|
||||
"Price": env_proc('2018-10-01 15:16:25', env_a),
|
||||
"Belief": env_proc('2018-10-01 15:16:25', env_b)
|
||||
}
|
||||
|
||||
# test return vs. non-return functions as lambdas
|
||||
# test fully defined functions
|
||||
mechanisms = {
|
||||
"bond": {
|
||||
"behaviors": {
|
||||
"arbit": b1m1, # lambda step, sL, s: s['s1'] + 1,
|
||||
"invest": b2m1
|
||||
},
|
||||
"states": {
|
||||
"Pool": s1m1,
|
||||
"Supply": s2m1,
|
||||
}
|
||||
},
|
||||
"burn": {
|
||||
"behaviors": {
|
||||
"arbit": b1m2,
|
||||
"invest": b2m2
|
||||
},
|
||||
"states": {
|
||||
"Pool": s1m2,
|
||||
"Supply": s2m2,
|
||||
}
|
||||
},
|
||||
# "m3": {
|
||||
# "behaviors": {
|
||||
# "b1": b1m3,
|
||||
# "b2": b2m3
|
||||
# },
|
||||
# "states": {
|
||||
# "s1": s1m3,
|
||||
# "s2": s2m3,
|
||||
# }
|
||||
# }
|
||||
}
|
||||
|
||||
sim_config = {
|
||||
"N": 1,
|
||||
"R": 2
|
||||
}
|
||||
Loading…
Reference in New Issue