├── LICENSE ├── MSOM_Data └── .gitkeep ├── MSOM_data_cleaned └── .gitkeep ├── MSOM_data_estimated └── .gitkeep ├── MSOM_data_optimized └── .gitkeep ├── README.md ├── illustrations ├── .gitkeep ├── example_logit_demand.png └── example_regional.png ├── pricing_output ├── .gitkeep ├── inf_hor_fixed_price_range2_10_inf_[0dot21898133_0dot53923218_0dot99865338_1dot26479121_1dot74157239_0dot58121468\^J_0dot1689682__0dot31425697](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png ├── inf_hor_fixed_price_range2_10_inf_[0dot21898133_0dot53923218_0dot99865338_1dot26479121_1dot74157239_0dot58121468\^J_0dot1689682__0dot31425697](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png ├── inf_hor_fixed_price_range2_10_inf_[0dot24830571_0dot40447312_0dot74772254_1dot77613348_1dot68477983_0dot64187507\^J_1dot26032525_0dot90380861](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png ├── inf_hor_fixed_price_range2_10_inf_[0dot24830571_0dot40447312_0dot74772254_1dot77613348_1dot68477983_0dot64187507\^J_1dot26032525_0dot90380861](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png ├── inf_hor_fixed_price_range2_10_inf_[1dot60475511_0dot82333991_1dot14365691_0dot54707074_1dot66595477_0dot30896262\^J_1dot44264549_1dot24988783](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png ├── inf_hor_fixed_price_range2_10_inf_[1dot60475511_0dot82333991_1dot14365691_0dot54707074_1dot66595477_0dot30896262\^J_1dot44264549_1dot24988783](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png ├── inf_hor_fixed_price_range2_10_inf_[1dot66777809_0dot89712398_0dot74760977_1dot65553831_0dot59414377_1dot66132145\^J_1dot97881841_1dot26387878](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png ├── inf_hor_fixed_price_range2_10_inf_[1dot66777809_0dot89712398_0dot74760977_1dot65553831_0dot59414377_1dot66132145\^J_1dot97881841_1dot26387878](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png ├── inf_hor_fixed_price_range2_10_inf_[1dot83237536_1dot07567653_1dot39224552_0dot36417898_0dot24256763_1dot99828718\^J_0dot43084791_0dot94876898](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png ├── inf_hor_fixed_price_range2_10_inf_[1dot83237536_1dot07567653_1dot39224552_0dot36417898_0dot24256763_1dot99828718\^J_0dot43084791_0dot94876898](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_V_m ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu ├── myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=51dot9_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=53dot52_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=54dot78_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=56dot58_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=56dot7_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot24_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot36_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot3_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=54dot96_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=55dot38_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=55dot8_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=56dot22_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=57dot06_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=57dot48_price_path.png ├── pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=58dot32_price_path.png ├── pricing_opt_mmnl_ext_adfedb6893_0dot8_2000_50_160_inf_0dot22_0dot95_r0=159dot12_price_path.png ├── pricing_opt_mmnl_ext_adfedb6893_0dot8_2000_50_160_inf_0dot22_0dot9_r0=159dot12_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=42dot68_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=42dot8_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=44dot12_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=44dot24_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=45dot26_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=45dot38_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=46dot88_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=47dot6_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=48dot08_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=42dot56_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=43dot76_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=44dot96_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=45dot92_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=46dot7_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=47dot36_price_path.png ├── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=47dot84_price_path.png └── pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=48dot2_price_path.png ├── scripts ├── __pycache__ │ ├── mmnl_simulation.cpython-37.pyc │ ├── optimal_pricing_policy_exp_update.cpython-37.pyc │ ├── py_MSOM_cleaning.cpython-37.pyc │ ├── py_estimation.cpython-37.pyc │ └── utilis.cpython-37.pyc ├── cross_validation.py ├── mmnl_simulation.py ├── optimal_pricing_policy_exp_update.py ├── py_MSOM_cleaning.py ├── py_estimation.py ├── run_EM_KETrain.py ├── run_data_cleaning.py ├── run_estimate_optimize_simulation.py ├── run_extract_features.py ├── run_freq_estimate.py ├── run_freq_user.py ├── run_linear_estimation.py ├── run_logisregmixEM.R ├── run_mmnl_estimation.py ├── run_mmnl_estimation_compare.py ├── run_mmnl_estimation_simulation.py ├── run_mmnl_myopic_pricing.py ├── run_mmnl_pricing_optimization.py ├── run_mmnl_revenue_compare.py ├── run_myopic_pricing_optimization_simulation.py ├── run_pricing_optimization.py └── utilis.py └── simulation_results └── .gitkeep /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Hansheng Jiang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MSOM_Data/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MSOM_data_cleaned/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MSOM_data_estimated/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MSOM_data_optimized/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IPRE: Intertemporal Pricing under Reference Effects 2 | 3 | ## Overview 4 | This repository contains numerical implementation for the paper [Intertemporal Pricing via Nonparametric Estimation: Integrating Reference Effects and Consumer Heterogeneity](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3702824). Along with the reproduction code, this repository code also contains general functions for implementing nonparametric estimation of consumer heterogeneity. 5 | 6 | 7 | 8 | ## Folders 9 | - `scripts/`: Python and R files 10 | - `illustrations/`: two `.png` pictures illustrating logit demand, and how it depends on reference price and price 11 | - `simulation_results`: estimated coefficients in simulation stored in `.csv` files 12 | - `pricing_output/`: `.png` pictures showing pricing policy and cumulative revenue, for both simulation and MSOM (real) data 13 | - `MSOM_data_cleaned/`: extracted feature data in `.csv` files, ready as inputs of the estimation algorithm 14 | - `MSOM_data_estimated/`: estimated coefficients of MSOM data stored in `.csv` files 15 | - `MSOM_data_optimized/`: revenue comparison for real data study 16 | - `MSOM_Data/`: MSOM-JD.com dataset 17 | 18 | ## Scripts and Modules 19 | Each Python script in `scripts/` starting with `run_` is used for one run of a certain numerical experiment, while each python script ending with `_py` defines some functions to be imported by other files. 20 | 21 | Based on the purposes of all the scripts, we further categorize them into the following modules. 22 | 23 | - Data preprocessing and feature extraction 24 | - `run_data_cleaning.py, py_MSOM_cleaning.py`, `run_extract_features.py, run_freq_user.py, run_freq_estimate.py, ` 25 | - Heterogeneous Reference Effects Estimation 26 | - Functions: `py_estimation.py, cross_validation.py, mmnl_simualtion.py` 27 | - For simulated data: `run_mmnl_estimation_simulation.py` 28 | - For MSOM data: `run_mmnl_estimation.py`, `run_mmnl_estimation_compare.py` 29 | - Pricing Optimization 30 | - Functions: `optimal_pricing_policy_exp_update.py` 31 | - For simulated data: `run_pricing_optimization.py` 32 | - For MSOM data: `run_mmnl_pricing_optimization.py`, `run_mmnl_revenue_compare.py` 33 | 34 | 35 | ## Real Data and Access 36 | The MSOM-JD.com dataset can be downloaded from this [link](https://connect.informs.org/msom/events/datadriven2020) given membership access, and a general introduction to the dataset is available in this [paper](https://pubsonline.informs.org/doi/abs/10.1287/msom.2020.0900). To be compatible with the codes, the uncompressed `.csv` data files should be stored in the folder `./MSOM_Data/`. 37 | -------------------------------------------------------------------------------- /illustrations/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /illustrations/example_logit_demand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/illustrations/example_logit_demand.png -------------------------------------------------------------------------------- /illustrations/example_regional.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/illustrations/example_regional.png -------------------------------------------------------------------------------- /pricing_output/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot21898133_0dot53923218_0dot99865338_1dot26479121_1dot74157239_0dot58121468\^J_0dot1689682__0dot31425697](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot21898133_0dot53923218_0dot99865338_1dot26479121_1dot74157239_0dot58121468\^J_0dot1689682__0dot31425697](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot21898133_0dot53923218_0dot99865338_1dot26479121_1dot74157239_0dot58121468\^J_0dot1689682__0dot31425697](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot21898133_0dot53923218_0dot99865338_1dot26479121_1dot74157239_0dot58121468\^J_0dot1689682__0dot31425697](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot24830571_0dot40447312_0dot74772254_1dot77613348_1dot68477983_0dot64187507\^J_1dot26032525_0dot90380861](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot24830571_0dot40447312_0dot74772254_1dot77613348_1dot68477983_0dot64187507\^J_1dot26032525_0dot90380861](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot24830571_0dot40447312_0dot74772254_1dot77613348_1dot68477983_0dot64187507\^J_1dot26032525_0dot90380861](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[0dot24830571_0dot40447312_0dot74772254_1dot77613348_1dot68477983_0dot64187507\^J_1dot26032525_0dot90380861](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot60475511_0dot82333991_1dot14365691_0dot54707074_1dot66595477_0dot30896262\^J_1dot44264549_1dot24988783](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot60475511_0dot82333991_1dot14365691_0dot54707074_1dot66595477_0dot30896262\^J_1dot44264549_1dot24988783](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot60475511_0dot82333991_1dot14365691_0dot54707074_1dot66595477_0dot30896262\^J_1dot44264549_1dot24988783](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot60475511_0dot82333991_1dot14365691_0dot54707074_1dot66595477_0dot30896262\^J_1dot44264549_1dot24988783](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot66777809_0dot89712398_0dot74760977_1dot65553831_0dot59414377_1dot66132145\^J_1dot97881841_1dot26387878](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot66777809_0dot89712398_0dot74760977_1dot65553831_0dot59414377_1dot66132145\^J_1dot97881841_1dot26387878](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot66777809_0dot89712398_0dot74760977_1dot65553831_0dot59414377_1dot66132145\^J_1dot97881841_1dot26387878](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot66777809_0dot89712398_0dot74760977_1dot65553831_0dot59414377_1dot66132145\^J_1dot97881841_1dot26387878](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot83237536_1dot07567653_1dot39224552_0dot36417898_0dot24256763_1dot99828718\^J_0dot43084791_0dot94876898](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot83237536_1dot07567653_1dot39224552_0dot36417898_0dot24256763_1dot99828718\^J_0dot43084791_0dot94876898](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_price.png -------------------------------------------------------------------------------- /pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot83237536_1dot07567653_1dot39224552_0dot36417898_0dot24256763_1dot99828718\^J_0dot43084791_0dot94876898](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/inf_hor_fixed_price_range2_10_inf_[1dot83237536_1dot07567653_1dot39224552_0dot36417898_0dot24256763_1dot99828718\^J_0dot43084791_0dot94876898](0dot5,_0dot5,_0)_0dot8_0dot9mmnl_referenceprice.png -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 66.0 67 | 67.0 68 | 68.0 69 | 68.0 70 | 69.0 71 | 70.0 72 | 71.0 73 | 72.0 74 | 73.0 75 | 74.0 76 | 75.0 77 | 76.0 78 | 77.0 79 | 78.0 80 | 79.0 81 | 80.0 82 | 81.0 83 | 82.0 84 | 83.0 85 | 84.0 86 | 85.0 87 | 85.0 88 | 86.0 89 | 87.0 90 | 88.0 91 | 89.0 92 | 90.0 93 | 90.0 94 | 91.0 95 | 92.0 96 | 93.0 97 | 94.0 98 | 95.0 99 | 96.0 100 | 96.0 101 | 97.0 102 | 98.0 103 | 99.0 104 | 100.0 105 | 101.0 106 | 101.0 107 | 102.0 108 | 103.0 109 | 104.0 110 | 105.0 111 | 106.0 112 | 106.0 113 | 107.0 114 | 108.0 115 | 109.0 116 | 110.0 117 | 111.0 118 | 112.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 115.0 123 | 116.0 124 | 117.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 122.0 131 | 122.0 132 | 123.0 133 | 124.0 134 | 125.0 135 | 126.0 136 | 127.0 137 | 128.0 138 | 128.0 139 | 129.0 140 | 130.0 141 | 131.0 142 | 132.0 143 | 133.0 144 | 133.0 145 | 134.0 146 | 135.0 147 | 136.0 148 | 137.0 149 | 138.0 150 | 138.0 151 | 139.0 152 | 140.0 153 | 141.0 154 | 142.0 155 | 143.0 156 | 144.0 157 | 144.0 158 | 145.0 159 | 146.0 160 | 147.0 161 | 148.0 162 | 149.0 163 | 149.0 164 | 150.0 165 | 151.0 166 | 152.0 167 | 153.0 168 | 154.0 169 | 154.0 170 | 155.0 171 | 156.0 172 | 157.0 173 | 158.0 174 | 159.0 175 | 160.0 176 | 160.0 177 | 161.0 178 | 162.0 179 | 163.0 180 | 164.0 181 | 165.0 182 | 165.0 183 | 166.0 184 | 167.0 185 | 168.0 186 | 169.0 187 | 170.0 188 | 171.0 189 | 171.0 190 | 172.0 191 | 173.0 192 | 174.0 193 | 175.0 194 | 176.0 195 | 176.0 196 | 177.0 197 | 178.0 198 | 179.0 199 | 180.0 200 | 181.0 201 | 182.0 202 | 182.0 203 | 183.0 204 | 184.0 205 | 185.0 206 | 186.0 207 | 187.0 208 | 187.0 209 | 188.0 210 | 189.0 211 | 190.0 212 | 191.0 213 | 192.0 214 | 193.0 215 | 193.0 216 | 194.0 217 | 195.0 218 | 196.0 219 | 197.0 220 | 198.0 221 | 198.0 222 | 199.0 223 | 200.0 224 | 201.0 225 | 202.0 226 | 203.0 227 | 204.0 228 | 204.0 229 | 205.0 230 | 206.0 231 | 207.0 232 | 208.0 233 | 209.0 234 | 209.0 235 | 210.0 236 | 211.0 237 | 212.0 238 | 213.0 239 | 214.0 240 | 215.0 241 | 215.0 242 | 216.0 243 | 217.0 244 | 218.0 245 | 219.0 246 | 220.0 247 | 220.0 248 | 221.0 249 | 222.0 250 | 223.0 251 | 224.0 252 | 225.0 253 | 226.0 254 | 226.0 255 | 227.0 256 | 228.0 257 | 229.0 258 | 230.0 259 | 231.0 260 | 232.0 261 | 232.0 262 | 233.0 263 | 234.0 264 | 235.0 265 | 236.0 266 | 237.0 267 | 237.0 268 | 238.0 269 | 239.0 270 | 240.0 271 | 241.0 272 | 242.0 273 | 243.0 274 | 243.0 275 | 244.0 276 | 245.0 277 | 246.0 278 | 247.0 279 | 248.0 280 | 248.0 281 | 249.0 282 | 250.0 283 | 251.0 284 | 252.0 285 | 253.0 286 | 254.0 287 | 254.0 288 | 255.0 289 | 256.0 290 | 257.0 291 | 258.0 292 | 259.0 293 | 260.0 294 | 260.0 295 | 261.0 296 | 262.0 297 | 263.0 298 | 264.0 299 | 265.0 300 | 265.0 301 | 266.0 302 | 267.0 303 | 268.0 304 | 269.0 305 | 270.0 306 | 271.0 307 | 271.0 308 | 272.0 309 | 273.0 310 | 274.0 311 | 275.0 312 | 276.0 313 | 277.0 314 | 277.0 315 | 278.0 316 | 279.0 317 | 280.0 318 | 281.0 319 | 282.0 320 | 282.0 321 | 283.0 322 | 284.0 323 | 285.0 324 | 286.0 325 | 287.0 326 | 288.0 327 | 288.0 328 | 289.0 329 | 290.0 330 | 291.0 331 | 292.0 332 | 293.0 333 | 294.0 334 | 294.0 335 | 295.0 336 | 296.0 337 | 297.0 338 | 298.0 339 | 299.0 340 | 299.0 341 | 300.0 342 | 301.0 343 | 302.0 344 | 303.0 345 | 304.0 346 | 305.0 347 | 305.0 348 | 306.0 349 | 307.0 350 | 308.0 351 | 309.0 352 | 310.0 353 | 311.0 354 | 311.0 355 | 312.0 356 | 313.0 357 | 314.0 358 | 315.0 359 | 316.0 360 | 317.0 361 | 317.0 362 | 318.0 363 | 319.0 364 | 320.0 365 | 321.0 366 | 322.0 367 | 322.0 368 | 323.0 369 | 324.0 370 | 325.0 371 | 326.0 372 | 327.0 373 | 328.0 374 | 328.0 375 | 329.0 376 | 330.0 377 | 331.0 378 | 332.0 379 | 333.0 380 | 334.0 381 | 334.0 382 | 335.0 383 | 336.0 384 | 337.0 385 | 338.0 386 | 339.0 387 | 340.0 388 | 340.0 389 | 341.0 390 | 342.0 391 | 343.0 392 | 344.0 393 | 345.0 394 | 345.0 395 | 346.0 396 | 347.0 397 | 348.0 398 | 349.0 399 | 350.0 400 | 351.0 401 | 351.0 402 | 352.0 403 | 353.0 404 | 354.0 405 | 355.0 406 | 356.0 407 | 357.0 408 | 357.0 409 | 358.0 410 | 359.0 411 | 360.0 412 | 361.0 413 | 362.0 414 | 363.0 415 | 363.0 416 | 364.0 417 | 365.0 418 | 366.0 419 | 367.0 420 | 368.0 421 | 368.0 422 | 369.0 423 | 370.0 424 | 371.0 425 | 372.0 426 | 373.0 427 | 374.0 428 | 374.0 429 | 375.0 430 | 376.0 431 | 377.0 432 | 378.0 433 | 379.0 434 | 380.0 435 | 380.0 436 | 381.0 437 | 382.0 438 | 383.0 439 | 384.0 440 | 385.0 441 | 386.0 442 | 386.0 443 | 387.0 444 | 388.0 445 | 389.0 446 | 390.0 447 | 391.0 448 | 392.0 449 | 392.0 450 | 393.0 451 | 394.0 452 | 395.0 453 | 396.0 454 | 397.0 455 | 397.0 456 | 398.0 457 | 399.0 458 | 400.0 459 | 401.0 460 | 402.0 461 | 403.0 462 | 403.0 463 | 404.0 464 | 405.0 465 | 406.0 466 | 407.0 467 | 408.0 468 | 409.0 469 | 409.0 470 | 410.0 471 | 411.0 472 | 412.0 473 | 413.0 474 | 414.0 475 | 415.0 476 | 415.0 477 | 416.0 478 | 417.0 479 | 418.0 480 | 419.0 481 | 420.0 482 | 421.0 483 | 421.0 484 | 422.0 485 | 423.0 486 | 424.0 487 | 425.0 488 | 426.0 489 | 427.0 490 | 427.0 491 | 428.0 492 | 429.0 493 | 430.0 494 | 431.0 495 | 432.0 496 | 433.0 497 | 433.0 498 | 434.0 499 | 435.0 500 | 436.0 501 | 437.0 502 | 438.0 503 | 438.0 504 | 439.0 505 | 440.0 506 | 441.0 507 | 442.0 508 | 443.0 509 | 444.0 510 | 444.0 511 | 445.0 512 | 446.0 513 | 447.0 514 | 448.0 515 | 449.0 516 | 450.0 517 | 450.0 518 | 451.0 519 | 452.0 520 | 453.0 521 | 454.0 522 | 455.0 523 | 456.0 524 | 456.0 525 | 457.0 526 | 458.0 527 | 459.0 528 | 460.0 529 | 461.0 530 | 462.0 531 | 462.0 532 | 463.0 533 | 464.0 534 | 465.0 535 | 466.0 536 | 467.0 537 | 468.0 538 | 468.0 539 | 469.0 540 | 470.0 541 | 471.0 542 | 472.0 543 | 473.0 544 | 474.0 545 | 474.0 546 | 475.0 547 | 476.0 548 | 477.0 549 | 478.0 550 | 479.0 551 | 480.0 552 | 480.0 553 | 481.0 554 | 482.0 555 | 483.0 556 | 484.0 557 | 485.0 558 | 486.0 559 | 486.0 560 | 487.0 561 | 488.0 562 | 489.0 563 | 490.0 564 | 491.0 565 | 492.0 566 | 492.0 567 | 493.0 568 | 494.0 569 | 495.0 570 | 496.0 571 | 497.0 572 | 498.0 573 | 498.0 574 | 499.0 575 | 500.0 576 | 501.0 577 | 502.0 578 | 503.0 579 | 503.0 580 | 504.0 581 | 505.0 582 | 506.0 583 | 507.0 584 | 508.0 585 | 509.0 586 | 509.0 587 | 510.0 588 | 511.0 589 | 512.0 590 | 513.0 591 | 514.0 592 | 515.0 593 | 515.0 594 | 516.0 595 | 517.0 596 | 518.0 597 | 519.0 598 | 520.0 599 | 521.0 600 | 521.0 601 | 522.0 602 | 523.0 603 | 524.0 604 | 525.0 605 | 526.0 606 | 527.0 607 | 527.0 608 | 528.0 609 | 529.0 610 | 530.0 611 | 531.0 612 | 532.0 613 | 533.0 614 | 533.0 615 | 534.0 616 | 535.0 617 | 536.0 618 | 537.0 619 | 538.0 620 | 539.0 621 | 539.0 622 | 540.0 623 | 541.0 624 | 542.0 625 | 543.0 626 | 544.0 627 | 545.0 628 | 545.0 629 | 546.0 630 | 547.0 631 | 548.0 632 | 549.0 633 | 550.0 634 | 551.0 635 | 551.0 636 | 552.0 637 | 553.0 638 | 554.0 639 | 555.0 640 | 556.0 641 | 557.0 642 | 557.0 643 | 558.0 644 | 559.0 645 | 560.0 646 | 561.0 647 | 562.0 648 | 563.0 649 | 563.0 650 | 564.0 651 | 565.0 652 | 566.0 653 | 567.0 654 | 568.0 655 | 569.0 656 | 569.0 657 | 570.0 658 | 571.0 659 | 572.0 660 | 573.0 661 | 574.0 662 | 575.0 663 | 575.0 664 | 576.0 665 | 577.0 666 | 578.0 667 | 579.0 668 | 580.0 669 | 581.0 670 | 581.0 671 | 582.0 672 | 583.0 673 | 584.0 674 | 585.0 675 | 586.0 676 | 587.0 677 | 587.0 678 | 588.0 679 | 589.0 680 | 590.0 681 | 591.0 682 | 592.0 683 | 593.0 684 | 593.0 685 | 594.0 686 | 595.0 687 | 596.0 688 | 597.0 689 | 598.0 690 | 599.0 691 | 599.0 692 | 600.0 693 | 601.0 694 | 602.0 695 | 603.0 696 | 604.0 697 | 605.0 698 | 605.0 699 | 606.0 700 | 607.0 701 | 608.0 702 | 609.0 703 | 610.0 704 | 611.0 705 | 611.0 706 | 612.0 707 | 613.0 708 | 614.0 709 | 615.0 710 | 616.0 711 | 617.0 712 | 617.0 713 | 618.0 714 | 619.0 715 | 620.0 716 | 621.0 717 | 622.0 718 | 623.0 719 | 623.0 720 | 624.0 721 | 625.0 722 | 626.0 723 | 627.0 724 | 628.0 725 | 629.0 726 | 629.0 727 | 630.0 728 | 631.0 729 | 632.0 730 | 633.0 731 | 634.0 732 | 635.0 733 | 635.0 734 | 636.0 735 | 637.0 736 | 638.0 737 | 639.0 738 | 640.0 739 | 641.0 740 | 641.0 741 | 642.0 742 | 643.0 743 | 644.0 744 | 645.0 745 | 646.0 746 | 647.0 747 | 647.0 748 | 648.0 749 | 649.0 750 | 650.0 751 | 651.0 752 | 652.0 753 | 653.0 754 | 653.0 755 | 654.0 756 | 655.0 757 | 656.0 758 | 657.0 759 | 658.0 760 | 659.0 761 | 659.0 762 | 660.0 763 | 661.0 764 | 662.0 765 | 663.0 766 | 664.0 767 | 665.0 768 | 665.0 769 | 666.0 770 | 667.0 771 | 668.0 772 | 669.0 773 | 670.0 774 | 671.0 775 | 671.0 776 | 672.0 777 | 673.0 778 | 674.0 779 | 675.0 780 | 676.0 781 | 677.0 782 | 677.0 783 | 678.0 784 | 679.0 785 | 680.0 786 | 681.0 787 | 682.0 788 | 683.0 789 | 683.0 790 | 684.0 791 | 685.0 792 | 686.0 793 | 687.0 794 | 688.0 795 | 689.0 796 | 689.0 797 | 690.0 798 | 691.0 799 | 692.0 800 | 693.0 801 | 694.0 802 | 695.0 803 | 696.0 804 | 696.0 805 | 697.0 806 | 698.0 807 | 699.0 808 | 700.0 809 | 701.0 810 | 702.0 811 | 702.0 812 | 703.0 813 | 704.0 814 | 705.0 815 | 706.0 816 | 707.0 817 | 708.0 818 | 708.0 819 | 709.0 820 | 710.0 821 | 711.0 822 | 712.0 823 | 713.0 824 | 714.0 825 | 714.0 826 | 715.0 827 | 716.0 828 | 717.0 829 | 718.0 830 | 719.0 831 | 720.0 832 | 720.0 833 | 721.0 834 | 722.0 835 | 723.0 836 | 724.0 837 | 725.0 838 | 726.0 839 | 726.0 840 | 727.0 841 | 728.0 842 | 729.0 843 | 730.0 844 | 731.0 845 | 732.0 846 | 732.0 847 | 733.0 848 | 734.0 849 | 735.0 850 | 736.0 851 | 737.0 852 | 738.0 853 | 738.0 854 | 739.0 855 | 740.0 856 | 741.0 857 | 742.0 858 | 743.0 859 | 744.0 860 | 744.0 861 | 745.0 862 | 746.0 863 | 747.0 864 | 748.0 865 | 749.0 866 | 750.0 867 | 750.0 868 | 751.0 869 | 752.0 870 | 753.0 871 | 754.0 872 | 755.0 873 | 756.0 874 | 756.0 875 | 757.0 876 | 758.0 877 | 759.0 878 | 760.0 879 | 761.0 880 | 762.0 881 | 762.0 882 | 763.0 883 | 764.0 884 | 765.0 885 | 766.0 886 | 767.0 887 | 768.0 888 | 768.0 889 | 769.0 890 | 770.0 891 | 771.0 892 | 772.0 893 | 773.0 894 | 774.0 895 | 775.0 896 | 775.0 897 | 776.0 898 | 777.0 899 | 778.0 900 | 779.0 901 | 780.0 902 | 781.0 903 | 781.0 904 | 782.0 905 | 783.0 906 | 784.0 907 | 785.0 908 | 786.0 909 | 787.0 910 | 787.0 911 | 788.0 912 | 789.0 913 | 790.0 914 | 791.0 915 | 792.0 916 | 793.0 917 | 793.0 918 | 794.0 919 | 795.0 920 | 796.0 921 | 797.0 922 | 798.0 923 | 799.0 924 | 799.0 925 | 800.0 926 | 801.0 927 | 802.0 928 | 803.0 929 | 804.0 930 | 805.0 931 | 805.0 932 | 806.0 933 | 807.0 934 | 808.0 935 | 809.0 936 | 810.0 937 | 811.0 938 | 811.0 939 | 812.0 940 | 813.0 941 | 814.0 942 | 815.0 943 | 816.0 944 | 817.0 945 | 817.0 946 | 818.0 947 | 819.0 948 | 820.0 949 | 821.0 950 | 822.0 951 | 823.0 952 | 823.0 953 | 824.0 954 | 825.0 955 | 826.0 956 | 827.0 957 | 828.0 958 | 829.0 959 | 830.0 960 | 830.0 961 | 831.0 962 | 832.0 963 | 833.0 964 | 834.0 965 | 835.0 966 | 836.0 967 | 836.0 968 | 837.0 969 | 838.0 970 | 839.0 971 | 840.0 972 | 841.0 973 | 842.0 974 | 842.0 975 | 843.0 976 | 844.0 977 | 845.0 978 | 846.0 979 | 847.0 980 | 848.0 981 | 848.0 982 | 849.0 983 | 850.0 984 | 851.0 985 | 852.0 986 | 853.0 987 | 854.0 988 | 854.0 989 | 855.0 990 | 856.0 991 | 857.0 992 | 858.0 993 | 859.0 994 | 860.0 995 | 860.0 996 | 861.0 997 | 862.0 998 | 863.0 999 | 864.0 1000 | 865.0 1001 | 866.0 1002 | 866.0 1003 | 867.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_1dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 66.0 67 | 67.0 68 | 68.0 69 | 68.0 70 | 69.0 71 | 70.0 72 | 71.0 73 | 72.0 74 | 73.0 75 | 74.0 76 | 75.0 77 | 76.0 78 | 77.0 79 | 78.0 80 | 79.0 81 | 79.0 82 | 80.0 83 | 81.0 84 | 82.0 85 | 83.0 86 | 84.0 87 | 85.0 88 | 85.0 89 | 86.0 90 | 87.0 91 | 88.0 92 | 89.0 93 | 90.0 94 | 91.0 95 | 91.0 96 | 92.0 97 | 93.0 98 | 94.0 99 | 95.0 100 | 96.0 101 | 97.0 102 | 97.0 103 | 98.0 104 | 99.0 105 | 100.0 106 | 101.0 107 | 102.0 108 | 103.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 107.0 114 | 108.0 115 | 109.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 115.0 123 | 115.0 124 | 116.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 121.0 131 | 122.0 132 | 123.0 133 | 124.0 134 | 125.0 135 | 126.0 136 | 127.0 137 | 127.0 138 | 128.0 139 | 129.0 140 | 130.0 141 | 131.0 142 | 132.0 143 | 133.0 144 | 133.0 145 | 134.0 146 | 135.0 147 | 136.0 148 | 137.0 149 | 138.0 150 | 139.0 151 | 139.0 152 | 140.0 153 | 141.0 154 | 142.0 155 | 143.0 156 | 144.0 157 | 145.0 158 | 145.0 159 | 146.0 160 | 147.0 161 | 148.0 162 | 149.0 163 | 150.0 164 | 151.0 165 | 152.0 166 | 152.0 167 | 153.0 168 | 154.0 169 | 155.0 170 | 156.0 171 | 157.0 172 | 158.0 173 | 158.0 174 | 159.0 175 | 160.0 176 | 161.0 177 | 162.0 178 | 163.0 179 | 164.0 180 | 164.0 181 | 165.0 182 | 166.0 183 | 167.0 184 | 168.0 185 | 169.0 186 | 170.0 187 | 170.0 188 | 171.0 189 | 172.0 190 | 173.0 191 | 174.0 192 | 175.0 193 | 176.0 194 | 177.0 195 | 177.0 196 | 178.0 197 | 179.0 198 | 180.0 199 | 181.0 200 | 182.0 201 | 183.0 202 | 183.0 203 | 184.0 204 | 185.0 205 | 186.0 206 | 187.0 207 | 188.0 208 | 189.0 209 | 189.0 210 | 190.0 211 | 191.0 212 | 192.0 213 | 193.0 214 | 194.0 215 | 195.0 216 | 196.0 217 | 196.0 218 | 197.0 219 | 198.0 220 | 199.0 221 | 200.0 222 | 201.0 223 | 202.0 224 | 202.0 225 | 203.0 226 | 204.0 227 | 205.0 228 | 206.0 229 | 207.0 230 | 208.0 231 | 209.0 232 | 209.0 233 | 210.0 234 | 211.0 235 | 212.0 236 | 213.0 237 | 214.0 238 | 215.0 239 | 215.0 240 | 216.0 241 | 217.0 242 | 218.0 243 | 219.0 244 | 220.0 245 | 221.0 246 | 222.0 247 | 222.0 248 | 223.0 249 | 224.0 250 | 225.0 251 | 226.0 252 | 227.0 253 | 228.0 254 | 228.0 255 | 229.0 256 | 230.0 257 | 231.0 258 | 232.0 259 | 233.0 260 | 234.0 261 | 235.0 262 | 235.0 263 | 236.0 264 | 237.0 265 | 238.0 266 | 239.0 267 | 240.0 268 | 241.0 269 | 241.0 270 | 242.0 271 | 243.0 272 | 244.0 273 | 245.0 274 | 246.0 275 | 247.0 276 | 248.0 277 | 248.0 278 | 249.0 279 | 250.0 280 | 251.0 281 | 252.0 282 | 253.0 283 | 254.0 284 | 254.0 285 | 255.0 286 | 256.0 287 | 257.0 288 | 258.0 289 | 259.0 290 | 260.0 291 | 261.0 292 | 261.0 293 | 262.0 294 | 263.0 295 | 264.0 296 | 265.0 297 | 266.0 298 | 267.0 299 | 267.0 300 | 268.0 301 | 269.0 302 | 270.0 303 | 271.0 304 | 272.0 305 | 273.0 306 | 274.0 307 | 274.0 308 | 275.0 309 | 276.0 310 | 277.0 311 | 278.0 312 | 279.0 313 | 280.0 314 | 281.0 315 | 281.0 316 | 282.0 317 | 283.0 318 | 284.0 319 | 285.0 320 | 286.0 321 | 287.0 322 | 287.0 323 | 288.0 324 | 289.0 325 | 290.0 326 | 291.0 327 | 292.0 328 | 293.0 329 | 294.0 330 | 294.0 331 | 295.0 332 | 296.0 333 | 297.0 334 | 298.0 335 | 299.0 336 | 300.0 337 | 301.0 338 | 301.0 339 | 302.0 340 | 303.0 341 | 304.0 342 | 305.0 343 | 306.0 344 | 307.0 345 | 307.0 346 | 308.0 347 | 309.0 348 | 310.0 349 | 311.0 350 | 312.0 351 | 313.0 352 | 314.0 353 | 314.0 354 | 315.0 355 | 316.0 356 | 317.0 357 | 318.0 358 | 319.0 359 | 320.0 360 | 321.0 361 | 321.0 362 | 322.0 363 | 323.0 364 | 324.0 365 | 325.0 366 | 326.0 367 | 327.0 368 | 328.0 369 | 328.0 370 | 329.0 371 | 330.0 372 | 331.0 373 | 332.0 374 | 333.0 375 | 334.0 376 | 334.0 377 | 335.0 378 | 336.0 379 | 337.0 380 | 338.0 381 | 339.0 382 | 340.0 383 | 341.0 384 | 341.0 385 | 342.0 386 | 343.0 387 | 344.0 388 | 345.0 389 | 346.0 390 | 347.0 391 | 348.0 392 | 348.0 393 | 349.0 394 | 350.0 395 | 351.0 396 | 352.0 397 | 353.0 398 | 354.0 399 | 355.0 400 | 355.0 401 | 356.0 402 | 357.0 403 | 358.0 404 | 359.0 405 | 360.0 406 | 361.0 407 | 362.0 408 | 362.0 409 | 363.0 410 | 364.0 411 | 365.0 412 | 366.0 413 | 367.0 414 | 368.0 415 | 368.0 416 | 369.0 417 | 370.0 418 | 371.0 419 | 372.0 420 | 373.0 421 | 374.0 422 | 375.0 423 | 375.0 424 | 376.0 425 | 377.0 426 | 378.0 427 | 379.0 428 | 380.0 429 | 381.0 430 | 382.0 431 | 382.0 432 | 383.0 433 | 384.0 434 | 385.0 435 | 386.0 436 | 387.0 437 | 388.0 438 | 389.0 439 | 389.0 440 | 390.0 441 | 391.0 442 | 392.0 443 | 393.0 444 | 394.0 445 | 395.0 446 | 396.0 447 | 396.0 448 | 397.0 449 | 398.0 450 | 399.0 451 | 400.0 452 | 401.0 453 | 402.0 454 | 403.0 455 | 403.0 456 | 404.0 457 | 405.0 458 | 406.0 459 | 407.0 460 | 408.0 461 | 409.0 462 | 410.0 463 | 410.0 464 | 411.0 465 | 412.0 466 | 413.0 467 | 414.0 468 | 415.0 469 | 416.0 470 | 417.0 471 | 417.0 472 | 418.0 473 | 419.0 474 | 420.0 475 | 421.0 476 | 422.0 477 | 423.0 478 | 424.0 479 | 424.0 480 | 425.0 481 | 426.0 482 | 427.0 483 | 428.0 484 | 429.0 485 | 430.0 486 | 430.0 487 | 431.0 488 | 432.0 489 | 433.0 490 | 434.0 491 | 435.0 492 | 436.0 493 | 437.0 494 | 437.0 495 | 438.0 496 | 439.0 497 | 440.0 498 | 441.0 499 | 442.0 500 | 443.0 501 | 444.0 502 | 444.0 503 | 445.0 504 | 446.0 505 | 447.0 506 | 448.0 507 | 449.0 508 | 450.0 509 | 451.0 510 | 451.0 511 | 452.0 512 | 453.0 513 | 454.0 514 | 455.0 515 | 456.0 516 | 457.0 517 | 458.0 518 | 458.0 519 | 459.0 520 | 460.0 521 | 461.0 522 | 462.0 523 | 463.0 524 | 464.0 525 | 465.0 526 | 465.0 527 | 466.0 528 | 467.0 529 | 468.0 530 | 469.0 531 | 470.0 532 | 471.0 533 | 472.0 534 | 472.0 535 | 473.0 536 | 474.0 537 | 475.0 538 | 476.0 539 | 477.0 540 | 478.0 541 | 479.0 542 | 479.0 543 | 480.0 544 | 481.0 545 | 482.0 546 | 483.0 547 | 484.0 548 | 485.0 549 | 486.0 550 | 486.0 551 | 487.0 552 | 488.0 553 | 489.0 554 | 490.0 555 | 491.0 556 | 492.0 557 | 493.0 558 | 493.0 559 | 494.0 560 | 495.0 561 | 496.0 562 | 497.0 563 | 498.0 564 | 499.0 565 | 500.0 566 | 500.0 567 | 501.0 568 | 502.0 569 | 503.0 570 | 504.0 571 | 505.0 572 | 506.0 573 | 507.0 574 | 507.0 575 | 508.0 576 | 509.0 577 | 510.0 578 | 511.0 579 | 512.0 580 | 513.0 581 | 514.0 582 | 515.0 583 | 515.0 584 | 516.0 585 | 517.0 586 | 518.0 587 | 519.0 588 | 520.0 589 | 521.0 590 | 522.0 591 | 522.0 592 | 523.0 593 | 524.0 594 | 525.0 595 | 526.0 596 | 527.0 597 | 528.0 598 | 529.0 599 | 529.0 600 | 530.0 601 | 531.0 602 | 532.0 603 | 533.0 604 | 534.0 605 | 535.0 606 | 536.0 607 | 536.0 608 | 537.0 609 | 538.0 610 | 539.0 611 | 540.0 612 | 541.0 613 | 542.0 614 | 543.0 615 | 543.0 616 | 544.0 617 | 545.0 618 | 546.0 619 | 547.0 620 | 548.0 621 | 549.0 622 | 550.0 623 | 550.0 624 | 551.0 625 | 552.0 626 | 553.0 627 | 554.0 628 | 555.0 629 | 556.0 630 | 557.0 631 | 557.0 632 | 558.0 633 | 559.0 634 | 560.0 635 | 561.0 636 | 562.0 637 | 563.0 638 | 564.0 639 | 564.0 640 | 565.0 641 | 566.0 642 | 567.0 643 | 568.0 644 | 569.0 645 | 570.0 646 | 571.0 647 | 571.0 648 | 572.0 649 | 573.0 650 | 574.0 651 | 575.0 652 | 576.0 653 | 577.0 654 | 578.0 655 | 578.0 656 | 579.0 657 | 580.0 658 | 581.0 659 | 582.0 660 | 583.0 661 | 584.0 662 | 585.0 663 | 585.0 664 | 586.0 665 | 587.0 666 | 588.0 667 | 589.0 668 | 590.0 669 | 591.0 670 | 592.0 671 | 593.0 672 | 593.0 673 | 594.0 674 | 595.0 675 | 596.0 676 | 597.0 677 | 598.0 678 | 599.0 679 | 600.0 680 | 600.0 681 | 601.0 682 | 602.0 683 | 603.0 684 | 604.0 685 | 605.0 686 | 606.0 687 | 607.0 688 | 607.0 689 | 608.0 690 | 609.0 691 | 610.0 692 | 611.0 693 | 612.0 694 | 613.0 695 | 614.0 696 | 614.0 697 | 615.0 698 | 616.0 699 | 617.0 700 | 618.0 701 | 619.0 702 | 620.0 703 | 621.0 704 | 621.0 705 | 622.0 706 | 623.0 707 | 624.0 708 | 625.0 709 | 626.0 710 | 627.0 711 | 628.0 712 | 628.0 713 | 629.0 714 | 630.0 715 | 631.0 716 | 632.0 717 | 633.0 718 | 634.0 719 | 635.0 720 | 635.0 721 | 636.0 722 | 637.0 723 | 638.0 724 | 639.0 725 | 640.0 726 | 641.0 727 | 642.0 728 | 643.0 729 | 643.0 730 | 644.0 731 | 645.0 732 | 646.0 733 | 647.0 734 | 648.0 735 | 649.0 736 | 650.0 737 | 650.0 738 | 651.0 739 | 652.0 740 | 653.0 741 | 654.0 742 | 655.0 743 | 656.0 744 | 657.0 745 | 657.0 746 | 658.0 747 | 659.0 748 | 660.0 749 | 661.0 750 | 662.0 751 | 663.0 752 | 664.0 753 | 664.0 754 | 665.0 755 | 666.0 756 | 667.0 757 | 668.0 758 | 669.0 759 | 670.0 760 | 671.0 761 | 671.0 762 | 672.0 763 | 673.0 764 | 674.0 765 | 675.0 766 | 676.0 767 | 677.0 768 | 678.0 769 | 679.0 770 | 679.0 771 | 680.0 772 | 681.0 773 | 682.0 774 | 683.0 775 | 684.0 776 | 685.0 777 | 686.0 778 | 686.0 779 | 687.0 780 | 688.0 781 | 689.0 782 | 690.0 783 | 691.0 784 | 692.0 785 | 693.0 786 | 693.0 787 | 694.0 788 | 695.0 789 | 696.0 790 | 697.0 791 | 698.0 792 | 699.0 793 | 700.0 794 | 700.0 795 | 701.0 796 | 702.0 797 | 703.0 798 | 704.0 799 | 705.0 800 | 706.0 801 | 707.0 802 | 707.0 803 | 708.0 804 | 709.0 805 | 710.0 806 | 711.0 807 | 712.0 808 | 713.0 809 | 714.0 810 | 715.0 811 | 715.0 812 | 716.0 813 | 717.0 814 | 718.0 815 | 719.0 816 | 720.0 817 | 721.0 818 | 722.0 819 | 722.0 820 | 723.0 821 | 724.0 822 | 725.0 823 | 726.0 824 | 727.0 825 | 728.0 826 | 729.0 827 | 729.0 828 | 730.0 829 | 731.0 830 | 732.0 831 | 733.0 832 | 734.0 833 | 735.0 834 | 736.0 835 | 736.0 836 | 737.0 837 | 738.0 838 | 739.0 839 | 740.0 840 | 741.0 841 | 742.0 842 | 743.0 843 | 744.0 844 | 744.0 845 | 745.0 846 | 746.0 847 | 747.0 848 | 748.0 849 | 749.0 850 | 750.0 851 | 751.0 852 | 751.0 853 | 752.0 854 | 753.0 855 | 754.0 856 | 755.0 857 | 756.0 858 | 757.0 859 | 758.0 860 | 758.0 861 | 759.0 862 | 760.0 863 | 761.0 864 | 762.0 865 | 763.0 866 | 764.0 867 | 765.0 868 | 765.0 869 | 766.0 870 | 767.0 871 | 768.0 872 | 769.0 873 | 770.0 874 | 771.0 875 | 772.0 876 | 773.0 877 | 773.0 878 | 774.0 879 | 775.0 880 | 776.0 881 | 777.0 882 | 778.0 883 | 779.0 884 | 780.0 885 | 780.0 886 | 781.0 887 | 782.0 888 | 783.0 889 | 784.0 890 | 785.0 891 | 786.0 892 | 787.0 893 | 787.0 894 | 788.0 895 | 789.0 896 | 790.0 897 | 791.0 898 | 792.0 899 | 793.0 900 | 794.0 901 | 794.0 902 | 795.0 903 | 796.0 904 | 797.0 905 | 798.0 906 | 799.0 907 | 800.0 908 | 801.0 909 | 802.0 910 | 802.0 911 | 803.0 912 | 804.0 913 | 805.0 914 | 806.0 915 | 807.0 916 | 808.0 917 | 809.0 918 | 809.0 919 | 810.0 920 | 811.0 921 | 812.0 922 | 813.0 923 | 814.0 924 | 815.0 925 | 816.0 926 | 816.0 927 | 817.0 928 | 818.0 929 | 819.0 930 | 820.0 931 | 821.0 932 | 822.0 933 | 823.0 934 | 823.0 935 | 824.0 936 | 825.0 937 | 826.0 938 | 827.0 939 | 828.0 940 | 829.0 941 | 830.0 942 | 831.0 943 | 831.0 944 | 832.0 945 | 833.0 946 | 834.0 947 | 835.0 948 | 836.0 949 | 837.0 950 | 838.0 951 | 838.0 952 | 839.0 953 | 840.0 954 | 841.0 955 | 842.0 956 | 843.0 957 | 844.0 958 | 845.0 959 | 845.0 960 | 846.0 961 | 847.0 962 | 848.0 963 | 849.0 964 | 850.0 965 | 851.0 966 | 852.0 967 | 853.0 968 | 853.0 969 | 854.0 970 | 855.0 971 | 856.0 972 | 857.0 973 | 858.0 974 | 859.0 975 | 860.0 976 | 860.0 977 | 861.0 978 | 862.0 979 | 863.0 980 | 864.0 981 | 865.0 982 | 866.0 983 | 867.0 984 | 867.0 985 | 868.0 986 | 869.0 987 | 870.0 988 | 871.0 989 | 872.0 990 | 873.0 991 | 874.0 992 | 875.0 993 | 875.0 994 | 876.0 995 | 877.0 996 | 878.0 997 | 879.0 998 | 880.0 999 | 881.0 1000 | 882.0 1001 | 882.0 1002 | 883.0 1003 | 884.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 66.0 67 | 67.0 68 | 68.0 69 | 68.0 70 | 69.0 71 | 70.0 72 | 71.0 73 | 72.0 74 | 73.0 75 | 74.0 76 | 74.0 77 | 75.0 78 | 76.0 79 | 77.0 80 | 78.0 81 | 79.0 82 | 80.0 83 | 81.0 84 | 81.0 85 | 82.0 86 | 83.0 87 | 84.0 88 | 85.0 89 | 86.0 90 | 87.0 91 | 87.0 92 | 88.0 93 | 89.0 94 | 90.0 95 | 91.0 96 | 92.0 97 | 93.0 98 | 94.0 99 | 94.0 100 | 95.0 101 | 96.0 102 | 97.0 103 | 98.0 104 | 99.0 105 | 100.0 106 | 101.0 107 | 101.0 108 | 102.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 107.0 114 | 107.0 115 | 108.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 114.0 123 | 115.0 124 | 116.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 121.0 131 | 122.0 132 | 123.0 133 | 124.0 134 | 125.0 135 | 126.0 136 | 127.0 137 | 128.0 138 | 128.0 139 | 129.0 140 | 130.0 141 | 131.0 142 | 132.0 143 | 133.0 144 | 134.0 145 | 135.0 146 | 135.0 147 | 136.0 148 | 137.0 149 | 138.0 150 | 139.0 151 | 140.0 152 | 141.0 153 | 142.0 154 | 142.0 155 | 143.0 156 | 144.0 157 | 145.0 158 | 146.0 159 | 147.0 160 | 148.0 161 | 149.0 162 | 149.0 163 | 150.0 164 | 151.0 165 | 152.0 166 | 153.0 167 | 154.0 168 | 155.0 169 | 156.0 170 | 156.0 171 | 157.0 172 | 158.0 173 | 159.0 174 | 160.0 175 | 161.0 176 | 162.0 177 | 163.0 178 | 163.0 179 | 164.0 180 | 165.0 181 | 166.0 182 | 167.0 183 | 168.0 184 | 169.0 185 | 170.0 186 | 170.0 187 | 171.0 188 | 172.0 189 | 173.0 190 | 174.0 191 | 175.0 192 | 176.0 193 | 177.0 194 | 177.0 195 | 178.0 196 | 179.0 197 | 180.0 198 | 181.0 199 | 182.0 200 | 183.0 201 | 184.0 202 | 184.0 203 | 185.0 204 | 186.0 205 | 187.0 206 | 188.0 207 | 189.0 208 | 190.0 209 | 191.0 210 | 191.0 211 | 192.0 212 | 193.0 213 | 194.0 214 | 195.0 215 | 196.0 216 | 197.0 217 | 198.0 218 | 199.0 219 | 199.0 220 | 200.0 221 | 201.0 222 | 202.0 223 | 203.0 224 | 204.0 225 | 205.0 226 | 206.0 227 | 206.0 228 | 207.0 229 | 208.0 230 | 209.0 231 | 210.0 232 | 211.0 233 | 212.0 234 | 213.0 235 | 213.0 236 | 214.0 237 | 215.0 238 | 216.0 239 | 217.0 240 | 218.0 241 | 219.0 242 | 220.0 243 | 221.0 244 | 221.0 245 | 222.0 246 | 223.0 247 | 224.0 248 | 225.0 249 | 226.0 250 | 227.0 251 | 228.0 252 | 228.0 253 | 229.0 254 | 230.0 255 | 231.0 256 | 232.0 257 | 233.0 258 | 234.0 259 | 235.0 260 | 236.0 261 | 236.0 262 | 237.0 263 | 238.0 264 | 239.0 265 | 240.0 266 | 241.0 267 | 242.0 268 | 243.0 269 | 243.0 270 | 244.0 271 | 245.0 272 | 246.0 273 | 247.0 274 | 248.0 275 | 249.0 276 | 250.0 277 | 251.0 278 | 251.0 279 | 252.0 280 | 253.0 281 | 254.0 282 | 255.0 283 | 256.0 284 | 257.0 285 | 258.0 286 | 258.0 287 | 259.0 288 | 260.0 289 | 261.0 290 | 262.0 291 | 263.0 292 | 264.0 293 | 265.0 294 | 266.0 295 | 266.0 296 | 267.0 297 | 268.0 298 | 269.0 299 | 270.0 300 | 271.0 301 | 272.0 302 | 273.0 303 | 274.0 304 | 274.0 305 | 275.0 306 | 276.0 307 | 277.0 308 | 278.0 309 | 279.0 310 | 280.0 311 | 281.0 312 | 281.0 313 | 282.0 314 | 283.0 315 | 284.0 316 | 285.0 317 | 286.0 318 | 287.0 319 | 288.0 320 | 289.0 321 | 289.0 322 | 290.0 323 | 291.0 324 | 292.0 325 | 293.0 326 | 294.0 327 | 295.0 328 | 296.0 329 | 297.0 330 | 297.0 331 | 298.0 332 | 299.0 333 | 300.0 334 | 301.0 335 | 302.0 336 | 303.0 337 | 304.0 338 | 304.0 339 | 305.0 340 | 306.0 341 | 307.0 342 | 308.0 343 | 309.0 344 | 310.0 345 | 311.0 346 | 312.0 347 | 312.0 348 | 313.0 349 | 314.0 350 | 315.0 351 | 316.0 352 | 317.0 353 | 318.0 354 | 319.0 355 | 320.0 356 | 320.0 357 | 321.0 358 | 322.0 359 | 323.0 360 | 324.0 361 | 325.0 362 | 326.0 363 | 327.0 364 | 328.0 365 | 328.0 366 | 329.0 367 | 330.0 368 | 331.0 369 | 332.0 370 | 333.0 371 | 334.0 372 | 335.0 373 | 336.0 374 | 336.0 375 | 337.0 376 | 338.0 377 | 339.0 378 | 340.0 379 | 341.0 380 | 342.0 381 | 343.0 382 | 343.0 383 | 344.0 384 | 345.0 385 | 346.0 386 | 347.0 387 | 348.0 388 | 349.0 389 | 350.0 390 | 351.0 391 | 351.0 392 | 352.0 393 | 353.0 394 | 354.0 395 | 355.0 396 | 356.0 397 | 357.0 398 | 358.0 399 | 359.0 400 | 359.0 401 | 360.0 402 | 361.0 403 | 362.0 404 | 363.0 405 | 364.0 406 | 365.0 407 | 366.0 408 | 367.0 409 | 367.0 410 | 368.0 411 | 369.0 412 | 370.0 413 | 371.0 414 | 372.0 415 | 373.0 416 | 374.0 417 | 375.0 418 | 375.0 419 | 376.0 420 | 377.0 421 | 378.0 422 | 379.0 423 | 380.0 424 | 381.0 425 | 382.0 426 | 383.0 427 | 383.0 428 | 384.0 429 | 385.0 430 | 386.0 431 | 387.0 432 | 388.0 433 | 389.0 434 | 390.0 435 | 391.0 436 | 391.0 437 | 392.0 438 | 393.0 439 | 394.0 440 | 395.0 441 | 396.0 442 | 397.0 443 | 398.0 444 | 399.0 445 | 399.0 446 | 400.0 447 | 401.0 448 | 402.0 449 | 403.0 450 | 404.0 451 | 405.0 452 | 406.0 453 | 407.0 454 | 407.0 455 | 408.0 456 | 409.0 457 | 410.0 458 | 411.0 459 | 412.0 460 | 413.0 461 | 414.0 462 | 415.0 463 | 415.0 464 | 416.0 465 | 417.0 466 | 418.0 467 | 419.0 468 | 420.0 469 | 421.0 470 | 422.0 471 | 423.0 472 | 423.0 473 | 424.0 474 | 425.0 475 | 426.0 476 | 427.0 477 | 428.0 478 | 429.0 479 | 430.0 480 | 431.0 481 | 431.0 482 | 432.0 483 | 433.0 484 | 434.0 485 | 435.0 486 | 436.0 487 | 437.0 488 | 438.0 489 | 439.0 490 | 439.0 491 | 440.0 492 | 441.0 493 | 442.0 494 | 443.0 495 | 444.0 496 | 445.0 497 | 446.0 498 | 447.0 499 | 447.0 500 | 448.0 501 | 449.0 502 | 450.0 503 | 451.0 504 | 452.0 505 | 453.0 506 | 454.0 507 | 455.0 508 | 455.0 509 | 456.0 510 | 457.0 511 | 458.0 512 | 459.0 513 | 460.0 514 | 461.0 515 | 462.0 516 | 463.0 517 | 463.0 518 | 464.0 519 | 465.0 520 | 466.0 521 | 467.0 522 | 468.0 523 | 469.0 524 | 470.0 525 | 471.0 526 | 471.0 527 | 472.0 528 | 473.0 529 | 474.0 530 | 475.0 531 | 476.0 532 | 477.0 533 | 478.0 534 | 479.0 535 | 479.0 536 | 480.0 537 | 481.0 538 | 482.0 539 | 483.0 540 | 484.0 541 | 485.0 542 | 486.0 543 | 487.0 544 | 487.0 545 | 488.0 546 | 489.0 547 | 490.0 548 | 491.0 549 | 492.0 550 | 493.0 551 | 494.0 552 | 495.0 553 | 496.0 554 | 496.0 555 | 497.0 556 | 498.0 557 | 499.0 558 | 500.0 559 | 501.0 560 | 502.0 561 | 503.0 562 | 504.0 563 | 504.0 564 | 505.0 565 | 506.0 566 | 507.0 567 | 508.0 568 | 509.0 569 | 510.0 570 | 511.0 571 | 512.0 572 | 512.0 573 | 513.0 574 | 514.0 575 | 515.0 576 | 516.0 577 | 517.0 578 | 518.0 579 | 519.0 580 | 520.0 581 | 520.0 582 | 521.0 583 | 522.0 584 | 523.0 585 | 524.0 586 | 525.0 587 | 526.0 588 | 527.0 589 | 528.0 590 | 528.0 591 | 529.0 592 | 530.0 593 | 531.0 594 | 532.0 595 | 533.0 596 | 534.0 597 | 535.0 598 | 536.0 599 | 536.0 600 | 537.0 601 | 538.0 602 | 539.0 603 | 540.0 604 | 541.0 605 | 542.0 606 | 543.0 607 | 544.0 608 | 545.0 609 | 545.0 610 | 546.0 611 | 547.0 612 | 548.0 613 | 549.0 614 | 550.0 615 | 551.0 616 | 552.0 617 | 553.0 618 | 553.0 619 | 554.0 620 | 555.0 621 | 556.0 622 | 557.0 623 | 558.0 624 | 559.0 625 | 560.0 626 | 561.0 627 | 561.0 628 | 562.0 629 | 563.0 630 | 564.0 631 | 565.0 632 | 566.0 633 | 567.0 634 | 568.0 635 | 569.0 636 | 569.0 637 | 570.0 638 | 571.0 639 | 572.0 640 | 573.0 641 | 574.0 642 | 575.0 643 | 576.0 644 | 577.0 645 | 578.0 646 | 578.0 647 | 579.0 648 | 580.0 649 | 581.0 650 | 582.0 651 | 583.0 652 | 584.0 653 | 585.0 654 | 586.0 655 | 586.0 656 | 587.0 657 | 588.0 658 | 589.0 659 | 590.0 660 | 591.0 661 | 592.0 662 | 593.0 663 | 594.0 664 | 594.0 665 | 595.0 666 | 596.0 667 | 597.0 668 | 598.0 669 | 599.0 670 | 600.0 671 | 601.0 672 | 602.0 673 | 602.0 674 | 603.0 675 | 604.0 676 | 605.0 677 | 606.0 678 | 607.0 679 | 608.0 680 | 609.0 681 | 610.0 682 | 611.0 683 | 611.0 684 | 612.0 685 | 613.0 686 | 614.0 687 | 615.0 688 | 616.0 689 | 617.0 690 | 618.0 691 | 619.0 692 | 619.0 693 | 620.0 694 | 621.0 695 | 622.0 696 | 623.0 697 | 624.0 698 | 625.0 699 | 626.0 700 | 627.0 701 | 627.0 702 | 628.0 703 | 629.0 704 | 630.0 705 | 631.0 706 | 632.0 707 | 633.0 708 | 634.0 709 | 635.0 710 | 636.0 711 | 636.0 712 | 637.0 713 | 638.0 714 | 639.0 715 | 640.0 716 | 641.0 717 | 642.0 718 | 643.0 719 | 644.0 720 | 644.0 721 | 645.0 722 | 646.0 723 | 647.0 724 | 648.0 725 | 649.0 726 | 650.0 727 | 651.0 728 | 652.0 729 | 652.0 730 | 653.0 731 | 654.0 732 | 655.0 733 | 656.0 734 | 657.0 735 | 658.0 736 | 659.0 737 | 660.0 738 | 661.0 739 | 661.0 740 | 662.0 741 | 663.0 742 | 664.0 743 | 665.0 744 | 666.0 745 | 667.0 746 | 668.0 747 | 669.0 748 | 669.0 749 | 670.0 750 | 671.0 751 | 672.0 752 | 673.0 753 | 674.0 754 | 675.0 755 | 676.0 756 | 677.0 757 | 677.0 758 | 678.0 759 | 679.0 760 | 680.0 761 | 681.0 762 | 682.0 763 | 683.0 764 | 684.0 765 | 685.0 766 | 686.0 767 | 686.0 768 | 687.0 769 | 688.0 770 | 689.0 771 | 690.0 772 | 691.0 773 | 692.0 774 | 693.0 775 | 694.0 776 | 694.0 777 | 695.0 778 | 696.0 779 | 697.0 780 | 698.0 781 | 699.0 782 | 700.0 783 | 701.0 784 | 702.0 785 | 702.0 786 | 703.0 787 | 704.0 788 | 705.0 789 | 706.0 790 | 707.0 791 | 708.0 792 | 709.0 793 | 710.0 794 | 711.0 795 | 711.0 796 | 712.0 797 | 713.0 798 | 714.0 799 | 715.0 800 | 716.0 801 | 717.0 802 | 718.0 803 | 719.0 804 | 719.0 805 | 720.0 806 | 721.0 807 | 722.0 808 | 723.0 809 | 724.0 810 | 725.0 811 | 726.0 812 | 727.0 813 | 728.0 814 | 728.0 815 | 729.0 816 | 730.0 817 | 731.0 818 | 732.0 819 | 733.0 820 | 734.0 821 | 735.0 822 | 736.0 823 | 736.0 824 | 737.0 825 | 738.0 826 | 739.0 827 | 740.0 828 | 741.0 829 | 742.0 830 | 743.0 831 | 744.0 832 | 744.0 833 | 745.0 834 | 746.0 835 | 747.0 836 | 748.0 837 | 749.0 838 | 750.0 839 | 751.0 840 | 752.0 841 | 753.0 842 | 753.0 843 | 754.0 844 | 755.0 845 | 756.0 846 | 757.0 847 | 758.0 848 | 759.0 849 | 760.0 850 | 761.0 851 | 761.0 852 | 762.0 853 | 763.0 854 | 764.0 855 | 765.0 856 | 766.0 857 | 767.0 858 | 768.0 859 | 769.0 860 | 770.0 861 | 770.0 862 | 771.0 863 | 772.0 864 | 773.0 865 | 774.0 866 | 775.0 867 | 776.0 868 | 777.0 869 | 778.0 870 | 778.0 871 | 779.0 872 | 780.0 873 | 781.0 874 | 782.0 875 | 783.0 876 | 784.0 877 | 785.0 878 | 786.0 879 | 786.0 880 | 787.0 881 | 788.0 882 | 789.0 883 | 790.0 884 | 791.0 885 | 792.0 886 | 793.0 887 | 794.0 888 | 795.0 889 | 795.0 890 | 796.0 891 | 797.0 892 | 798.0 893 | 799.0 894 | 800.0 895 | 801.0 896 | 802.0 897 | 803.0 898 | 803.0 899 | 804.0 900 | 805.0 901 | 806.0 902 | 807.0 903 | 808.0 904 | 809.0 905 | 810.0 906 | 811.0 907 | 812.0 908 | 812.0 909 | 813.0 910 | 814.0 911 | 815.0 912 | 816.0 913 | 817.0 914 | 818.0 915 | 819.0 916 | 820.0 917 | 820.0 918 | 821.0 919 | 822.0 920 | 823.0 921 | 824.0 922 | 825.0 923 | 826.0 924 | 827.0 925 | 828.0 926 | 829.0 927 | 829.0 928 | 830.0 929 | 831.0 930 | 832.0 931 | 833.0 932 | 834.0 933 | 835.0 934 | 836.0 935 | 837.0 936 | 837.0 937 | 838.0 938 | 839.0 939 | 840.0 940 | 841.0 941 | 842.0 942 | 843.0 943 | 844.0 944 | 845.0 945 | 846.0 946 | 846.0 947 | 847.0 948 | 848.0 949 | 849.0 950 | 850.0 951 | 851.0 952 | 852.0 953 | 853.0 954 | 854.0 955 | 854.0 956 | 855.0 957 | 856.0 958 | 857.0 959 | 858.0 960 | 859.0 961 | 860.0 962 | 861.0 963 | 862.0 964 | 863.0 965 | 863.0 966 | 864.0 967 | 865.0 968 | 866.0 969 | 867.0 970 | 868.0 971 | 869.0 972 | 870.0 973 | 871.0 974 | 871.0 975 | 872.0 976 | 873.0 977 | 874.0 978 | 875.0 979 | 876.0 980 | 877.0 981 | 878.0 982 | 879.0 983 | 880.0 984 | 880.0 985 | 881.0 986 | 882.0 987 | 883.0 988 | 884.0 989 | 885.0 990 | 886.0 991 | 887.0 992 | 888.0 993 | 888.0 994 | 889.0 995 | 890.0 996 | 891.0 997 | 892.0 998 | 893.0 999 | 894.0 1000 | 895.0 1001 | 896.0 1002 | 897.0 1003 | 897.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_2dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 66.0 67 | 67.0 68 | 68.0 69 | 68.0 70 | 69.0 71 | 70.0 72 | 71.0 73 | 71.0 74 | 72.0 75 | 73.0 76 | 74.0 77 | 75.0 78 | 76.0 79 | 77.0 80 | 78.0 81 | 78.0 82 | 79.0 83 | 80.0 84 | 81.0 85 | 82.0 86 | 83.0 87 | 84.0 88 | 85.0 89 | 85.0 90 | 86.0 91 | 87.0 92 | 88.0 93 | 89.0 94 | 90.0 95 | 91.0 96 | 92.0 97 | 92.0 98 | 93.0 99 | 94.0 100 | 95.0 101 | 96.0 102 | 97.0 103 | 98.0 104 | 99.0 105 | 99.0 106 | 100.0 107 | 101.0 108 | 102.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 107.0 114 | 107.0 115 | 108.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 114.0 123 | 115.0 124 | 116.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 122.0 131 | 122.0 132 | 123.0 133 | 124.0 134 | 125.0 135 | 126.0 136 | 127.0 137 | 128.0 138 | 129.0 139 | 129.0 140 | 130.0 141 | 131.0 142 | 132.0 143 | 133.0 144 | 134.0 145 | 135.0 146 | 136.0 147 | 137.0 148 | 137.0 149 | 138.0 150 | 139.0 151 | 140.0 152 | 141.0 153 | 142.0 154 | 143.0 155 | 144.0 156 | 145.0 157 | 145.0 158 | 146.0 159 | 147.0 160 | 148.0 161 | 149.0 162 | 150.0 163 | 151.0 164 | 152.0 165 | 153.0 166 | 153.0 167 | 154.0 168 | 155.0 169 | 156.0 170 | 157.0 171 | 158.0 172 | 159.0 173 | 160.0 174 | 161.0 175 | 161.0 176 | 162.0 177 | 163.0 178 | 164.0 179 | 165.0 180 | 166.0 181 | 167.0 182 | 168.0 183 | 169.0 184 | 169.0 185 | 170.0 186 | 171.0 187 | 172.0 188 | 173.0 189 | 174.0 190 | 175.0 191 | 176.0 192 | 177.0 193 | 177.0 194 | 178.0 195 | 179.0 196 | 180.0 197 | 181.0 198 | 182.0 199 | 183.0 200 | 184.0 201 | 185.0 202 | 185.0 203 | 186.0 204 | 187.0 205 | 188.0 206 | 189.0 207 | 190.0 208 | 191.0 209 | 192.0 210 | 193.0 211 | 193.0 212 | 194.0 213 | 195.0 214 | 196.0 215 | 197.0 216 | 198.0 217 | 199.0 218 | 200.0 219 | 201.0 220 | 201.0 221 | 202.0 222 | 203.0 223 | 204.0 224 | 205.0 225 | 206.0 226 | 207.0 227 | 208.0 228 | 209.0 229 | 210.0 230 | 210.0 231 | 211.0 232 | 212.0 233 | 213.0 234 | 214.0 235 | 215.0 236 | 216.0 237 | 217.0 238 | 218.0 239 | 218.0 240 | 219.0 241 | 220.0 242 | 221.0 243 | 222.0 244 | 223.0 245 | 224.0 246 | 225.0 247 | 226.0 248 | 226.0 249 | 227.0 250 | 228.0 251 | 229.0 252 | 230.0 253 | 231.0 254 | 232.0 255 | 233.0 256 | 234.0 257 | 235.0 258 | 235.0 259 | 236.0 260 | 237.0 261 | 238.0 262 | 239.0 263 | 240.0 264 | 241.0 265 | 242.0 266 | 243.0 267 | 243.0 268 | 244.0 269 | 245.0 270 | 246.0 271 | 247.0 272 | 248.0 273 | 249.0 274 | 250.0 275 | 251.0 276 | 252.0 277 | 252.0 278 | 253.0 279 | 254.0 280 | 255.0 281 | 256.0 282 | 257.0 283 | 258.0 284 | 259.0 285 | 260.0 286 | 260.0 287 | 261.0 288 | 262.0 289 | 263.0 290 | 264.0 291 | 265.0 292 | 266.0 293 | 267.0 294 | 268.0 295 | 269.0 296 | 269.0 297 | 270.0 298 | 271.0 299 | 272.0 300 | 273.0 301 | 274.0 302 | 275.0 303 | 276.0 304 | 277.0 305 | 278.0 306 | 278.0 307 | 279.0 308 | 280.0 309 | 281.0 310 | 282.0 311 | 283.0 312 | 284.0 313 | 285.0 314 | 286.0 315 | 286.0 316 | 287.0 317 | 288.0 318 | 289.0 319 | 290.0 320 | 291.0 321 | 292.0 322 | 293.0 323 | 294.0 324 | 295.0 325 | 295.0 326 | 296.0 327 | 297.0 328 | 298.0 329 | 299.0 330 | 300.0 331 | 301.0 332 | 302.0 333 | 303.0 334 | 304.0 335 | 304.0 336 | 305.0 337 | 306.0 338 | 307.0 339 | 308.0 340 | 309.0 341 | 310.0 342 | 311.0 343 | 312.0 344 | 313.0 345 | 313.0 346 | 314.0 347 | 315.0 348 | 316.0 349 | 317.0 350 | 318.0 351 | 319.0 352 | 320.0 353 | 321.0 354 | 321.0 355 | 322.0 356 | 323.0 357 | 324.0 358 | 325.0 359 | 326.0 360 | 327.0 361 | 328.0 362 | 329.0 363 | 330.0 364 | 330.0 365 | 331.0 366 | 332.0 367 | 333.0 368 | 334.0 369 | 335.0 370 | 336.0 371 | 337.0 372 | 338.0 373 | 339.0 374 | 339.0 375 | 340.0 376 | 341.0 377 | 342.0 378 | 343.0 379 | 344.0 380 | 345.0 381 | 346.0 382 | 347.0 383 | 348.0 384 | 348.0 385 | 349.0 386 | 350.0 387 | 351.0 388 | 352.0 389 | 353.0 390 | 354.0 391 | 355.0 392 | 356.0 393 | 357.0 394 | 357.0 395 | 358.0 396 | 359.0 397 | 360.0 398 | 361.0 399 | 362.0 400 | 363.0 401 | 364.0 402 | 365.0 403 | 366.0 404 | 366.0 405 | 367.0 406 | 368.0 407 | 369.0 408 | 370.0 409 | 371.0 410 | 372.0 411 | 373.0 412 | 374.0 413 | 375.0 414 | 375.0 415 | 376.0 416 | 377.0 417 | 378.0 418 | 379.0 419 | 380.0 420 | 381.0 421 | 382.0 422 | 383.0 423 | 384.0 424 | 384.0 425 | 385.0 426 | 386.0 427 | 387.0 428 | 388.0 429 | 389.0 430 | 390.0 431 | 391.0 432 | 392.0 433 | 393.0 434 | 393.0 435 | 394.0 436 | 395.0 437 | 396.0 438 | 397.0 439 | 398.0 440 | 399.0 441 | 400.0 442 | 401.0 443 | 402.0 444 | 402.0 445 | 403.0 446 | 404.0 447 | 405.0 448 | 406.0 449 | 407.0 450 | 408.0 451 | 409.0 452 | 410.0 453 | 411.0 454 | 411.0 455 | 412.0 456 | 413.0 457 | 414.0 458 | 415.0 459 | 416.0 460 | 417.0 461 | 418.0 462 | 419.0 463 | 420.0 464 | 420.0 465 | 421.0 466 | 422.0 467 | 423.0 468 | 424.0 469 | 425.0 470 | 426.0 471 | 427.0 472 | 428.0 473 | 429.0 474 | 429.0 475 | 430.0 476 | 431.0 477 | 432.0 478 | 433.0 479 | 434.0 480 | 435.0 481 | 436.0 482 | 437.0 483 | 438.0 484 | 439.0 485 | 439.0 486 | 440.0 487 | 441.0 488 | 442.0 489 | 443.0 490 | 444.0 491 | 445.0 492 | 446.0 493 | 447.0 494 | 448.0 495 | 448.0 496 | 449.0 497 | 450.0 498 | 451.0 499 | 452.0 500 | 453.0 501 | 454.0 502 | 455.0 503 | 456.0 504 | 457.0 505 | 457.0 506 | 458.0 507 | 459.0 508 | 460.0 509 | 461.0 510 | 462.0 511 | 463.0 512 | 464.0 513 | 465.0 514 | 466.0 515 | 466.0 516 | 467.0 517 | 468.0 518 | 469.0 519 | 470.0 520 | 471.0 521 | 472.0 522 | 473.0 523 | 474.0 524 | 475.0 525 | 475.0 526 | 476.0 527 | 477.0 528 | 478.0 529 | 479.0 530 | 480.0 531 | 481.0 532 | 482.0 533 | 483.0 534 | 484.0 535 | 485.0 536 | 485.0 537 | 486.0 538 | 487.0 539 | 488.0 540 | 489.0 541 | 490.0 542 | 491.0 543 | 492.0 544 | 493.0 545 | 494.0 546 | 494.0 547 | 495.0 548 | 496.0 549 | 497.0 550 | 498.0 551 | 499.0 552 | 500.0 553 | 501.0 554 | 502.0 555 | 503.0 556 | 503.0 557 | 504.0 558 | 505.0 559 | 506.0 560 | 507.0 561 | 508.0 562 | 509.0 563 | 510.0 564 | 511.0 565 | 512.0 566 | 512.0 567 | 513.0 568 | 514.0 569 | 515.0 570 | 516.0 571 | 517.0 572 | 518.0 573 | 519.0 574 | 520.0 575 | 521.0 576 | 522.0 577 | 522.0 578 | 523.0 579 | 524.0 580 | 525.0 581 | 526.0 582 | 527.0 583 | 528.0 584 | 529.0 585 | 530.0 586 | 531.0 587 | 531.0 588 | 532.0 589 | 533.0 590 | 534.0 591 | 535.0 592 | 536.0 593 | 537.0 594 | 538.0 595 | 539.0 596 | 540.0 597 | 540.0 598 | 541.0 599 | 542.0 600 | 543.0 601 | 544.0 602 | 545.0 603 | 546.0 604 | 547.0 605 | 548.0 606 | 549.0 607 | 550.0 608 | 550.0 609 | 551.0 610 | 552.0 611 | 553.0 612 | 554.0 613 | 555.0 614 | 556.0 615 | 557.0 616 | 558.0 617 | 559.0 618 | 559.0 619 | 560.0 620 | 561.0 621 | 562.0 622 | 563.0 623 | 564.0 624 | 565.0 625 | 566.0 626 | 567.0 627 | 568.0 628 | 569.0 629 | 569.0 630 | 570.0 631 | 571.0 632 | 572.0 633 | 573.0 634 | 574.0 635 | 575.0 636 | 576.0 637 | 577.0 638 | 578.0 639 | 578.0 640 | 579.0 641 | 580.0 642 | 581.0 643 | 582.0 644 | 583.0 645 | 584.0 646 | 585.0 647 | 586.0 648 | 587.0 649 | 587.0 650 | 588.0 651 | 589.0 652 | 590.0 653 | 591.0 654 | 592.0 655 | 593.0 656 | 594.0 657 | 595.0 658 | 596.0 659 | 597.0 660 | 597.0 661 | 598.0 662 | 599.0 663 | 600.0 664 | 601.0 665 | 602.0 666 | 603.0 667 | 604.0 668 | 605.0 669 | 606.0 670 | 606.0 671 | 607.0 672 | 608.0 673 | 609.0 674 | 610.0 675 | 611.0 676 | 612.0 677 | 613.0 678 | 614.0 679 | 615.0 680 | 616.0 681 | 616.0 682 | 617.0 683 | 618.0 684 | 619.0 685 | 620.0 686 | 621.0 687 | 622.0 688 | 623.0 689 | 624.0 690 | 625.0 691 | 625.0 692 | 626.0 693 | 627.0 694 | 628.0 695 | 629.0 696 | 630.0 697 | 631.0 698 | 632.0 699 | 633.0 700 | 634.0 701 | 635.0 702 | 635.0 703 | 636.0 704 | 637.0 705 | 638.0 706 | 639.0 707 | 640.0 708 | 641.0 709 | 642.0 710 | 643.0 711 | 644.0 712 | 644.0 713 | 645.0 714 | 646.0 715 | 647.0 716 | 648.0 717 | 649.0 718 | 650.0 719 | 651.0 720 | 652.0 721 | 653.0 722 | 653.0 723 | 654.0 724 | 655.0 725 | 656.0 726 | 657.0 727 | 658.0 728 | 659.0 729 | 660.0 730 | 661.0 731 | 662.0 732 | 663.0 733 | 663.0 734 | 664.0 735 | 665.0 736 | 666.0 737 | 667.0 738 | 668.0 739 | 669.0 740 | 670.0 741 | 671.0 742 | 672.0 743 | 672.0 744 | 673.0 745 | 674.0 746 | 675.0 747 | 676.0 748 | 677.0 749 | 678.0 750 | 679.0 751 | 680.0 752 | 681.0 753 | 682.0 754 | 682.0 755 | 683.0 756 | 684.0 757 | 685.0 758 | 686.0 759 | 687.0 760 | 688.0 761 | 689.0 762 | 690.0 763 | 691.0 764 | 692.0 765 | 692.0 766 | 693.0 767 | 694.0 768 | 695.0 769 | 696.0 770 | 697.0 771 | 698.0 772 | 699.0 773 | 700.0 774 | 701.0 775 | 701.0 776 | 702.0 777 | 703.0 778 | 704.0 779 | 705.0 780 | 706.0 781 | 707.0 782 | 708.0 783 | 709.0 784 | 710.0 785 | 711.0 786 | 711.0 787 | 712.0 788 | 713.0 789 | 714.0 790 | 715.0 791 | 716.0 792 | 717.0 793 | 718.0 794 | 719.0 795 | 720.0 796 | 720.0 797 | 721.0 798 | 722.0 799 | 723.0 800 | 724.0 801 | 725.0 802 | 726.0 803 | 727.0 804 | 728.0 805 | 729.0 806 | 730.0 807 | 730.0 808 | 731.0 809 | 732.0 810 | 733.0 811 | 734.0 812 | 735.0 813 | 736.0 814 | 737.0 815 | 738.0 816 | 739.0 817 | 739.0 818 | 740.0 819 | 741.0 820 | 742.0 821 | 743.0 822 | 744.0 823 | 745.0 824 | 746.0 825 | 747.0 826 | 748.0 827 | 749.0 828 | 749.0 829 | 750.0 830 | 751.0 831 | 752.0 832 | 753.0 833 | 754.0 834 | 755.0 835 | 756.0 836 | 757.0 837 | 758.0 838 | 758.0 839 | 759.0 840 | 760.0 841 | 761.0 842 | 762.0 843 | 763.0 844 | 764.0 845 | 765.0 846 | 766.0 847 | 767.0 848 | 768.0 849 | 768.0 850 | 769.0 851 | 770.0 852 | 771.0 853 | 772.0 854 | 773.0 855 | 774.0 856 | 775.0 857 | 776.0 858 | 777.0 859 | 778.0 860 | 778.0 861 | 779.0 862 | 780.0 863 | 781.0 864 | 782.0 865 | 783.0 866 | 784.0 867 | 785.0 868 | 786.0 869 | 787.0 870 | 787.0 871 | 788.0 872 | 789.0 873 | 790.0 874 | 791.0 875 | 792.0 876 | 793.0 877 | 794.0 878 | 795.0 879 | 796.0 880 | 797.0 881 | 797.0 882 | 798.0 883 | 799.0 884 | 800.0 885 | 801.0 886 | 802.0 887 | 803.0 888 | 804.0 889 | 805.0 890 | 806.0 891 | 806.0 892 | 807.0 893 | 808.0 894 | 809.0 895 | 810.0 896 | 811.0 897 | 812.0 898 | 813.0 899 | 814.0 900 | 815.0 901 | 816.0 902 | 816.0 903 | 817.0 904 | 818.0 905 | 819.0 906 | 820.0 907 | 821.0 908 | 822.0 909 | 823.0 910 | 824.0 911 | 825.0 912 | 826.0 913 | 826.0 914 | 827.0 915 | 828.0 916 | 829.0 917 | 830.0 918 | 831.0 919 | 832.0 920 | 833.0 921 | 834.0 922 | 835.0 923 | 835.0 924 | 836.0 925 | 837.0 926 | 838.0 927 | 839.0 928 | 840.0 929 | 841.0 930 | 842.0 931 | 843.0 932 | 844.0 933 | 845.0 934 | 845.0 935 | 846.0 936 | 847.0 937 | 848.0 938 | 849.0 939 | 850.0 940 | 851.0 941 | 852.0 942 | 853.0 943 | 854.0 944 | 855.0 945 | 855.0 946 | 856.0 947 | 857.0 948 | 858.0 949 | 859.0 950 | 860.0 951 | 861.0 952 | 862.0 953 | 863.0 954 | 864.0 955 | 864.0 956 | 865.0 957 | 866.0 958 | 867.0 959 | 868.0 960 | 869.0 961 | 870.0 962 | 871.0 963 | 872.0 964 | 873.0 965 | 874.0 966 | 874.0 967 | 875.0 968 | 876.0 969 | 877.0 970 | 878.0 971 | 879.0 972 | 880.0 973 | 881.0 974 | 882.0 975 | 883.0 976 | 884.0 977 | 884.0 978 | 885.0 979 | 886.0 980 | 887.0 981 | 888.0 982 | 889.0 983 | 890.0 984 | 891.0 985 | 892.0 986 | 893.0 987 | 893.0 988 | 894.0 989 | 895.0 990 | 896.0 991 | 897.0 992 | 898.0 993 | 899.0 994 | 900.0 995 | 901.0 996 | 902.0 997 | 903.0 998 | 903.0 999 | 904.0 1000 | 905.0 1001 | 906.0 1002 | 907.0 1003 | 908.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 66.0 67 | 67.0 68 | 68.0 69 | 67.0 70 | 68.0 71 | 69.0 72 | 70.0 73 | 71.0 74 | 72.0 75 | 73.0 76 | 74.0 77 | 75.0 78 | 75.0 79 | 76.0 80 | 77.0 81 | 78.0 82 | 79.0 83 | 80.0 84 | 81.0 85 | 82.0 86 | 82.0 87 | 83.0 88 | 84.0 89 | 85.0 90 | 86.0 91 | 87.0 92 | 88.0 93 | 89.0 94 | 90.0 95 | 90.0 96 | 91.0 97 | 92.0 98 | 93.0 99 | 94.0 100 | 95.0 101 | 96.0 102 | 97.0 103 | 98.0 104 | 98.0 105 | 99.0 106 | 100.0 107 | 101.0 108 | 102.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 106.0 114 | 107.0 115 | 108.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 115.0 123 | 115.0 124 | 116.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 122.0 131 | 123.0 132 | 123.0 133 | 124.0 134 | 125.0 135 | 126.0 136 | 127.0 137 | 128.0 138 | 129.0 139 | 130.0 140 | 131.0 141 | 132.0 142 | 132.0 143 | 133.0 144 | 134.0 145 | 135.0 146 | 136.0 147 | 137.0 148 | 138.0 149 | 139.0 150 | 140.0 151 | 140.0 152 | 141.0 153 | 142.0 154 | 143.0 155 | 144.0 156 | 145.0 157 | 146.0 158 | 147.0 159 | 148.0 160 | 149.0 161 | 149.0 162 | 150.0 163 | 151.0 164 | 152.0 165 | 153.0 166 | 154.0 167 | 155.0 168 | 156.0 169 | 157.0 170 | 158.0 171 | 158.0 172 | 159.0 173 | 160.0 174 | 161.0 175 | 162.0 176 | 163.0 177 | 164.0 178 | 165.0 179 | 166.0 180 | 167.0 181 | 167.0 182 | 168.0 183 | 169.0 184 | 170.0 185 | 171.0 186 | 172.0 187 | 173.0 188 | 174.0 189 | 175.0 190 | 175.0 191 | 176.0 192 | 177.0 193 | 178.0 194 | 179.0 195 | 180.0 196 | 181.0 197 | 182.0 198 | 183.0 199 | 184.0 200 | 185.0 201 | 185.0 202 | 186.0 203 | 187.0 204 | 188.0 205 | 189.0 206 | 190.0 207 | 191.0 208 | 192.0 209 | 193.0 210 | 194.0 211 | 194.0 212 | 195.0 213 | 196.0 214 | 197.0 215 | 198.0 216 | 199.0 217 | 200.0 218 | 201.0 219 | 202.0 220 | 203.0 221 | 203.0 222 | 204.0 223 | 205.0 224 | 206.0 225 | 207.0 226 | 208.0 227 | 209.0 228 | 210.0 229 | 211.0 230 | 212.0 231 | 212.0 232 | 213.0 233 | 214.0 234 | 215.0 235 | 216.0 236 | 217.0 237 | 218.0 238 | 219.0 239 | 220.0 240 | 221.0 241 | 221.0 242 | 222.0 243 | 223.0 244 | 224.0 245 | 225.0 246 | 226.0 247 | 227.0 248 | 228.0 249 | 229.0 250 | 230.0 251 | 231.0 252 | 231.0 253 | 232.0 254 | 233.0 255 | 234.0 256 | 235.0 257 | 236.0 258 | 237.0 259 | 238.0 260 | 239.0 261 | 240.0 262 | 240.0 263 | 241.0 264 | 242.0 265 | 243.0 266 | 244.0 267 | 245.0 268 | 246.0 269 | 247.0 270 | 248.0 271 | 249.0 272 | 250.0 273 | 250.0 274 | 251.0 275 | 252.0 276 | 253.0 277 | 254.0 278 | 255.0 279 | 256.0 280 | 257.0 281 | 258.0 282 | 259.0 283 | 259.0 284 | 260.0 285 | 261.0 286 | 262.0 287 | 263.0 288 | 264.0 289 | 265.0 290 | 266.0 291 | 267.0 292 | 268.0 293 | 269.0 294 | 269.0 295 | 270.0 296 | 271.0 297 | 272.0 298 | 273.0 299 | 274.0 300 | 275.0 301 | 276.0 302 | 277.0 303 | 278.0 304 | 279.0 305 | 279.0 306 | 280.0 307 | 281.0 308 | 282.0 309 | 283.0 310 | 284.0 311 | 285.0 312 | 286.0 313 | 287.0 314 | 288.0 315 | 288.0 316 | 289.0 317 | 290.0 318 | 291.0 319 | 292.0 320 | 293.0 321 | 294.0 322 | 295.0 323 | 296.0 324 | 297.0 325 | 298.0 326 | 298.0 327 | 299.0 328 | 300.0 329 | 301.0 330 | 302.0 331 | 303.0 332 | 304.0 333 | 305.0 334 | 306.0 335 | 307.0 336 | 308.0 337 | 308.0 338 | 309.0 339 | 310.0 340 | 311.0 341 | 312.0 342 | 313.0 343 | 314.0 344 | 315.0 345 | 316.0 346 | 317.0 347 | 318.0 348 | 318.0 349 | 319.0 350 | 320.0 351 | 321.0 352 | 322.0 353 | 323.0 354 | 324.0 355 | 325.0 356 | 326.0 357 | 327.0 358 | 328.0 359 | 328.0 360 | 329.0 361 | 330.0 362 | 331.0 363 | 332.0 364 | 333.0 365 | 334.0 366 | 335.0 367 | 336.0 368 | 337.0 369 | 338.0 370 | 338.0 371 | 339.0 372 | 340.0 373 | 341.0 374 | 342.0 375 | 343.0 376 | 344.0 377 | 345.0 378 | 346.0 379 | 347.0 380 | 348.0 381 | 348.0 382 | 349.0 383 | 350.0 384 | 351.0 385 | 352.0 386 | 353.0 387 | 354.0 388 | 355.0 389 | 356.0 390 | 357.0 391 | 358.0 392 | 358.0 393 | 359.0 394 | 360.0 395 | 361.0 396 | 362.0 397 | 363.0 398 | 364.0 399 | 365.0 400 | 366.0 401 | 367.0 402 | 368.0 403 | 368.0 404 | 369.0 405 | 370.0 406 | 371.0 407 | 372.0 408 | 373.0 409 | 374.0 410 | 375.0 411 | 376.0 412 | 377.0 413 | 378.0 414 | 378.0 415 | 379.0 416 | 380.0 417 | 381.0 418 | 382.0 419 | 383.0 420 | 384.0 421 | 385.0 422 | 386.0 423 | 387.0 424 | 388.0 425 | 388.0 426 | 389.0 427 | 390.0 428 | 391.0 429 | 392.0 430 | 393.0 431 | 394.0 432 | 395.0 433 | 396.0 434 | 397.0 435 | 398.0 436 | 398.0 437 | 399.0 438 | 400.0 439 | 401.0 440 | 402.0 441 | 403.0 442 | 404.0 443 | 405.0 444 | 406.0 445 | 407.0 446 | 408.0 447 | 408.0 448 | 409.0 449 | 410.0 450 | 411.0 451 | 412.0 452 | 413.0 453 | 414.0 454 | 415.0 455 | 416.0 456 | 417.0 457 | 418.0 458 | 419.0 459 | 419.0 460 | 420.0 461 | 421.0 462 | 422.0 463 | 423.0 464 | 424.0 465 | 425.0 466 | 426.0 467 | 427.0 468 | 428.0 469 | 429.0 470 | 429.0 471 | 430.0 472 | 431.0 473 | 432.0 474 | 433.0 475 | 434.0 476 | 435.0 477 | 436.0 478 | 437.0 479 | 438.0 480 | 439.0 481 | 439.0 482 | 440.0 483 | 441.0 484 | 442.0 485 | 443.0 486 | 444.0 487 | 445.0 488 | 446.0 489 | 447.0 490 | 448.0 491 | 449.0 492 | 449.0 493 | 450.0 494 | 451.0 495 | 452.0 496 | 453.0 497 | 454.0 498 | 455.0 499 | 456.0 500 | 457.0 501 | 458.0 502 | 459.0 503 | 460.0 504 | 460.0 505 | 461.0 506 | 462.0 507 | 463.0 508 | 464.0 509 | 465.0 510 | 466.0 511 | 467.0 512 | 468.0 513 | 469.0 514 | 470.0 515 | 470.0 516 | 471.0 517 | 472.0 518 | 473.0 519 | 474.0 520 | 475.0 521 | 476.0 522 | 477.0 523 | 478.0 524 | 479.0 525 | 480.0 526 | 480.0 527 | 481.0 528 | 482.0 529 | 483.0 530 | 484.0 531 | 485.0 532 | 486.0 533 | 487.0 534 | 488.0 535 | 489.0 536 | 490.0 537 | 491.0 538 | 491.0 539 | 492.0 540 | 493.0 541 | 494.0 542 | 495.0 543 | 496.0 544 | 497.0 545 | 498.0 546 | 499.0 547 | 500.0 548 | 501.0 549 | 501.0 550 | 502.0 551 | 503.0 552 | 504.0 553 | 505.0 554 | 506.0 555 | 507.0 556 | 508.0 557 | 509.0 558 | 510.0 559 | 511.0 560 | 512.0 561 | 512.0 562 | 513.0 563 | 514.0 564 | 515.0 565 | 516.0 566 | 517.0 567 | 518.0 568 | 519.0 569 | 520.0 570 | 521.0 571 | 522.0 572 | 522.0 573 | 523.0 574 | 524.0 575 | 525.0 576 | 526.0 577 | 527.0 578 | 528.0 579 | 529.0 580 | 530.0 581 | 531.0 582 | 532.0 583 | 533.0 584 | 533.0 585 | 534.0 586 | 535.0 587 | 536.0 588 | 537.0 589 | 538.0 590 | 539.0 591 | 540.0 592 | 541.0 593 | 542.0 594 | 543.0 595 | 543.0 596 | 544.0 597 | 545.0 598 | 546.0 599 | 547.0 600 | 548.0 601 | 549.0 602 | 550.0 603 | 551.0 604 | 552.0 605 | 553.0 606 | 554.0 607 | 554.0 608 | 555.0 609 | 556.0 610 | 557.0 611 | 558.0 612 | 559.0 613 | 560.0 614 | 561.0 615 | 562.0 616 | 563.0 617 | 564.0 618 | 564.0 619 | 565.0 620 | 566.0 621 | 567.0 622 | 568.0 623 | 569.0 624 | 570.0 625 | 571.0 626 | 572.0 627 | 573.0 628 | 574.0 629 | 575.0 630 | 575.0 631 | 576.0 632 | 577.0 633 | 578.0 634 | 579.0 635 | 580.0 636 | 581.0 637 | 582.0 638 | 583.0 639 | 584.0 640 | 585.0 641 | 585.0 642 | 586.0 643 | 587.0 644 | 588.0 645 | 589.0 646 | 590.0 647 | 591.0 648 | 592.0 649 | 593.0 650 | 594.0 651 | 595.0 652 | 596.0 653 | 596.0 654 | 597.0 655 | 598.0 656 | 599.0 657 | 600.0 658 | 601.0 659 | 602.0 660 | 603.0 661 | 604.0 662 | 605.0 663 | 606.0 664 | 606.0 665 | 607.0 666 | 608.0 667 | 609.0 668 | 610.0 669 | 611.0 670 | 612.0 671 | 613.0 672 | 614.0 673 | 615.0 674 | 616.0 675 | 617.0 676 | 617.0 677 | 618.0 678 | 619.0 679 | 620.0 680 | 621.0 681 | 622.0 682 | 623.0 683 | 624.0 684 | 625.0 685 | 626.0 686 | 627.0 687 | 627.0 688 | 628.0 689 | 629.0 690 | 630.0 691 | 631.0 692 | 632.0 693 | 633.0 694 | 634.0 695 | 635.0 696 | 636.0 697 | 637.0 698 | 638.0 699 | 638.0 700 | 639.0 701 | 640.0 702 | 641.0 703 | 642.0 704 | 643.0 705 | 644.0 706 | 645.0 707 | 646.0 708 | 647.0 709 | 648.0 710 | 649.0 711 | 649.0 712 | 650.0 713 | 651.0 714 | 652.0 715 | 653.0 716 | 654.0 717 | 655.0 718 | 656.0 719 | 657.0 720 | 658.0 721 | 659.0 722 | 659.0 723 | 660.0 724 | 661.0 725 | 662.0 726 | 663.0 727 | 664.0 728 | 665.0 729 | 666.0 730 | 667.0 731 | 668.0 732 | 669.0 733 | 670.0 734 | 670.0 735 | 671.0 736 | 672.0 737 | 673.0 738 | 674.0 739 | 675.0 740 | 676.0 741 | 677.0 742 | 678.0 743 | 679.0 744 | 680.0 745 | 681.0 746 | 681.0 747 | 682.0 748 | 683.0 749 | 684.0 750 | 685.0 751 | 686.0 752 | 687.0 753 | 688.0 754 | 689.0 755 | 690.0 756 | 691.0 757 | 691.0 758 | 692.0 759 | 693.0 760 | 694.0 761 | 695.0 762 | 696.0 763 | 697.0 764 | 698.0 765 | 699.0 766 | 700.0 767 | 701.0 768 | 702.0 769 | 702.0 770 | 703.0 771 | 704.0 772 | 705.0 773 | 706.0 774 | 707.0 775 | 708.0 776 | 709.0 777 | 710.0 778 | 711.0 779 | 712.0 780 | 713.0 781 | 713.0 782 | 714.0 783 | 715.0 784 | 716.0 785 | 717.0 786 | 718.0 787 | 719.0 788 | 720.0 789 | 721.0 790 | 722.0 791 | 723.0 792 | 723.0 793 | 724.0 794 | 725.0 795 | 726.0 796 | 727.0 797 | 728.0 798 | 729.0 799 | 730.0 800 | 731.0 801 | 732.0 802 | 733.0 803 | 734.0 804 | 734.0 805 | 735.0 806 | 736.0 807 | 737.0 808 | 738.0 809 | 739.0 810 | 740.0 811 | 741.0 812 | 742.0 813 | 743.0 814 | 744.0 815 | 745.0 816 | 745.0 817 | 746.0 818 | 747.0 819 | 748.0 820 | 749.0 821 | 750.0 822 | 751.0 823 | 752.0 824 | 753.0 825 | 754.0 826 | 755.0 827 | 756.0 828 | 756.0 829 | 757.0 830 | 758.0 831 | 759.0 832 | 760.0 833 | 761.0 834 | 762.0 835 | 763.0 836 | 764.0 837 | 765.0 838 | 766.0 839 | 766.0 840 | 767.0 841 | 768.0 842 | 769.0 843 | 770.0 844 | 771.0 845 | 772.0 846 | 773.0 847 | 774.0 848 | 775.0 849 | 776.0 850 | 777.0 851 | 777.0 852 | 778.0 853 | 779.0 854 | 780.0 855 | 781.0 856 | 782.0 857 | 783.0 858 | 784.0 859 | 785.0 860 | 786.0 861 | 787.0 862 | 788.0 863 | 788.0 864 | 789.0 865 | 790.0 866 | 791.0 867 | 792.0 868 | 793.0 869 | 794.0 870 | 795.0 871 | 796.0 872 | 797.0 873 | 798.0 874 | 799.0 875 | 799.0 876 | 800.0 877 | 801.0 878 | 802.0 879 | 803.0 880 | 804.0 881 | 805.0 882 | 806.0 883 | 807.0 884 | 808.0 885 | 809.0 886 | 810.0 887 | 810.0 888 | 811.0 889 | 812.0 890 | 813.0 891 | 814.0 892 | 815.0 893 | 816.0 894 | 817.0 895 | 818.0 896 | 819.0 897 | 820.0 898 | 820.0 899 | 821.0 900 | 822.0 901 | 823.0 902 | 824.0 903 | 825.0 904 | 826.0 905 | 827.0 906 | 828.0 907 | 829.0 908 | 830.0 909 | 831.0 910 | 831.0 911 | 832.0 912 | 833.0 913 | 834.0 914 | 835.0 915 | 836.0 916 | 837.0 917 | 838.0 918 | 839.0 919 | 840.0 920 | 841.0 921 | 842.0 922 | 842.0 923 | 843.0 924 | 844.0 925 | 845.0 926 | 846.0 927 | 847.0 928 | 848.0 929 | 849.0 930 | 850.0 931 | 851.0 932 | 852.0 933 | 853.0 934 | 853.0 935 | 854.0 936 | 855.0 937 | 856.0 938 | 857.0 939 | 858.0 940 | 859.0 941 | 860.0 942 | 861.0 943 | 862.0 944 | 863.0 945 | 864.0 946 | 864.0 947 | 865.0 948 | 866.0 949 | 867.0 950 | 868.0 951 | 869.0 952 | 870.0 953 | 871.0 954 | 872.0 955 | 873.0 956 | 874.0 957 | 875.0 958 | 875.0 959 | 876.0 960 | 877.0 961 | 878.0 962 | 879.0 963 | 880.0 964 | 881.0 965 | 882.0 966 | 883.0 967 | 884.0 968 | 885.0 969 | 885.0 970 | 886.0 971 | 887.0 972 | 888.0 973 | 889.0 974 | 890.0 975 | 891.0 976 | 892.0 977 | 893.0 978 | 894.0 979 | 895.0 980 | 896.0 981 | 896.0 982 | 897.0 983 | 898.0 984 | 899.0 985 | 900.0 986 | 901.0 987 | 902.0 988 | 903.0 989 | 904.0 990 | 905.0 991 | 906.0 992 | 907.0 993 | 907.0 994 | 908.0 995 | 909.0 996 | 910.0 997 | 911.0 998 | 912.0 999 | 913.0 1000 | 914.0 1001 | 915.0 1002 | 916.0 1003 | 917.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_3dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 66.0 67 | 67.0 68 | 66.0 69 | 67.0 70 | 68.0 71 | 69.0 72 | 70.0 73 | 71.0 74 | 72.0 75 | 72.0 76 | 73.0 77 | 74.0 78 | 75.0 79 | 76.0 80 | 77.0 81 | 78.0 82 | 79.0 83 | 80.0 84 | 81.0 85 | 81.0 86 | 82.0 87 | 83.0 88 | 84.0 89 | 85.0 90 | 86.0 91 | 87.0 92 | 88.0 93 | 89.0 94 | 89.0 95 | 90.0 96 | 91.0 97 | 92.0 98 | 93.0 99 | 94.0 100 | 95.0 101 | 96.0 102 | 97.0 103 | 98.0 104 | 98.0 105 | 99.0 106 | 100.0 107 | 101.0 108 | 102.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 107.0 114 | 107.0 115 | 108.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 115.0 123 | 116.0 124 | 116.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 122.0 131 | 123.0 132 | 124.0 133 | 125.0 134 | 125.0 135 | 126.0 136 | 127.0 137 | 128.0 138 | 129.0 139 | 130.0 140 | 131.0 141 | 132.0 142 | 133.0 143 | 134.0 144 | 134.0 145 | 135.0 146 | 136.0 147 | 137.0 148 | 138.0 149 | 139.0 150 | 140.0 151 | 141.0 152 | 142.0 153 | 143.0 154 | 144.0 155 | 144.0 156 | 145.0 157 | 146.0 158 | 147.0 159 | 148.0 160 | 149.0 161 | 150.0 162 | 151.0 163 | 152.0 164 | 153.0 165 | 154.0 166 | 154.0 167 | 155.0 168 | 156.0 169 | 157.0 170 | 158.0 171 | 159.0 172 | 160.0 173 | 161.0 174 | 162.0 175 | 163.0 176 | 163.0 177 | 164.0 178 | 165.0 179 | 166.0 180 | 167.0 181 | 168.0 182 | 169.0 183 | 170.0 184 | 171.0 185 | 172.0 186 | 173.0 187 | 173.0 188 | 174.0 189 | 175.0 190 | 176.0 191 | 177.0 192 | 178.0 193 | 179.0 194 | 180.0 195 | 181.0 196 | 182.0 197 | 183.0 198 | 183.0 199 | 184.0 200 | 185.0 201 | 186.0 202 | 187.0 203 | 188.0 204 | 189.0 205 | 190.0 206 | 191.0 207 | 192.0 208 | 193.0 209 | 193.0 210 | 194.0 211 | 195.0 212 | 196.0 213 | 197.0 214 | 198.0 215 | 199.0 216 | 200.0 217 | 201.0 218 | 202.0 219 | 203.0 220 | 203.0 221 | 204.0 222 | 205.0 223 | 206.0 224 | 207.0 225 | 208.0 226 | 209.0 227 | 210.0 228 | 211.0 229 | 212.0 230 | 213.0 231 | 214.0 232 | 214.0 233 | 215.0 234 | 216.0 235 | 217.0 236 | 218.0 237 | 219.0 238 | 220.0 239 | 221.0 240 | 222.0 241 | 223.0 242 | 224.0 243 | 224.0 244 | 225.0 245 | 226.0 246 | 227.0 247 | 228.0 248 | 229.0 249 | 230.0 250 | 231.0 251 | 232.0 252 | 233.0 253 | 234.0 254 | 234.0 255 | 235.0 256 | 236.0 257 | 237.0 258 | 238.0 259 | 239.0 260 | 240.0 261 | 241.0 262 | 242.0 263 | 243.0 264 | 244.0 265 | 245.0 266 | 245.0 267 | 246.0 268 | 247.0 269 | 248.0 270 | 249.0 271 | 250.0 272 | 251.0 273 | 252.0 274 | 253.0 275 | 254.0 276 | 255.0 277 | 255.0 278 | 256.0 279 | 257.0 280 | 258.0 281 | 259.0 282 | 260.0 283 | 261.0 284 | 262.0 285 | 263.0 286 | 264.0 287 | 265.0 288 | 266.0 289 | 266.0 290 | 267.0 291 | 268.0 292 | 269.0 293 | 270.0 294 | 271.0 295 | 272.0 296 | 273.0 297 | 274.0 298 | 275.0 299 | 276.0 300 | 277.0 301 | 277.0 302 | 278.0 303 | 279.0 304 | 280.0 305 | 281.0 306 | 282.0 307 | 283.0 308 | 284.0 309 | 285.0 310 | 286.0 311 | 287.0 312 | 287.0 313 | 288.0 314 | 289.0 315 | 290.0 316 | 291.0 317 | 292.0 318 | 293.0 319 | 294.0 320 | 295.0 321 | 296.0 322 | 297.0 323 | 298.0 324 | 298.0 325 | 299.0 326 | 300.0 327 | 301.0 328 | 302.0 329 | 303.0 330 | 304.0 331 | 305.0 332 | 306.0 333 | 307.0 334 | 308.0 335 | 309.0 336 | 309.0 337 | 310.0 338 | 311.0 339 | 312.0 340 | 313.0 341 | 314.0 342 | 315.0 343 | 316.0 344 | 317.0 345 | 318.0 346 | 319.0 347 | 320.0 348 | 320.0 349 | 321.0 350 | 322.0 351 | 323.0 352 | 324.0 353 | 325.0 354 | 326.0 355 | 327.0 356 | 328.0 357 | 329.0 358 | 330.0 359 | 331.0 360 | 331.0 361 | 332.0 362 | 333.0 363 | 334.0 364 | 335.0 365 | 336.0 366 | 337.0 367 | 338.0 368 | 339.0 369 | 340.0 370 | 341.0 371 | 342.0 372 | 342.0 373 | 343.0 374 | 344.0 375 | 345.0 376 | 346.0 377 | 347.0 378 | 348.0 379 | 349.0 380 | 350.0 381 | 351.0 382 | 352.0 383 | 353.0 384 | 353.0 385 | 354.0 386 | 355.0 387 | 356.0 388 | 357.0 389 | 358.0 390 | 359.0 391 | 360.0 392 | 361.0 393 | 362.0 394 | 363.0 395 | 364.0 396 | 364.0 397 | 365.0 398 | 366.0 399 | 367.0 400 | 368.0 401 | 369.0 402 | 370.0 403 | 371.0 404 | 372.0 405 | 373.0 406 | 374.0 407 | 375.0 408 | 376.0 409 | 376.0 410 | 377.0 411 | 378.0 412 | 379.0 413 | 380.0 414 | 381.0 415 | 382.0 416 | 383.0 417 | 384.0 418 | 385.0 419 | 386.0 420 | 387.0 421 | 387.0 422 | 388.0 423 | 389.0 424 | 390.0 425 | 391.0 426 | 392.0 427 | 393.0 428 | 394.0 429 | 395.0 430 | 396.0 431 | 397.0 432 | 398.0 433 | 398.0 434 | 399.0 435 | 400.0 436 | 401.0 437 | 402.0 438 | 403.0 439 | 404.0 440 | 405.0 441 | 406.0 442 | 407.0 443 | 408.0 444 | 409.0 445 | 409.0 446 | 410.0 447 | 411.0 448 | 412.0 449 | 413.0 450 | 414.0 451 | 415.0 452 | 416.0 453 | 417.0 454 | 418.0 455 | 419.0 456 | 420.0 457 | 421.0 458 | 421.0 459 | 422.0 460 | 423.0 461 | 424.0 462 | 425.0 463 | 426.0 464 | 427.0 465 | 428.0 466 | 429.0 467 | 430.0 468 | 431.0 469 | 432.0 470 | 432.0 471 | 433.0 472 | 434.0 473 | 435.0 474 | 436.0 475 | 437.0 476 | 438.0 477 | 439.0 478 | 440.0 479 | 441.0 480 | 442.0 481 | 443.0 482 | 443.0 483 | 444.0 484 | 445.0 485 | 446.0 486 | 447.0 487 | 448.0 488 | 449.0 489 | 450.0 490 | 451.0 491 | 452.0 492 | 453.0 493 | 454.0 494 | 455.0 495 | 455.0 496 | 456.0 497 | 457.0 498 | 458.0 499 | 459.0 500 | 460.0 501 | 461.0 502 | 462.0 503 | 463.0 504 | 464.0 505 | 465.0 506 | 466.0 507 | 466.0 508 | 467.0 509 | 468.0 510 | 469.0 511 | 470.0 512 | 471.0 513 | 472.0 514 | 473.0 515 | 474.0 516 | 475.0 517 | 476.0 518 | 477.0 519 | 478.0 520 | 478.0 521 | 479.0 522 | 480.0 523 | 481.0 524 | 482.0 525 | 483.0 526 | 484.0 527 | 485.0 528 | 486.0 529 | 487.0 530 | 488.0 531 | 489.0 532 | 489.0 533 | 490.0 534 | 491.0 535 | 492.0 536 | 493.0 537 | 494.0 538 | 495.0 539 | 496.0 540 | 497.0 541 | 498.0 542 | 499.0 543 | 500.0 544 | 501.0 545 | 501.0 546 | 502.0 547 | 503.0 548 | 504.0 549 | 505.0 550 | 506.0 551 | 507.0 552 | 508.0 553 | 509.0 554 | 510.0 555 | 511.0 556 | 512.0 557 | 512.0 558 | 513.0 559 | 514.0 560 | 515.0 561 | 516.0 562 | 517.0 563 | 518.0 564 | 519.0 565 | 520.0 566 | 521.0 567 | 522.0 568 | 523.0 569 | 524.0 570 | 524.0 571 | 525.0 572 | 526.0 573 | 527.0 574 | 528.0 575 | 529.0 576 | 530.0 577 | 531.0 578 | 532.0 579 | 533.0 580 | 534.0 581 | 535.0 582 | 535.0 583 | 536.0 584 | 537.0 585 | 538.0 586 | 539.0 587 | 540.0 588 | 541.0 589 | 542.0 590 | 543.0 591 | 544.0 592 | 545.0 593 | 546.0 594 | 547.0 595 | 547.0 596 | 548.0 597 | 549.0 598 | 550.0 599 | 551.0 600 | 552.0 601 | 553.0 602 | 554.0 603 | 555.0 604 | 556.0 605 | 557.0 606 | 558.0 607 | 559.0 608 | 559.0 609 | 560.0 610 | 561.0 611 | 562.0 612 | 563.0 613 | 564.0 614 | 565.0 615 | 566.0 616 | 567.0 617 | 568.0 618 | 569.0 619 | 570.0 620 | 570.0 621 | 571.0 622 | 572.0 623 | 573.0 624 | 574.0 625 | 575.0 626 | 576.0 627 | 577.0 628 | 578.0 629 | 579.0 630 | 580.0 631 | 581.0 632 | 582.0 633 | 582.0 634 | 583.0 635 | 584.0 636 | 585.0 637 | 586.0 638 | 587.0 639 | 588.0 640 | 589.0 641 | 590.0 642 | 591.0 643 | 592.0 644 | 593.0 645 | 594.0 646 | 594.0 647 | 595.0 648 | 596.0 649 | 597.0 650 | 598.0 651 | 599.0 652 | 600.0 653 | 601.0 654 | 602.0 655 | 603.0 656 | 604.0 657 | 605.0 658 | 605.0 659 | 606.0 660 | 607.0 661 | 608.0 662 | 609.0 663 | 610.0 664 | 611.0 665 | 612.0 666 | 613.0 667 | 614.0 668 | 615.0 669 | 616.0 670 | 617.0 671 | 617.0 672 | 618.0 673 | 619.0 674 | 620.0 675 | 621.0 676 | 622.0 677 | 623.0 678 | 624.0 679 | 625.0 680 | 626.0 681 | 627.0 682 | 628.0 683 | 629.0 684 | 629.0 685 | 630.0 686 | 631.0 687 | 632.0 688 | 633.0 689 | 634.0 690 | 635.0 691 | 636.0 692 | 637.0 693 | 638.0 694 | 639.0 695 | 640.0 696 | 641.0 697 | 641.0 698 | 642.0 699 | 643.0 700 | 644.0 701 | 645.0 702 | 646.0 703 | 647.0 704 | 648.0 705 | 649.0 706 | 650.0 707 | 651.0 708 | 652.0 709 | 653.0 710 | 653.0 711 | 654.0 712 | 655.0 713 | 656.0 714 | 657.0 715 | 658.0 716 | 659.0 717 | 660.0 718 | 661.0 719 | 662.0 720 | 663.0 721 | 664.0 722 | 664.0 723 | 665.0 724 | 666.0 725 | 667.0 726 | 668.0 727 | 669.0 728 | 670.0 729 | 671.0 730 | 672.0 731 | 673.0 732 | 674.0 733 | 675.0 734 | 676.0 735 | 676.0 736 | 677.0 737 | 678.0 738 | 679.0 739 | 680.0 740 | 681.0 741 | 682.0 742 | 683.0 743 | 684.0 744 | 685.0 745 | 686.0 746 | 687.0 747 | 688.0 748 | 688.0 749 | 689.0 750 | 690.0 751 | 691.0 752 | 692.0 753 | 693.0 754 | 694.0 755 | 695.0 756 | 696.0 757 | 697.0 758 | 698.0 759 | 699.0 760 | 700.0 761 | 700.0 762 | 701.0 763 | 702.0 764 | 703.0 765 | 704.0 766 | 705.0 767 | 706.0 768 | 707.0 769 | 708.0 770 | 709.0 771 | 710.0 772 | 711.0 773 | 712.0 774 | 712.0 775 | 713.0 776 | 714.0 777 | 715.0 778 | 716.0 779 | 717.0 780 | 718.0 781 | 719.0 782 | 720.0 783 | 721.0 784 | 722.0 785 | 723.0 786 | 724.0 787 | 724.0 788 | 725.0 789 | 726.0 790 | 727.0 791 | 728.0 792 | 729.0 793 | 730.0 794 | 731.0 795 | 732.0 796 | 733.0 797 | 734.0 798 | 735.0 799 | 736.0 800 | 736.0 801 | 737.0 802 | 738.0 803 | 739.0 804 | 740.0 805 | 741.0 806 | 742.0 807 | 743.0 808 | 744.0 809 | 745.0 810 | 746.0 811 | 747.0 812 | 747.0 813 | 748.0 814 | 749.0 815 | 750.0 816 | 751.0 817 | 752.0 818 | 753.0 819 | 754.0 820 | 755.0 821 | 756.0 822 | 757.0 823 | 758.0 824 | 759.0 825 | 759.0 826 | 760.0 827 | 761.0 828 | 762.0 829 | 763.0 830 | 764.0 831 | 765.0 832 | 766.0 833 | 767.0 834 | 768.0 835 | 769.0 836 | 770.0 837 | 771.0 838 | 771.0 839 | 772.0 840 | 773.0 841 | 774.0 842 | 775.0 843 | 776.0 844 | 777.0 845 | 778.0 846 | 779.0 847 | 780.0 848 | 781.0 849 | 782.0 850 | 783.0 851 | 783.0 852 | 784.0 853 | 785.0 854 | 786.0 855 | 787.0 856 | 788.0 857 | 789.0 858 | 790.0 859 | 791.0 860 | 792.0 861 | 793.0 862 | 794.0 863 | 795.0 864 | 795.0 865 | 796.0 866 | 797.0 867 | 798.0 868 | 799.0 869 | 800.0 870 | 801.0 871 | 802.0 872 | 803.0 873 | 804.0 874 | 805.0 875 | 806.0 876 | 807.0 877 | 807.0 878 | 808.0 879 | 809.0 880 | 810.0 881 | 811.0 882 | 812.0 883 | 813.0 884 | 814.0 885 | 815.0 886 | 816.0 887 | 817.0 888 | 818.0 889 | 819.0 890 | 819.0 891 | 820.0 892 | 821.0 893 | 822.0 894 | 823.0 895 | 824.0 896 | 825.0 897 | 826.0 898 | 827.0 899 | 828.0 900 | 829.0 901 | 830.0 902 | 831.0 903 | 831.0 904 | 832.0 905 | 833.0 906 | 834.0 907 | 835.0 908 | 836.0 909 | 837.0 910 | 838.0 911 | 839.0 912 | 840.0 913 | 841.0 914 | 842.0 915 | 843.0 916 | 843.0 917 | 844.0 918 | 845.0 919 | 846.0 920 | 847.0 921 | 848.0 922 | 849.0 923 | 850.0 924 | 851.0 925 | 852.0 926 | 853.0 927 | 854.0 928 | 855.0 929 | 855.0 930 | 856.0 931 | 857.0 932 | 858.0 933 | 859.0 934 | 860.0 935 | 861.0 936 | 862.0 937 | 863.0 938 | 864.0 939 | 865.0 940 | 866.0 941 | 867.0 942 | 867.0 943 | 868.0 944 | 869.0 945 | 870.0 946 | 871.0 947 | 872.0 948 | 873.0 949 | 874.0 950 | 875.0 951 | 876.0 952 | 877.0 953 | 878.0 954 | 879.0 955 | 879.0 956 | 880.0 957 | 881.0 958 | 882.0 959 | 883.0 960 | 884.0 961 | 885.0 962 | 886.0 963 | 887.0 964 | 888.0 965 | 889.0 966 | 890.0 967 | 891.0 968 | 891.0 969 | 892.0 970 | 893.0 971 | 894.0 972 | 895.0 973 | 896.0 974 | 897.0 975 | 898.0 976 | 899.0 977 | 900.0 978 | 901.0 979 | 902.0 980 | 903.0 981 | 903.0 982 | 904.0 983 | 905.0 984 | 906.0 985 | 907.0 986 | 908.0 987 | 909.0 988 | 910.0 989 | 911.0 990 | 912.0 991 | 913.0 992 | 914.0 993 | 915.0 994 | 915.0 995 | 916.0 996 | 917.0 997 | 918.0 998 | 919.0 999 | 920.0 1000 | 921.0 1001 | 922.0 1002 | 923.0 1003 | 924.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot0,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 65.0 66 | 64.0 67 | 65.0 68 | 66.0 69 | 67.0 70 | 68.0 71 | 69.0 72 | 70.0 73 | 70.0 74 | 71.0 75 | 72.0 76 | 73.0 77 | 74.0 78 | 75.0 79 | 76.0 80 | 77.0 81 | 78.0 82 | 79.0 83 | 79.0 84 | 80.0 85 | 81.0 86 | 82.0 87 | 83.0 88 | 84.0 89 | 85.0 90 | 86.0 91 | 87.0 92 | 88.0 93 | 89.0 94 | 89.0 95 | 90.0 96 | 91.0 97 | 92.0 98 | 93.0 99 | 94.0 100 | 95.0 101 | 96.0 102 | 97.0 103 | 98.0 104 | 98.0 105 | 99.0 106 | 100.0 107 | 101.0 108 | 102.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 107.0 114 | 108.0 115 | 108.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 115.0 123 | 116.0 124 | 117.0 125 | 117.0 126 | 118.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 122.0 131 | 123.0 132 | 124.0 133 | 125.0 134 | 126.0 135 | 127.0 136 | 128.0 137 | 128.0 138 | 129.0 139 | 130.0 140 | 131.0 141 | 132.0 142 | 133.0 143 | 134.0 144 | 135.0 145 | 136.0 146 | 137.0 147 | 138.0 148 | 138.0 149 | 139.0 150 | 140.0 151 | 141.0 152 | 142.0 153 | 143.0 154 | 144.0 155 | 145.0 156 | 146.0 157 | 147.0 158 | 148.0 159 | 148.0 160 | 149.0 161 | 150.0 162 | 151.0 163 | 152.0 164 | 153.0 165 | 154.0 166 | 155.0 167 | 156.0 168 | 157.0 169 | 158.0 170 | 159.0 171 | 159.0 172 | 160.0 173 | 161.0 174 | 162.0 175 | 163.0 176 | 164.0 177 | 165.0 178 | 166.0 179 | 167.0 180 | 168.0 181 | 169.0 182 | 169.0 183 | 170.0 184 | 171.0 185 | 172.0 186 | 173.0 187 | 174.0 188 | 175.0 189 | 176.0 190 | 177.0 191 | 178.0 192 | 179.0 193 | 180.0 194 | 180.0 195 | 181.0 196 | 182.0 197 | 183.0 198 | 184.0 199 | 185.0 200 | 186.0 201 | 187.0 202 | 188.0 203 | 189.0 204 | 190.0 205 | 191.0 206 | 191.0 207 | 192.0 208 | 193.0 209 | 194.0 210 | 195.0 211 | 196.0 212 | 197.0 213 | 198.0 214 | 199.0 215 | 200.0 216 | 201.0 217 | 202.0 218 | 202.0 219 | 203.0 220 | 204.0 221 | 205.0 222 | 206.0 223 | 207.0 224 | 208.0 225 | 209.0 226 | 210.0 227 | 211.0 228 | 212.0 229 | 213.0 230 | 214.0 231 | 214.0 232 | 215.0 233 | 216.0 234 | 217.0 235 | 218.0 236 | 219.0 237 | 220.0 238 | 221.0 239 | 222.0 240 | 223.0 241 | 224.0 242 | 225.0 243 | 225.0 244 | 226.0 245 | 227.0 246 | 228.0 247 | 229.0 248 | 230.0 249 | 231.0 250 | 232.0 251 | 233.0 252 | 234.0 253 | 235.0 254 | 236.0 255 | 236.0 256 | 237.0 257 | 238.0 258 | 239.0 259 | 240.0 260 | 241.0 261 | 242.0 262 | 243.0 263 | 244.0 264 | 245.0 265 | 246.0 266 | 247.0 267 | 248.0 268 | 248.0 269 | 249.0 270 | 250.0 271 | 251.0 272 | 252.0 273 | 253.0 274 | 254.0 275 | 255.0 276 | 256.0 277 | 257.0 278 | 258.0 279 | 259.0 280 | 260.0 281 | 260.0 282 | 261.0 283 | 262.0 284 | 263.0 285 | 264.0 286 | 265.0 287 | 266.0 288 | 267.0 289 | 268.0 290 | 269.0 291 | 270.0 292 | 271.0 293 | 271.0 294 | 272.0 295 | 273.0 296 | 274.0 297 | 275.0 298 | 276.0 299 | 277.0 300 | 278.0 301 | 279.0 302 | 280.0 303 | 281.0 304 | 282.0 305 | 283.0 306 | 283.0 307 | 284.0 308 | 285.0 309 | 286.0 310 | 287.0 311 | 288.0 312 | 289.0 313 | 290.0 314 | 291.0 315 | 292.0 316 | 293.0 317 | 294.0 318 | 295.0 319 | 295.0 320 | 296.0 321 | 297.0 322 | 298.0 323 | 299.0 324 | 300.0 325 | 301.0 326 | 302.0 327 | 303.0 328 | 304.0 329 | 305.0 330 | 306.0 331 | 307.0 332 | 307.0 333 | 308.0 334 | 309.0 335 | 310.0 336 | 311.0 337 | 312.0 338 | 313.0 339 | 314.0 340 | 315.0 341 | 316.0 342 | 317.0 343 | 318.0 344 | 319.0 345 | 319.0 346 | 320.0 347 | 321.0 348 | 322.0 349 | 323.0 350 | 324.0 351 | 325.0 352 | 326.0 353 | 327.0 354 | 328.0 355 | 329.0 356 | 330.0 357 | 331.0 358 | 331.0 359 | 332.0 360 | 333.0 361 | 334.0 362 | 335.0 363 | 336.0 364 | 337.0 365 | 338.0 366 | 339.0 367 | 340.0 368 | 341.0 369 | 342.0 370 | 343.0 371 | 343.0 372 | 344.0 373 | 345.0 374 | 346.0 375 | 347.0 376 | 348.0 377 | 349.0 378 | 350.0 379 | 351.0 380 | 352.0 381 | 353.0 382 | 354.0 383 | 355.0 384 | 355.0 385 | 356.0 386 | 357.0 387 | 358.0 388 | 359.0 389 | 360.0 390 | 361.0 391 | 362.0 392 | 363.0 393 | 364.0 394 | 365.0 395 | 366.0 396 | 367.0 397 | 367.0 398 | 368.0 399 | 369.0 400 | 370.0 401 | 371.0 402 | 372.0 403 | 373.0 404 | 374.0 405 | 375.0 406 | 376.0 407 | 377.0 408 | 378.0 409 | 379.0 410 | 380.0 411 | 380.0 412 | 381.0 413 | 382.0 414 | 383.0 415 | 384.0 416 | 385.0 417 | 386.0 418 | 387.0 419 | 388.0 420 | 389.0 421 | 390.0 422 | 391.0 423 | 392.0 424 | 392.0 425 | 393.0 426 | 394.0 427 | 395.0 428 | 396.0 429 | 397.0 430 | 398.0 431 | 399.0 432 | 400.0 433 | 401.0 434 | 402.0 435 | 403.0 436 | 404.0 437 | 404.0 438 | 405.0 439 | 406.0 440 | 407.0 441 | 408.0 442 | 409.0 443 | 410.0 444 | 411.0 445 | 412.0 446 | 413.0 447 | 414.0 448 | 415.0 449 | 416.0 450 | 417.0 451 | 417.0 452 | 418.0 453 | 419.0 454 | 420.0 455 | 421.0 456 | 422.0 457 | 423.0 458 | 424.0 459 | 425.0 460 | 426.0 461 | 427.0 462 | 428.0 463 | 429.0 464 | 429.0 465 | 430.0 466 | 431.0 467 | 432.0 468 | 433.0 469 | 434.0 470 | 435.0 471 | 436.0 472 | 437.0 473 | 438.0 474 | 439.0 475 | 440.0 476 | 441.0 477 | 442.0 478 | 442.0 479 | 443.0 480 | 444.0 481 | 445.0 482 | 446.0 483 | 447.0 484 | 448.0 485 | 449.0 486 | 450.0 487 | 451.0 488 | 452.0 489 | 453.0 490 | 454.0 491 | 454.0 492 | 455.0 493 | 456.0 494 | 457.0 495 | 458.0 496 | 459.0 497 | 460.0 498 | 461.0 499 | 462.0 500 | 463.0 501 | 464.0 502 | 465.0 503 | 466.0 504 | 467.0 505 | 467.0 506 | 468.0 507 | 469.0 508 | 470.0 509 | 471.0 510 | 472.0 511 | 473.0 512 | 474.0 513 | 475.0 514 | 476.0 515 | 477.0 516 | 478.0 517 | 479.0 518 | 479.0 519 | 480.0 520 | 481.0 521 | 482.0 522 | 483.0 523 | 484.0 524 | 485.0 525 | 486.0 526 | 487.0 527 | 488.0 528 | 489.0 529 | 490.0 530 | 491.0 531 | 492.0 532 | 492.0 533 | 493.0 534 | 494.0 535 | 495.0 536 | 496.0 537 | 497.0 538 | 498.0 539 | 499.0 540 | 500.0 541 | 501.0 542 | 502.0 543 | 503.0 544 | 504.0 545 | 505.0 546 | 505.0 547 | 506.0 548 | 507.0 549 | 508.0 550 | 509.0 551 | 510.0 552 | 511.0 553 | 512.0 554 | 513.0 555 | 514.0 556 | 515.0 557 | 516.0 558 | 517.0 559 | 517.0 560 | 518.0 561 | 519.0 562 | 520.0 563 | 521.0 564 | 522.0 565 | 523.0 566 | 524.0 567 | 525.0 568 | 526.0 569 | 527.0 570 | 528.0 571 | 529.0 572 | 530.0 573 | 530.0 574 | 531.0 575 | 532.0 576 | 533.0 577 | 534.0 578 | 535.0 579 | 536.0 580 | 537.0 581 | 538.0 582 | 539.0 583 | 540.0 584 | 541.0 585 | 542.0 586 | 543.0 587 | 543.0 588 | 544.0 589 | 545.0 590 | 546.0 591 | 547.0 592 | 548.0 593 | 549.0 594 | 550.0 595 | 551.0 596 | 552.0 597 | 553.0 598 | 554.0 599 | 555.0 600 | 556.0 601 | 556.0 602 | 557.0 603 | 558.0 604 | 559.0 605 | 560.0 606 | 561.0 607 | 562.0 608 | 563.0 609 | 564.0 610 | 565.0 611 | 566.0 612 | 567.0 613 | 568.0 614 | 568.0 615 | 569.0 616 | 570.0 617 | 571.0 618 | 572.0 619 | 573.0 620 | 574.0 621 | 575.0 622 | 576.0 623 | 577.0 624 | 578.0 625 | 579.0 626 | 580.0 627 | 581.0 628 | 581.0 629 | 582.0 630 | 583.0 631 | 584.0 632 | 585.0 633 | 586.0 634 | 587.0 635 | 588.0 636 | 589.0 637 | 590.0 638 | 591.0 639 | 592.0 640 | 593.0 641 | 594.0 642 | 594.0 643 | 595.0 644 | 596.0 645 | 597.0 646 | 598.0 647 | 599.0 648 | 600.0 649 | 601.0 650 | 602.0 651 | 603.0 652 | 604.0 653 | 605.0 654 | 606.0 655 | 607.0 656 | 607.0 657 | 608.0 658 | 609.0 659 | 610.0 660 | 611.0 661 | 612.0 662 | 613.0 663 | 614.0 664 | 615.0 665 | 616.0 666 | 617.0 667 | 618.0 668 | 619.0 669 | 620.0 670 | 620.0 671 | 621.0 672 | 622.0 673 | 623.0 674 | 624.0 675 | 625.0 676 | 626.0 677 | 627.0 678 | 628.0 679 | 629.0 680 | 630.0 681 | 631.0 682 | 632.0 683 | 633.0 684 | 633.0 685 | 634.0 686 | 635.0 687 | 636.0 688 | 637.0 689 | 638.0 690 | 639.0 691 | 640.0 692 | 641.0 693 | 642.0 694 | 643.0 695 | 644.0 696 | 645.0 697 | 646.0 698 | 646.0 699 | 647.0 700 | 648.0 701 | 649.0 702 | 650.0 703 | 651.0 704 | 652.0 705 | 653.0 706 | 654.0 707 | 655.0 708 | 656.0 709 | 657.0 710 | 658.0 711 | 659.0 712 | 659.0 713 | 660.0 714 | 661.0 715 | 662.0 716 | 663.0 717 | 664.0 718 | 665.0 719 | 666.0 720 | 667.0 721 | 668.0 722 | 669.0 723 | 670.0 724 | 671.0 725 | 672.0 726 | 672.0 727 | 673.0 728 | 674.0 729 | 675.0 730 | 676.0 731 | 677.0 732 | 678.0 733 | 679.0 734 | 680.0 735 | 681.0 736 | 682.0 737 | 683.0 738 | 684.0 739 | 685.0 740 | 685.0 741 | 686.0 742 | 687.0 743 | 688.0 744 | 689.0 745 | 690.0 746 | 691.0 747 | 692.0 748 | 693.0 749 | 694.0 750 | 695.0 751 | 696.0 752 | 697.0 753 | 698.0 754 | 698.0 755 | 699.0 756 | 700.0 757 | 701.0 758 | 702.0 759 | 703.0 760 | 704.0 761 | 705.0 762 | 706.0 763 | 707.0 764 | 708.0 765 | 709.0 766 | 710.0 767 | 711.0 768 | 711.0 769 | 712.0 770 | 713.0 771 | 714.0 772 | 715.0 773 | 716.0 774 | 717.0 775 | 718.0 776 | 719.0 777 | 720.0 778 | 721.0 779 | 722.0 780 | 723.0 781 | 724.0 782 | 724.0 783 | 725.0 784 | 726.0 785 | 727.0 786 | 728.0 787 | 729.0 788 | 730.0 789 | 731.0 790 | 732.0 791 | 733.0 792 | 734.0 793 | 735.0 794 | 736.0 795 | 737.0 796 | 737.0 797 | 738.0 798 | 739.0 799 | 740.0 800 | 741.0 801 | 742.0 802 | 743.0 803 | 744.0 804 | 745.0 805 | 746.0 806 | 747.0 807 | 748.0 808 | 749.0 809 | 750.0 810 | 750.0 811 | 751.0 812 | 752.0 813 | 753.0 814 | 754.0 815 | 755.0 816 | 756.0 817 | 757.0 818 | 758.0 819 | 759.0 820 | 760.0 821 | 761.0 822 | 762.0 823 | 763.0 824 | 763.0 825 | 764.0 826 | 765.0 827 | 766.0 828 | 767.0 829 | 768.0 830 | 769.0 831 | 770.0 832 | 771.0 833 | 772.0 834 | 773.0 835 | 774.0 836 | 775.0 837 | 776.0 838 | 776.0 839 | 777.0 840 | 778.0 841 | 779.0 842 | 780.0 843 | 781.0 844 | 782.0 845 | 783.0 846 | 784.0 847 | 785.0 848 | 786.0 849 | 787.0 850 | 788.0 851 | 789.0 852 | 789.0 853 | 790.0 854 | 791.0 855 | 792.0 856 | 793.0 857 | 794.0 858 | 795.0 859 | 796.0 860 | 797.0 861 | 798.0 862 | 799.0 863 | 800.0 864 | 801.0 865 | 802.0 866 | 802.0 867 | 803.0 868 | 804.0 869 | 805.0 870 | 806.0 871 | 807.0 872 | 808.0 873 | 809.0 874 | 810.0 875 | 811.0 876 | 812.0 877 | 813.0 878 | 814.0 879 | 815.0 880 | 816.0 881 | 816.0 882 | 817.0 883 | 818.0 884 | 819.0 885 | 820.0 886 | 821.0 887 | 822.0 888 | 823.0 889 | 824.0 890 | 825.0 891 | 826.0 892 | 827.0 893 | 828.0 894 | 829.0 895 | 829.0 896 | 830.0 897 | 831.0 898 | 832.0 899 | 833.0 900 | 834.0 901 | 835.0 902 | 836.0 903 | 837.0 904 | 838.0 905 | 839.0 906 | 840.0 907 | 841.0 908 | 842.0 909 | 842.0 910 | 843.0 911 | 844.0 912 | 845.0 913 | 846.0 914 | 847.0 915 | 848.0 916 | 849.0 917 | 850.0 918 | 851.0 919 | 852.0 920 | 853.0 921 | 854.0 922 | 855.0 923 | 855.0 924 | 856.0 925 | 857.0 926 | 858.0 927 | 859.0 928 | 860.0 929 | 861.0 930 | 862.0 931 | 863.0 932 | 864.0 933 | 865.0 934 | 866.0 935 | 867.0 936 | 868.0 937 | 868.0 938 | 869.0 939 | 870.0 940 | 871.0 941 | 872.0 942 | 873.0 943 | 874.0 944 | 875.0 945 | 876.0 946 | 877.0 947 | 878.0 948 | 879.0 949 | 880.0 950 | 881.0 951 | 882.0 952 | 882.0 953 | 883.0 954 | 884.0 955 | 885.0 956 | 886.0 957 | 887.0 958 | 888.0 959 | 889.0 960 | 890.0 961 | 891.0 962 | 892.0 963 | 893.0 964 | 894.0 965 | 895.0 966 | 895.0 967 | 896.0 968 | 897.0 969 | 898.0 970 | 899.0 971 | 900.0 972 | 901.0 973 | 902.0 974 | 903.0 975 | 904.0 976 | 905.0 977 | 906.0 978 | 907.0 979 | 908.0 980 | 908.0 981 | 909.0 982 | 910.0 983 | 911.0 984 | 912.0 985 | 913.0 986 | 914.0 987 | 915.0 988 | 916.0 989 | 917.0 990 | 918.0 991 | 919.0 992 | 920.0 993 | 921.0 994 | 921.0 995 | 922.0 996 | 923.0 997 | 924.0 998 | 925.0 999 | 926.0 1000 | 927.0 1001 | 928.0 1002 | 929.0 1003 | 930.0 1004 | -------------------------------------------------------------------------------- /pricing_output/myopic_inf_hor_fixed_price_range0_10_inf_(2,_2,_4dot5,_2)(1,_0,_0)_0dot8_0dot95mmnl_mu_m: -------------------------------------------------------------------------------- 1 | 10.0 2 | 11.0 3 | 12.0 4 | 13.0 5 | 14.0 6 | 14.0 7 | 15.0 8 | 16.0 9 | 17.0 10 | 18.0 11 | 19.0 12 | 20.0 13 | 20.0 14 | 21.0 15 | 22.0 16 | 23.0 17 | 24.0 18 | 25.0 19 | 25.0 20 | 26.0 21 | 27.0 22 | 28.0 23 | 29.0 24 | 30.0 25 | 31.0 26 | 31.0 27 | 32.0 28 | 33.0 29 | 34.0 30 | 35.0 31 | 36.0 32 | 37.0 33 | 37.0 34 | 38.0 35 | 39.0 36 | 40.0 37 | 41.0 38 | 42.0 39 | 43.0 40 | 43.0 41 | 44.0 42 | 45.0 43 | 46.0 44 | 47.0 45 | 48.0 46 | 49.0 47 | 49.0 48 | 50.0 49 | 51.0 50 | 52.0 51 | 53.0 52 | 54.0 53 | 55.0 54 | 56.0 55 | 56.0 56 | 57.0 57 | 58.0 58 | 59.0 59 | 60.0 60 | 61.0 61 | 62.0 62 | 62.0 63 | 63.0 64 | 64.0 65 | 63.0 66 | 64.0 67 | 65.0 68 | 66.0 69 | 67.0 70 | 68.0 71 | 69.0 72 | 69.0 73 | 70.0 74 | 71.0 75 | 72.0 76 | 73.0 77 | 74.0 78 | 75.0 79 | 76.0 80 | 77.0 81 | 78.0 82 | 78.0 83 | 79.0 84 | 80.0 85 | 81.0 86 | 82.0 87 | 83.0 88 | 84.0 89 | 85.0 90 | 86.0 91 | 87.0 92 | 88.0 93 | 88.0 94 | 89.0 95 | 90.0 96 | 91.0 97 | 92.0 98 | 93.0 99 | 94.0 100 | 95.0 101 | 96.0 102 | 97.0 103 | 98.0 104 | 98.0 105 | 99.0 106 | 100.0 107 | 101.0 108 | 102.0 109 | 103.0 110 | 104.0 111 | 105.0 112 | 106.0 113 | 107.0 114 | 108.0 115 | 109.0 116 | 109.0 117 | 110.0 118 | 111.0 119 | 112.0 120 | 113.0 121 | 114.0 122 | 115.0 123 | 116.0 124 | 117.0 125 | 118.0 126 | 119.0 127 | 119.0 128 | 120.0 129 | 121.0 130 | 122.0 131 | 123.0 132 | 124.0 133 | 125.0 134 | 126.0 135 | 127.0 136 | 128.0 137 | 129.0 138 | 130.0 139 | 130.0 140 | 131.0 141 | 132.0 142 | 133.0 143 | 134.0 144 | 135.0 145 | 136.0 146 | 137.0 147 | 138.0 148 | 139.0 149 | 140.0 150 | 141.0 151 | 142.0 152 | 142.0 153 | 143.0 154 | 144.0 155 | 145.0 156 | 146.0 157 | 147.0 158 | 148.0 159 | 149.0 160 | 150.0 161 | 151.0 162 | 152.0 163 | 153.0 164 | 153.0 165 | 154.0 166 | 155.0 167 | 156.0 168 | 157.0 169 | 158.0 170 | 159.0 171 | 160.0 172 | 161.0 173 | 162.0 174 | 163.0 175 | 164.0 176 | 164.0 177 | 165.0 178 | 166.0 179 | 167.0 180 | 168.0 181 | 169.0 182 | 170.0 183 | 171.0 184 | 172.0 185 | 173.0 186 | 174.0 187 | 175.0 188 | 176.0 189 | 176.0 190 | 177.0 191 | 178.0 192 | 179.0 193 | 180.0 194 | 181.0 195 | 182.0 196 | 183.0 197 | 184.0 198 | 185.0 199 | 186.0 200 | 187.0 201 | 188.0 202 | 188.0 203 | 189.0 204 | 190.0 205 | 191.0 206 | 192.0 207 | 193.0 208 | 194.0 209 | 195.0 210 | 196.0 211 | 197.0 212 | 198.0 213 | 199.0 214 | 200.0 215 | 200.0 216 | 201.0 217 | 202.0 218 | 203.0 219 | 204.0 220 | 205.0 221 | 206.0 222 | 207.0 223 | 208.0 224 | 209.0 225 | 210.0 226 | 211.0 227 | 212.0 228 | 212.0 229 | 213.0 230 | 214.0 231 | 215.0 232 | 216.0 233 | 217.0 234 | 218.0 235 | 219.0 236 | 220.0 237 | 221.0 238 | 222.0 239 | 223.0 240 | 224.0 241 | 225.0 242 | 225.0 243 | 226.0 244 | 227.0 245 | 228.0 246 | 229.0 247 | 230.0 248 | 231.0 249 | 232.0 250 | 233.0 251 | 234.0 252 | 235.0 253 | 236.0 254 | 237.0 255 | 237.0 256 | 238.0 257 | 239.0 258 | 240.0 259 | 241.0 260 | 242.0 261 | 243.0 262 | 244.0 263 | 245.0 264 | 246.0 265 | 247.0 266 | 248.0 267 | 249.0 268 | 250.0 269 | 250.0 270 | 251.0 271 | 252.0 272 | 253.0 273 | 254.0 274 | 255.0 275 | 256.0 276 | 257.0 277 | 258.0 278 | 259.0 279 | 260.0 280 | 261.0 281 | 262.0 282 | 262.0 283 | 263.0 284 | 264.0 285 | 265.0 286 | 266.0 287 | 267.0 288 | 268.0 289 | 269.0 290 | 270.0 291 | 271.0 292 | 272.0 293 | 273.0 294 | 274.0 295 | 275.0 296 | 275.0 297 | 276.0 298 | 277.0 299 | 278.0 300 | 279.0 301 | 280.0 302 | 281.0 303 | 282.0 304 | 283.0 305 | 284.0 306 | 285.0 307 | 286.0 308 | 287.0 309 | 288.0 310 | 288.0 311 | 289.0 312 | 290.0 313 | 291.0 314 | 292.0 315 | 293.0 316 | 294.0 317 | 295.0 318 | 296.0 319 | 297.0 320 | 298.0 321 | 299.0 322 | 300.0 323 | 301.0 324 | 301.0 325 | 302.0 326 | 303.0 327 | 304.0 328 | 305.0 329 | 306.0 330 | 307.0 331 | 308.0 332 | 309.0 333 | 310.0 334 | 311.0 335 | 312.0 336 | 313.0 337 | 314.0 338 | 314.0 339 | 315.0 340 | 316.0 341 | 317.0 342 | 318.0 343 | 319.0 344 | 320.0 345 | 321.0 346 | 322.0 347 | 323.0 348 | 324.0 349 | 325.0 350 | 326.0 351 | 327.0 352 | 327.0 353 | 328.0 354 | 329.0 355 | 330.0 356 | 331.0 357 | 332.0 358 | 333.0 359 | 334.0 360 | 335.0 361 | 336.0 362 | 337.0 363 | 338.0 364 | 339.0 365 | 340.0 366 | 340.0 367 | 341.0 368 | 342.0 369 | 343.0 370 | 344.0 371 | 345.0 372 | 346.0 373 | 347.0 374 | 348.0 375 | 349.0 376 | 350.0 377 | 351.0 378 | 352.0 379 | 353.0 380 | 353.0 381 | 354.0 382 | 355.0 383 | 356.0 384 | 357.0 385 | 358.0 386 | 359.0 387 | 360.0 388 | 361.0 389 | 362.0 390 | 363.0 391 | 364.0 392 | 365.0 393 | 366.0 394 | 367.0 395 | 367.0 396 | 368.0 397 | 369.0 398 | 370.0 399 | 371.0 400 | 372.0 401 | 373.0 402 | 374.0 403 | 375.0 404 | 376.0 405 | 377.0 406 | 378.0 407 | 379.0 408 | 380.0 409 | 380.0 410 | 381.0 411 | 382.0 412 | 383.0 413 | 384.0 414 | 385.0 415 | 386.0 416 | 387.0 417 | 388.0 418 | 389.0 419 | 390.0 420 | 391.0 421 | 392.0 422 | 393.0 423 | 393.0 424 | 394.0 425 | 395.0 426 | 396.0 427 | 397.0 428 | 398.0 429 | 399.0 430 | 400.0 431 | 401.0 432 | 402.0 433 | 403.0 434 | 404.0 435 | 405.0 436 | 406.0 437 | 407.0 438 | 407.0 439 | 408.0 440 | 409.0 441 | 410.0 442 | 411.0 443 | 412.0 444 | 413.0 445 | 414.0 446 | 415.0 447 | 416.0 448 | 417.0 449 | 418.0 450 | 419.0 451 | 420.0 452 | 420.0 453 | 421.0 454 | 422.0 455 | 423.0 456 | 424.0 457 | 425.0 458 | 426.0 459 | 427.0 460 | 428.0 461 | 429.0 462 | 430.0 463 | 431.0 464 | 432.0 465 | 433.0 466 | 434.0 467 | 434.0 468 | 435.0 469 | 436.0 470 | 437.0 471 | 438.0 472 | 439.0 473 | 440.0 474 | 441.0 475 | 442.0 476 | 443.0 477 | 444.0 478 | 445.0 479 | 446.0 480 | 447.0 481 | 448.0 482 | 448.0 483 | 449.0 484 | 450.0 485 | 451.0 486 | 452.0 487 | 453.0 488 | 454.0 489 | 455.0 490 | 456.0 491 | 457.0 492 | 458.0 493 | 459.0 494 | 460.0 495 | 461.0 496 | 461.0 497 | 462.0 498 | 463.0 499 | 464.0 500 | 465.0 501 | 466.0 502 | 467.0 503 | 468.0 504 | 469.0 505 | 470.0 506 | 471.0 507 | 472.0 508 | 473.0 509 | 474.0 510 | 475.0 511 | 475.0 512 | 476.0 513 | 477.0 514 | 478.0 515 | 479.0 516 | 480.0 517 | 481.0 518 | 482.0 519 | 483.0 520 | 484.0 521 | 485.0 522 | 486.0 523 | 487.0 524 | 488.0 525 | 489.0 526 | 489.0 527 | 490.0 528 | 491.0 529 | 492.0 530 | 493.0 531 | 494.0 532 | 495.0 533 | 496.0 534 | 497.0 535 | 498.0 536 | 499.0 537 | 500.0 538 | 501.0 539 | 502.0 540 | 503.0 541 | 503.0 542 | 504.0 543 | 505.0 544 | 506.0 545 | 507.0 546 | 508.0 547 | 509.0 548 | 510.0 549 | 511.0 550 | 512.0 551 | 513.0 552 | 514.0 553 | 515.0 554 | 516.0 555 | 516.0 556 | 517.0 557 | 518.0 558 | 519.0 559 | 520.0 560 | 521.0 561 | 522.0 562 | 523.0 563 | 524.0 564 | 525.0 565 | 526.0 566 | 527.0 567 | 528.0 568 | 529.0 569 | 530.0 570 | 530.0 571 | 531.0 572 | 532.0 573 | 533.0 574 | 534.0 575 | 535.0 576 | 536.0 577 | 537.0 578 | 538.0 579 | 539.0 580 | 540.0 581 | 541.0 582 | 542.0 583 | 543.0 584 | 544.0 585 | 544.0 586 | 545.0 587 | 546.0 588 | 547.0 589 | 548.0 590 | 549.0 591 | 550.0 592 | 551.0 593 | 552.0 594 | 553.0 595 | 554.0 596 | 555.0 597 | 556.0 598 | 557.0 599 | 558.0 600 | 558.0 601 | 559.0 602 | 560.0 603 | 561.0 604 | 562.0 605 | 563.0 606 | 564.0 607 | 565.0 608 | 566.0 609 | 567.0 610 | 568.0 611 | 569.0 612 | 570.0 613 | 571.0 614 | 572.0 615 | 572.0 616 | 573.0 617 | 574.0 618 | 575.0 619 | 576.0 620 | 577.0 621 | 578.0 622 | 579.0 623 | 580.0 624 | 581.0 625 | 582.0 626 | 583.0 627 | 584.0 628 | 585.0 629 | 586.0 630 | 586.0 631 | 587.0 632 | 588.0 633 | 589.0 634 | 590.0 635 | 591.0 636 | 592.0 637 | 593.0 638 | 594.0 639 | 595.0 640 | 596.0 641 | 597.0 642 | 598.0 643 | 599.0 644 | 600.0 645 | 600.0 646 | 601.0 647 | 602.0 648 | 603.0 649 | 604.0 650 | 605.0 651 | 606.0 652 | 607.0 653 | 608.0 654 | 609.0 655 | 610.0 656 | 611.0 657 | 612.0 658 | 613.0 659 | 614.0 660 | 614.0 661 | 615.0 662 | 616.0 663 | 617.0 664 | 618.0 665 | 619.0 666 | 620.0 667 | 621.0 668 | 622.0 669 | 623.0 670 | 624.0 671 | 625.0 672 | 626.0 673 | 627.0 674 | 628.0 675 | 628.0 676 | 629.0 677 | 630.0 678 | 631.0 679 | 632.0 680 | 633.0 681 | 634.0 682 | 635.0 683 | 636.0 684 | 637.0 685 | 638.0 686 | 639.0 687 | 640.0 688 | 641.0 689 | 642.0 690 | 642.0 691 | 643.0 692 | 644.0 693 | 645.0 694 | 646.0 695 | 647.0 696 | 648.0 697 | 649.0 698 | 650.0 699 | 651.0 700 | 652.0 701 | 653.0 702 | 654.0 703 | 655.0 704 | 656.0 705 | 656.0 706 | 657.0 707 | 658.0 708 | 659.0 709 | 660.0 710 | 661.0 711 | 662.0 712 | 663.0 713 | 664.0 714 | 665.0 715 | 666.0 716 | 667.0 717 | 668.0 718 | 669.0 719 | 670.0 720 | 671.0 721 | 671.0 722 | 672.0 723 | 673.0 724 | 674.0 725 | 675.0 726 | 676.0 727 | 677.0 728 | 678.0 729 | 679.0 730 | 680.0 731 | 681.0 732 | 682.0 733 | 683.0 734 | 684.0 735 | 685.0 736 | 685.0 737 | 686.0 738 | 687.0 739 | 688.0 740 | 689.0 741 | 690.0 742 | 691.0 743 | 692.0 744 | 693.0 745 | 694.0 746 | 695.0 747 | 696.0 748 | 697.0 749 | 698.0 750 | 699.0 751 | 699.0 752 | 700.0 753 | 701.0 754 | 702.0 755 | 703.0 756 | 704.0 757 | 705.0 758 | 706.0 759 | 707.0 760 | 708.0 761 | 709.0 762 | 710.0 763 | 711.0 764 | 712.0 765 | 713.0 766 | 713.0 767 | 714.0 768 | 715.0 769 | 716.0 770 | 717.0 771 | 718.0 772 | 719.0 773 | 720.0 774 | 721.0 775 | 722.0 776 | 723.0 777 | 724.0 778 | 725.0 779 | 726.0 780 | 727.0 781 | 727.0 782 | 728.0 783 | 729.0 784 | 730.0 785 | 731.0 786 | 732.0 787 | 733.0 788 | 734.0 789 | 735.0 790 | 736.0 791 | 737.0 792 | 738.0 793 | 739.0 794 | 740.0 795 | 741.0 796 | 742.0 797 | 742.0 798 | 743.0 799 | 744.0 800 | 745.0 801 | 746.0 802 | 747.0 803 | 748.0 804 | 749.0 805 | 750.0 806 | 751.0 807 | 752.0 808 | 753.0 809 | 754.0 810 | 755.0 811 | 756.0 812 | 756.0 813 | 757.0 814 | 758.0 815 | 759.0 816 | 760.0 817 | 761.0 818 | 762.0 819 | 763.0 820 | 764.0 821 | 765.0 822 | 766.0 823 | 767.0 824 | 768.0 825 | 769.0 826 | 770.0 827 | 770.0 828 | 771.0 829 | 772.0 830 | 773.0 831 | 774.0 832 | 775.0 833 | 776.0 834 | 777.0 835 | 778.0 836 | 779.0 837 | 780.0 838 | 781.0 839 | 782.0 840 | 783.0 841 | 784.0 842 | 784.0 843 | 785.0 844 | 786.0 845 | 787.0 846 | 788.0 847 | 789.0 848 | 790.0 849 | 791.0 850 | 792.0 851 | 793.0 852 | 794.0 853 | 795.0 854 | 796.0 855 | 797.0 856 | 798.0 857 | 799.0 858 | 799.0 859 | 800.0 860 | 801.0 861 | 802.0 862 | 803.0 863 | 804.0 864 | 805.0 865 | 806.0 866 | 807.0 867 | 808.0 868 | 809.0 869 | 810.0 870 | 811.0 871 | 812.0 872 | 813.0 873 | 813.0 874 | 814.0 875 | 815.0 876 | 816.0 877 | 817.0 878 | 818.0 879 | 819.0 880 | 820.0 881 | 821.0 882 | 822.0 883 | 823.0 884 | 824.0 885 | 825.0 886 | 826.0 887 | 827.0 888 | 827.0 889 | 828.0 890 | 829.0 891 | 830.0 892 | 831.0 893 | 832.0 894 | 833.0 895 | 834.0 896 | 835.0 897 | 836.0 898 | 837.0 899 | 838.0 900 | 839.0 901 | 840.0 902 | 841.0 903 | 842.0 904 | 842.0 905 | 843.0 906 | 844.0 907 | 845.0 908 | 846.0 909 | 847.0 910 | 848.0 911 | 849.0 912 | 850.0 913 | 851.0 914 | 852.0 915 | 853.0 916 | 854.0 917 | 855.0 918 | 856.0 919 | 856.0 920 | 857.0 921 | 858.0 922 | 859.0 923 | 860.0 924 | 861.0 925 | 862.0 926 | 863.0 927 | 864.0 928 | 865.0 929 | 866.0 930 | 867.0 931 | 868.0 932 | 869.0 933 | 870.0 934 | 870.0 935 | 871.0 936 | 872.0 937 | 873.0 938 | 874.0 939 | 875.0 940 | 876.0 941 | 877.0 942 | 878.0 943 | 879.0 944 | 880.0 945 | 881.0 946 | 882.0 947 | 883.0 948 | 884.0 949 | 885.0 950 | 885.0 951 | 886.0 952 | 887.0 953 | 888.0 954 | 889.0 955 | 890.0 956 | 891.0 957 | 892.0 958 | 893.0 959 | 894.0 960 | 895.0 961 | 896.0 962 | 897.0 963 | 898.0 964 | 899.0 965 | 899.0 966 | 900.0 967 | 901.0 968 | 902.0 969 | 903.0 970 | 904.0 971 | 905.0 972 | 906.0 973 | 907.0 974 | 908.0 975 | 909.0 976 | 910.0 977 | 911.0 978 | 912.0 979 | 913.0 980 | 914.0 981 | 914.0 982 | 915.0 983 | 916.0 984 | 917.0 985 | 918.0 986 | 919.0 987 | 920.0 988 | 921.0 989 | 922.0 990 | 923.0 991 | 924.0 992 | 925.0 993 | 926.0 994 | 927.0 995 | 928.0 996 | 928.0 997 | 929.0 998 | 930.0 999 | 931.0 1000 | 932.0 1001 | 933.0 1002 | 934.0 1003 | 935.0 1004 | -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=51dot9_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=51dot9_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=53dot52_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=53dot52_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=54dot78_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=54dot78_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=56dot58_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=56dot58_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=56dot7_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=56dot7_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot24_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot24_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot36_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot36_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot3_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot95_r0=57dot3_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=54dot96_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=54dot96_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=55dot38_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=55dot38_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=55dot8_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=55dot8_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=56dot22_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=56dot22_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=57dot06_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=57dot06_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=57dot48_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=57dot48_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=58dot32_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_3c79df1d80_0dot8_2000_30_60_inf_0dot06_0dot9_r0=58dot32_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_adfedb6893_0dot8_2000_50_160_inf_0dot22_0dot95_r0=159dot12_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_adfedb6893_0dot8_2000_50_160_inf_0dot22_0dot95_r0=159dot12_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_adfedb6893_0dot8_2000_50_160_inf_0dot22_0dot9_r0=159dot12_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_adfedb6893_0dot8_2000_50_160_inf_0dot22_0dot9_r0=159dot12_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=42dot68_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=42dot68_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=42dot8_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=42dot8_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=44dot12_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=44dot12_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=44dot24_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=44dot24_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=45dot26_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=45dot26_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=45dot38_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=45dot38_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=46dot88_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=46dot88_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=47dot6_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=47dot6_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=48dot08_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot95_r0=48dot08_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=42dot56_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=42dot56_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=43dot76_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=43dot76_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=44dot96_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=44dot96_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=45dot92_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=45dot92_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=46dot7_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=46dot7_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=47dot36_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=47dot36_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=47dot84_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=47dot84_price_path.png -------------------------------------------------------------------------------- /pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=48dot2_price_path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/pricing_output/pricing_opt_mmnl_ext_b5cb479f7d_0dot8_2000_20_50_inf_0dot06_0dot9_r0=48dot2_price_path.png -------------------------------------------------------------------------------- /scripts/__pycache__/mmnl_simulation.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/scripts/__pycache__/mmnl_simulation.cpython-37.pyc -------------------------------------------------------------------------------- /scripts/__pycache__/optimal_pricing_policy_exp_update.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/scripts/__pycache__/optimal_pricing_policy_exp_update.cpython-37.pyc -------------------------------------------------------------------------------- /scripts/__pycache__/py_MSOM_cleaning.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/scripts/__pycache__/py_MSOM_cleaning.cpython-37.pyc -------------------------------------------------------------------------------- /scripts/__pycache__/py_estimation.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/scripts/__pycache__/py_estimation.cpython-37.pyc -------------------------------------------------------------------------------- /scripts/__pycache__/utilis.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hanshengjiang/Reference_Effects/7bc5271dd7438274b8ba07281cda33b735c98eca/scripts/__pycache__/utilis.cpython-37.pyc -------------------------------------------------------------------------------- /scripts/cross_validation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sat May 30 15:15:11 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | ################################### 10 | # Run Cross validation to choose theta (memory parameter) 11 | # based on MMNL model 12 | #################################### 13 | 14 | from py_estimation import * 15 | from py_MSOM_cleaning import * 16 | import pandas as pd 17 | import random 18 | import os 19 | from sklearn.model_selection import KFold 20 | import time 21 | import sys 22 | 23 | 24 | 25 | def cross_validation_mmnl_score(sku_ID,k,theta,sub_sampling): 26 | ''' 27 | k-fold cross validation 28 | 29 | sub_sampling = False or an integer 30 | 31 | return the score 32 | ''' 33 | 34 | # acquire data from scratch if not available 35 | #---------------------------------------------# 36 | if not (os.path.isfile('./../MSOM_data_cleaned/%s_%s_V'%(sku_ID,str(theta).replace('.', 'dot'))) and 37 | os.path.isfile('./../MSOM_data_cleaned/%s_%s_choice_ct'%(sku_ID,str(theta).replace('.', 'dot'))) ): 38 | # if file does not exist 39 | 40 | print('################\n start data cleaning\n ################') 41 | # do data clean and generate feature filess 42 | if not os.path.isfile('./../MSOM_data_cleaned/user_action_%s'%sku_ID): 43 | user_action = extract_action(orders, clicks, [sku_ID]) 44 | else: 45 | user_action = pd.read_csv('./../MSOM_data_cleaned/user_action_%s'%sku_ID) 46 | cleaned_action = clean_action(user_action) 47 | 48 | 49 | V, choice_ct = extract_mmnl_features(cleaned_action, theta) 50 | 51 | # save to csv 52 | pd.DataFrame(V).to_csv('./../MSOM_data_cleaned/%s_%s_V'\ 53 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 54 | # save to csv 55 | pd.DataFrame(choice_ct).to_csv('./../MSOM_data_cleaned/%s_%s_choice_ct'\ 56 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 57 | ########################################################################### 58 | 59 | # read real data 60 | df = pd.read_csv('./../MSOM_data_cleaned/%s_%s_V'%(sku_ID,str(theta).replace('.', 'dot'))) 61 | V = df.values 62 | df = pd.read_csv('./../MSOM_data_cleaned/%s_%s_choice_ct'%(sku_ID,str(theta).replace('.', 'dot'))) 63 | choice_ct_temp = df.values 64 | 65 | # process readed data, prepare for estimation 66 | V_alltime = np.zeros((len(V), 2, 4)) 67 | V_alltime[:,0,:] = 0 # no purchase feature 68 | V_alltime[:,1,:] = V 69 | choice_ct = np.zeros((len(choice_ct_temp), 2)) 70 | # two "products" - purchase and no-purchase 71 | choice_ct[:,0] = 1 - choice_ct_temp.ravel() 72 | choice_ct[:,1] = choice_ct_temp.ravel() 73 | ##################################### 74 | 75 | 76 | if sub_sampling != False: 77 | 78 | V_alltime, choice_ct = sub_sample(V_alltime, choice_ct, subampling) 79 | 80 | # create k fold 81 | kf = KFold(n_splits = k, shuffle = True, random_state = 626) 82 | 83 | # initialize score 84 | score = 0.0 85 | 86 | for train_index, test_index in kf.split(np.zeros((len(V_alltime),1))): 87 | f, B, alpha, L_rec, b_sol_rec = CGM(V_alltime[train_index,:,:],choice_ct[train_index,:],50) 88 | score += neg_log_likelihood( B, alpha,V_alltime[test_index,:,:],choice_ct[test_index,:] ) 89 | score = score/k 90 | return score 91 | 92 | 93 | def cross_validation_linear_score(sku_ID,k,theta,sub_sampling): 94 | ''' 95 | k-fold cross validation 96 | 97 | sub_sampling = False or an integer 98 | 99 | return the score 100 | ''' 101 | # acquire data from scratch (by calling data cleaning functions if not available 102 | ###################################################### 103 | if not (os.path.isfile('./../MSOM_data_cleaned/%s_%s_V_lin'%(sku_ID,str(theta).replace('.', 'dot'))) and 104 | os.path.isfile('./../MSOM_data_cleaned/%s_%s_D'%(sku_ID,str(theta).replace('.', 'dot'))) ): 105 | # if file does not exist 106 | 107 | print('################\n start data cleaning\n ################') 108 | # do data clean and generate feature filess 109 | if not os.path.isfile('./../MSOM_data_cleaned/user_action_%s'%sku_ID): 110 | user_action = extract_action(orders, clicks, [sku_ID]) 111 | else: 112 | user_action = pd.read_csv('./../MSOM_data_cleaned/user_action_%s'%sku_ID, parse_dates= ['time']) 113 | cleaned_action = clean_action(user_action) 114 | 115 | 116 | V_lin, D = extract_linear_features(cleaned_action, theta) 117 | 118 | # save to csv 119 | pd.DataFrame(V_lin).to_csv('./../MSOM_data_cleaned/%s_%s_V_lin'\ 120 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 121 | # save to csv 122 | pd.DataFrame(D).to_csv('./../MSOM_data_cleaned/%s_%s_D'\ 123 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 124 | ######################################################################## 125 | 126 | 127 | # read real data 128 | df = pd.read_csv('./../MSOM_data_cleaned/%s_%s_V_lin'%(sku_ID,str(theta).replace('.', 'dot'))) 129 | V_lin = df.values 130 | df = pd.read_csv('./../MSOM_data_cleaned/%s_%s_D'%(sku_ID,str(theta).replace('.', 'dot'))) 131 | D = df.values 132 | 133 | # subsampling is not needed for linear models 134 | ############################## 135 | # if sub_sampling != False: 136 | # 137 | # # get subsample of data 138 | # random.seed(626) 139 | # 140 | # # keep the ratio of purchase vs. no-purchse unchanged 141 | # purchase_index = np.argwhere(choice_ct[:,0] == 0).ravel() 142 | # no_purchase_index = np.argwhere(choice_ct[:,0] == 1).ravel() 143 | # 144 | # ratio_p = len(purchase_index)/len(choice_ct) 145 | # num_p = int(sub_sampling * ratio_p)+1 146 | # num_np = sub_sampling - num_p 147 | # 148 | # sample_purchase_index = np.array( random.sample(list(purchase_index), num_p) ) 149 | # sample_no_purchase_index = np.array( random.sample(list(no_purchase_index), num_np) ) 150 | # 151 | # # combine to get sample index 152 | # sample_index = np.hstack((sample_purchase_index, sample_no_purchase_index)) 153 | # 154 | # V_alltime = np.copy(V_alltime[sample_index,:,:]) 155 | # choice_ct = np.copy(choice_ct[sample_index,:]) 156 | #################################### 157 | 158 | # create k fold 159 | kf = KFold(n_splits = k, shuffle = True, random_state = 626) 160 | 161 | # initialize score 162 | score = 0.0 163 | 164 | for train_index, test_index in kf.split(np.zeros((len(V_alltime),1))): 165 | 166 | # training 167 | coef_, error = linear_model(V_lin, D) 168 | 169 | # validating 170 | score += np.linalg.norm(np.matmul(V_lin[test_index,:],coef_) - choice_ct[test_index])\ 171 | /np.sqrt(len(test_index)) 172 | score = score/k 173 | return score 174 | 175 | def cross_validation_over_theta(sku_ID, k, theta_list,sub_sampling, model_name): 176 | ''' 177 | perform k-fold cross-validation for a list of theta and 178 | save the score to file 179 | ''' 180 | n_list = len(theta_list) 181 | CV = np.zeros((n_list, 2)) 182 | CV[:,0] = np.array(theta_list) 183 | for i in range(n_list): 184 | start_time = time.time() 185 | if model_name == 'mmnl': 186 | CV[i,1] = cross_validation_mmnl_score(sku_ID,k,CV[i,0],sub_sampling) 187 | elif model_name == 'linear': 188 | CV[i,1] = cross_validation_linear_score(sku_ID,k,CV[i,0],sub_sampling) 189 | else: 190 | sys.exit('Wrong model name!') 191 | end_time = time.time() 192 | print('##############################\n') 193 | print('theta: {:.2f}, score: {:.5f}, time: {:.2f} seconds'.format(CV[i,0], CV[i,1], end_time - start_time )) 194 | print('\n##############################') 195 | # save to csv 196 | pd.DataFrame(CV).to_csv('./../MSOM_data_cleaned/%s_CrossValidation_%s_%s_sample'%(model_name,sku_ID,str(sub_sampling)), index = False) 197 | 198 | # cross_validation_over_theta('3c79df1d80', 5, np.round(np.arange(0.1,1,0.1),1), 10000, 'mmnl') 199 | cross_validation_over_theta('3c79df1d80', 5, np.round(np.arange(0.1,1,0.1),1), False, 'linear') 200 | -------------------------------------------------------------------------------- /scripts/mmnl_simulation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Tue Sep 22 14:39:49 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | from py_estimation import * 10 | 11 | def simulated_uniform_data(T,n,d,num_ppl,params): 12 | ''' 13 | Input: 14 | T 15 | n : number of items 16 | d : number of features 17 | num_ppl: number of ppl at each time period 18 | b_dist (d,*) 19 | w (*,) weights of different coefficients 20 | params: ground truth 21 | 22 | Output: 23 | V_alltime 24 | choice_ct 25 | prob_alltime: choice proabbility conditioning on thetavec 26 | D_alltime: expected demand from a random consumer 27 | ''' 28 | 29 | (mu1,sigma1,mu2,sigma2,BH) = params 30 | 31 | V_alltime = np.ones((T,n,d)) 32 | 33 | # make features be like (1 -p, (r-p)_+, (r-p)_-) 34 | V_alltime[:,1,1] = - np.abs(np.random.normal(mu1,sigma1,T)) 35 | 36 | rminusp = np.random.normal(mu2,sigma2,T) 37 | 38 | V_alltime[:,1,2] = np.maximum(rminusp, np.zeros(T)) 39 | V_alltime[:,1,3] = np.minimum(rminusp, np.zeros(T)) 40 | 41 | 42 | #no purchase item 43 | V_alltime[:,0,:] = np.zeros((T,d)) 44 | 45 | 46 | choice_ct = np.zeros((T,n)) 47 | 48 | prob_alltime = np.zeros((T,2)) 49 | 50 | D_alltime = np.zeros((T,2)) 51 | 52 | #BH = 10 # responsiveness parameter uniform distributed over [0,BH]^4 53 | for t in range(T): 54 | 55 | x1 = V_alltime[t,1,1] 56 | x2 = V_alltime[t,1,2] 57 | x3 = V_alltime[t,1,3] 58 | #expected demand given current features 59 | #D_uniform_fast provides approximation 60 | D_alltime[t,1] = D_uniform_fast(x1,x2,x3,(BH/2, BH/2, BH/2, BH/2),BH) 61 | D_alltime[t,0] = 1 - D_alltime[t,1] 62 | 63 | prob = np.zeros(n,) 64 | for id_ppl in range(num_ppl): 65 | 66 | # sample consumer responsiveness parameters 67 | b = np.random.uniform(0,BH,d) 68 | 69 | # b[0] = b[0] - BH*0.5 70 | 71 | # sign correction 72 | # b[1] = -b[1] 73 | 74 | vb = np.zeros(d) 75 | 76 | #choice probabilities given b 77 | prob = generate_choice_prob(V_alltime[t,:,:],np.reshape(b,(d,1)),np.reshape(vb,(d,1)),np.array([1])) 78 | prob_alltime[t] = prob 79 | 80 | #generate choice according the choice probabilities 81 | choice = np.random.choice(n,1,p = prob.ravel()) 82 | 83 | #record choice count 84 | choice_ct[t,choice]+=1.0 85 | 86 | return V_alltime,choice_ct,prob_alltime, D_alltime 87 | 88 | def D_single(a,b,c_pos,c_neg,x1,x2,x3): 89 | ''' 90 | r: reference price 91 | p: price 92 | 93 | a, b(<=0), c_pos, c_neg: coefficients 94 | ''' 95 | u = a + b * x1 + c_pos * x2 + c_neg * x3 96 | 97 | demand = np.exp(u)/(1+np.exp(u)) 98 | return demand 99 | 100 | def D_uniform(x1,x2,x3,coefficients,BH): 101 | ''' 102 | one period demand, logistic demand function 103 | mixing distribution is a uniform distribution 104 | 105 | Input 106 | -------- 107 | coefficients: integratation range or parameter distribution range 108 | p: price 109 | r: reference price 110 | ''' 111 | #BH = 10 112 | (demand_uniform, abserr) = integrate.nquad(D_single, coefficients, args = (x1,x2,x3)) 113 | M = BH**4 114 | demand_uniform = demand_uniform/M 115 | return demand_uniform 116 | 117 | def D_uniform_fast(x1,x2,x3,coefficients,BH): 118 | ''' 119 | one period demand, logistic demand function 120 | mixing distribution is a uniform distribution 121 | 122 | Input 123 | -------- 124 | coefficients: integratation range or parameter distribution range 125 | p: price 126 | r: reference price 127 | ''' 128 | num_sample = 500 129 | demand_uniform = 0 130 | 131 | c = np.array(coefficients) 132 | 133 | for i in range(num_sample): 134 | b = np.random.uniform(-BH/2,BH/2,4) 135 | b = b + c 136 | 137 | u = b[0] + b[1] * x1 + b[2] * x2 + b[3] * x3 138 | demand_uniform += np.exp(u)/(1+np.exp(u)) 139 | demand_uniform = demand_uniform/num_sample 140 | return demand_uniform 141 | 142 | 143 | 144 | def simulated_Gaussian_data(T,n,d,num_ppl): 145 | ''' 146 | Input: 147 | T 148 | n : number of items 149 | num_ppl: number of ppl at each time period 150 | b_dist (d,*) 151 | w (*,) weights of different coefficients 152 | 153 | Output: 154 | V_alltime 155 | choice_ct 156 | 157 | ''' 158 | 159 | w1 = 0.4 160 | w2 = 0.6 161 | mean1 = (3,-1,3,-1) 162 | cov1 = [[0.2, -0.1, 0,0], [-0.1, 0.4,0,0], [0,0,0.2,-0.1],[0,0,-0.1,0.4]] 163 | mean2 = (-1,1,-1,1) 164 | cov2 = [[0.3,0.1,0,0],[0.1,0.3,0,0],[0,0,0.3,0.1],[0,0,-0.1,0.4]] 165 | 166 | 167 | #mu = 0, sigma = 1.5 168 | V_alltime = np.random.normal(0,1.5,(T,n,d)) 169 | V_alltime[:,:,0] = np.ones((T,n)) 170 | V_alltime[:,1,1] = - V_alltime[:,1,1] 171 | 172 | #no purchase item 173 | V_alltime[:,0,:] = np.zeros((T,d)) 174 | 175 | 176 | choice_ct = np.zeros((T,n)) 177 | 178 | for t in range(T): 179 | prob = np.zeros(n,) 180 | for id_ppl in range(num_ppl): 181 | 182 | #sample b from mixture distributions 183 | z = np.random.uniform(0,1) 184 | if z <= w1: 185 | b = np.random.multivariate_normal(mean1,cov1) 186 | else: 187 | b = np.random.multivariate_normal(mean2,cov2) 188 | 189 | #choice probabilities given b 190 | prob = generate_choice_prob(V_alltime[t,:,:],np.reshape(b,(d,1)),np.array([1])) 191 | 192 | #generate choice according the choice probabilities 193 | choice = np.random.choice(n,1,p = prob.ravel()) 194 | 195 | #record choice count 196 | choice_ct[t,choice]+=1.0 197 | 198 | return V_alltime,choice_ct 199 | 200 | 201 | def simulated_data(T,n,d,num_ppl,b_dist,w): 202 | ''' 203 | Input: 204 | T 205 | n : number of items 206 | d 207 | num_ppl: number of ppl at each time period 208 | b_dist (d,K) 209 | w (K,) weights of different coefficients 210 | 211 | Output: 212 | V_alltime 213 | choice_ct 214 | 215 | ''' 216 | V_alltime = np.random.uniform(3,5,(T,n,d)) 217 | V_alltime[:,1,1] = - V_alltime[:,1,1] 218 | V_alltime[:,:,0] = np.ones((T,n)) 219 | 220 | #no purchase item 221 | V_alltime[:,0,:] = np.zeros((T,d)) 222 | 223 | 224 | choice_ct = np.zeros((T,n)) 225 | K = len(w) 226 | prob = np.zeros((K,n)) 227 | 228 | for t in range(T): 229 | for k in range(K): 230 | prob[k] = generate_choice_prob(V_alltime[t,:,:],np.reshape(b_dist[:,k],(d,1)),np.array([1])) 231 | for id_ppl in range(num_ppl): 232 | z = np.random.choice(K,1,p = w.ravel()) 233 | choice = np.random.choice(n,1,p = prob[z].ravel()) 234 | choice_ct[t,choice]+=1.0 235 | return V_alltime,choice_ct 236 | 237 | def cee(p,q): 238 | ''' 239 | total cross entropy error: \sum_{i=1}^n H(p_i,q_i) 240 | ''' 241 | p = np.array(p).ravel() 242 | S = len(p) 243 | err = 0 244 | for i in range(S): 245 | err = err - p[i]*np.log(q[i]) - (1-p[i])*np.log(1-q[i]) 246 | return err 247 | 248 | 249 | 250 | -------------------------------------------------------------------------------- /scripts/py_MSOM_cleaning.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sat May 30 14:45:45 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | ''' 10 | MSOM data cleaning code 11 | 12 | ''' 13 | 14 | import numpy as np 15 | import pandas as pd 16 | import datetime as dt 17 | import csv 18 | 19 | 20 | def search_sku(orders,num_order,num_user): 21 | ''' 22 | Find the sku with more than num_user of frequent buyers 23 | Frequent buyers are defined as user who bought one product more than once 24 | 25 | ''' 26 | 27 | df = pd.DataFrame(columns = ['sku_ID']) 28 | #csv writer 29 | 30 | # searching 31 | for sku_ID in orders['sku_ID'].value_counts().index: 32 | 33 | # find orders of only one product/sku 34 | orders_1p = orders.loc[orders['sku_ID'] == sku_ID] 35 | 36 | # array 37 | # number of orders from every user 38 | a = orders_1p['user_ID'].value_counts().values 39 | 40 | num_frequent_user = np.sum(a > num_order) 41 | 42 | if num_frequent_user > num_user: 43 | df = df.append(pd.DataFrame([[sku_ID]], columns = ['sku_ID'])) 44 | df.to_csv('./../MSOM_data_cleaned/frequent_skus_{0}_{1}.csv'.format(str(num_order), str(num_user))) 45 | return df 46 | 47 | 48 | def extract_action(orders, clicks, sku_list): 49 | ''' 50 | Input: 51 | orders 52 | clicks 53 | sku_list: list 54 | one sku, 55 | or a list of skus with the same price and the same brand_ID 56 | Output: 57 | |user_ID | time_stamp | action | original_unit_price | final_unit_price 58 | | string| datetime | 0 = click, 1 = order| NA | 59 | 60 | ''' 61 | # column names of dataframe 62 | head = ['user_ID','sku_ID', 'time', 'quantity', 'original_unit_price', 'final_unit_price'] 63 | user_action = pd.DataFrame(columns = head) 64 | for sku_ID in sku_list: 65 | 66 | # order data 67 | orders_sku = orders.loc[orders['sku_ID'] == sku_ID] 68 | new_order_row = orders_sku[['user_ID','sku_ID','order_time', 'quantity',\ 69 | 'original_unit_price','final_unit_price']] 70 | new_order_row.rename(columns={'order_time':'time'}, inplace=True) 71 | 72 | 73 | # df.append is not in-place 74 | user_action = user_action.append(new_order_row, ignore_index = True) 75 | 76 | # click data 77 | clicks_sku = clicks.loc[clicks['sku_ID'] == sku_ID] 78 | new_click_row = pd.DataFrame(columns = head) 79 | new_click_row[['user_ID','time']] = clicks_sku[['user_ID','request_time']] 80 | new_click_row.rename(columns={'request_time':'time'}, inplace=True) 81 | new_click_row['sku_ID'] = sku_ID 82 | new_click_row['quantity'] = 0 83 | new_click_row['original_unit_price'] = np.nan 84 | new_click_row['final_unit_price'] = np.nan 85 | 86 | # df.append is not in-place 87 | user_action = user_action.append(new_click_row, ignore_index = True) 88 | return user_action 89 | 90 | def clean_action(user_action): 91 | ''' 92 | Input: 93 | user_action 94 | |user_ID | time_stamp | action | original_unit_price | final_unit_price 95 | | string| datetime | 0 = click, 1 = order| | 96 | 97 | 98 | Output: 99 | 100 | DataFrame: cleaned_action 101 | ''' 102 | # user with ID '-' are removed 103 | # it's believed '-' users do not place orders 104 | cleaned_action = user_action.loc[user_action['user_ID'] != '-'].copy() 105 | 106 | 107 | # delete clicks that appear within the same hour 108 | # create new column 109 | cleaned_action['time_hour'] = cleaned_action.apply(lambda row: row['time'].replace(minute=0, second=0), axis=1) 110 | 111 | # drop duplicate rows except the first appearance 112 | cleaned_action = cleaned_action.drop_duplicates(subset=['user_ID', 'quantity','time_hour'], keep='first') 113 | 114 | # sort values according to time 115 | cleaned_action = cleaned_action.sort_values(by = 'time') 116 | # fill in nan value in prices, default interpolate method = linear or nearest 117 | temp_o_price = pd.DataFrame(cleaned_action['original_unit_price']).interpolate() 118 | cleaned_action['original_unit_price'] = temp_o_price 119 | temp_f_price = pd.DataFrame(cleaned_action['final_unit_price']).interpolate() 120 | cleaned_action['final_unit_price'] = temp_f_price 121 | # further remove nan from prices 122 | cleaned_action = cleaned_action.loc[cleaned_action['original_unit_price'].notna()] 123 | cleaned_action = cleaned_action.loc[cleaned_action['final_unit_price'].notna()] 124 | return cleaned_action 125 | 126 | def extract_mmnl_features(cleaned_action, theta): 127 | ''' 128 | Input: cleaned action, theta 129 | 130 | Output: V, choice_ct acoording to given memory parameter 131 | 132 | ''' 133 | V = np.zeros((1,4)) 134 | choice_ct = np.zeros((1,1)) 135 | users = pd.unique(cleaned_action['user_ID']) 136 | for user in users: 137 | cleaned_action_oneuser = cleaned_action.loc[cleaned_action['user_ID'] == user] 138 | 139 | # make sure rows are sorted in the order of time 140 | cleaned_action_oneuser = cleaned_action_oneuser.sort_values(by = 'time') 141 | 142 | # initialize reference price as the first original unit price 143 | # reference_price = cleaned_action_oneuser['original_unit_price'].values[0] 144 | 145 | # initialize reference price 146 | # as the average of the first original unit price and final unit price 147 | reference_price = theta * cleaned_action_oneuser['original_unit_price'].values[0]\ 148 | + (1-theta) * cleaned_action_oneuser['final_unit_price'].values[0] 149 | 150 | for index, row in cleaned_action_oneuser.iterrows(): 151 | # update reference price 152 | price = row['final_unit_price'] 153 | 154 | choice_ct = np.vstack((choice_ct, [[row['quantity']]])) 155 | V_temp = np.zeros((1,4)) 156 | V_temp[0,0] = 1 157 | V_temp[0,1] = price 158 | V_temp[0,2] = max(reference_price - price, 0) 159 | V_temp[0,3] = min(reference_price - price, 0) 160 | V = np.vstack((V,V_temp)) 161 | 162 | # >0 only update reference price when order 163 | # >-1 update reference price when click or order 164 | if row['quantity'] > -1: 165 | reference_price = theta * reference_price + (1-theta) * price 166 | return V, choice_ct 167 | 168 | def add_reference_price(cleaned_action, user, theta): 169 | ''' 170 | add a reference price column to the dataframe for one user 171 | Input: cleaned_action: dataframe 172 | user: string 173 | Output: cleaned_action_oneuser 174 | 175 | ''' 176 | cleaned_action_oneuser = cleaned_action.loc[cleaned_action['user_ID'] == user] 177 | 178 | # make sure rows are sorted in the order of time 179 | cleaned_action_oneuser = cleaned_action_oneuser.sort_values(by = 'time') 180 | 181 | 182 | # initialize reference price as the first original unit price 183 | # reference_price = cleaned_action_oneuser['original_unit_price'].values[0] 184 | 185 | # initialize reference price 186 | # as the average of the first original unit price and final unit price 187 | cleaned_action_oneuser['reference_price'] = theta * cleaned_action_oneuser['original_unit_price'].values[0]\ 188 | + (1-theta) * cleaned_action_oneuser['final_unit_price'].values[0] 189 | 190 | for index, row in cleaned_action_oneuser.iterrows(): 191 | # >0 only update reference price when order 192 | # >-1 update reference price when click or order 193 | if row['quantity'] > -1: 194 | cleaned_action_oneuser.at[index, 'reference_price'] = \ 195 | theta * row['reference_price'] + (1-theta) * row['final_unit_price'] 196 | return cleaned_action_oneuser 197 | 198 | from itertools import repeat 199 | import multiprocessing 200 | from multiprocessing import Pool 201 | 202 | def extract_mmnl_daily_features(cleaned_action, theta): 203 | ''' 204 | Input: cleaned action, theta 205 | 206 | Output: joined_df acoording to given memory parameter 207 | 208 | NOTE: similar to extract_mmnl_features except there is a date of each data 209 | 210 | ''' 211 | V = np.zeros((1,4)) 212 | choice_ct = np.zeros((1,1)) 213 | users = pd.unique(cleaned_action['user_ID']) 214 | 215 | with Pool(10) as pool: 216 | results = pool.starmap(add_reference_price, zip(repeat(cleaned_action), users, repeat(theta))) 217 | 218 | # join dataframes with the same headers 219 | joined_df = pd.concat(results) 220 | 221 | joined_df['day'] = joined_df.apply(lambda row: float(row['time'].strftime("%d")),axis = 1) 222 | 223 | return joined_df 224 | 225 | 226 | 227 | def extract_linear_features(cleaned_action, theta): 228 | ''' 229 | Input: 230 | cleaned_action 231 | |user_ID | time | quantity | original_unit_price | final_unit_price 232 | | string| datetime | 0 = click, 1 = order| | 233 | 234 | theta memory parameter 235 | 236 | Output: 237 | features for linea model 238 | V 239 | D 240 | ''' 241 | # number of days in March 242 | M = 31 243 | 244 | V_lin = np.zeros((M,4)) 245 | V_lin[:,0] = 1 246 | D = np.zeros(M) 247 | # initialize reference price 248 | reference_price = 0 249 | price = 0 250 | 251 | for i in range(M): 252 | df = cleaned_action.loc[(cleaned_action['time'] >= dt.datetime(2018,3,i+1,0,0,0)) &\ 253 | (cleaned_action['time'] <= dt.datetime(2018,3,i+1,23,59,59))] 254 | 255 | # price equal to daily average 256 | price = df['final_unit_price'].mean() 257 | V_lin[i,1] = price 258 | # demand 259 | D[i] = df['quantity'].sum() 260 | if i == 0: 261 | reference_price = df['original_unit_price'].mean() 262 | V_lin[i,2] = max(reference_price - price, 0) 263 | V_lin[i,3] = min(reference_price - price, 0) 264 | else: 265 | V_lin[i,2] = max(reference_price - price, 0) 266 | V_lin[i,3] = min(reference_price - price, 0) 267 | 268 | # update reference price 269 | reference_price = theta * reference_price + (1-theta) * price 270 | return V_lin,D 271 | -------------------------------------------------------------------------------- /scripts/run_EM_KETrain.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from sklearn.linear_model import LogisticRegression 3 | import pandas as pd 4 | 5 | import sys 6 | 7 | 8 | if __name__ == "__main__": 9 | if len(sys.argv) < 2: 10 | raise ValueError("Please provide experiments configuration!") 11 | 12 | #sys_argv[0] is the name of the .py file 13 | num_component = int(sys.argv[1]) 14 | seed_id = sys.argv[2] 15 | folder_path = sys.argv[3] 16 | 17 | def EM_alg(x, y, k, pi=None, beta=None, r_seed=626, max_iters=100, beta_tol=1e-2): 18 | ''' 19 | Input 20 | ----- 21 | x (n,p) float 22 | y (n,) float 23 | k scalar integer 24 | ''' 25 | 26 | DEBUG = 0 27 | 28 | if DEBUG==0: 29 | np.seterr(over='ignore') # Suppress overflow warnings. Overflows are taken care of in the code 30 | 31 | np.random.seed(r_seed) 32 | 33 | n = np.shape(x)[0] 34 | p = np.shape(x)[1] 35 | 36 | # Initialize parameters 37 | if pi==None: 38 | pi = np.random.random(k) 39 | pi = pi / np.sum(pi) # sum of probabilities should be 1 40 | if beta==None: 41 | beta = np.reshape(np.random.randn(p*k), [k, p]) 42 | w = np.zeros([k,n]) 43 | 44 | for step in range(max_iters): 45 | if np.mod(step,5)==0: 46 | print('iter: ' + str(step)) 47 | 48 | # E step 49 | for i in range(n): 50 | for j in range(k): 51 | denom = 0 52 | if y[i]==1: 53 | for jj in range(k): 54 | temp = np.exp(np.sum(beta[jj]*x[i])) 55 | if temp==np.inf: # check if overflow 56 | denom = denom + pi[jj] # if overflow, then temp/(1+temp) ~= 1 57 | else: 58 | denom = denom + pi[jj] * temp / (1 + temp) 59 | temp = np.exp(np.sum(beta[j]*x[i])) 60 | if temp==np.inf: 61 | w[j,i] = pi[j] / denom 62 | else: 63 | w[j,i] = (pi[j] * temp / (1 + temp)) / denom 64 | elif y[i]==0: 65 | for jj in range(k): 66 | temp = np.exp(np.sum(beta[jj]*x[i])) 67 | if temp==np.inf: # check if overflow 68 | denom = denom 69 | else: 70 | denom = denom + pi[jj] / (1 + temp) 71 | temp = np.exp(np.sum(beta[j]*x[i])) 72 | if temp==np.inf: 73 | w[j,i] = 0 74 | else: 75 | w[j,i] = (pi[j] / (1 + temp)) / denom 76 | else: 77 | print("error: y is not binary") 78 | 79 | # M step 80 | 81 | # Update pi 82 | pi_temp = np.copy(pi) 83 | for j in range(k): 84 | pi[j] = np.sum(w[j]) / n 85 | if DEBUG: 86 | print('pi difference is ' + str(np.sum(np.power((pi_temp - pi), 2)))) 87 | 88 | # Update beta 89 | beta_temp = np.copy(beta) 90 | for j in range(k): 91 | clf = LogisticRegression(random_state = r_seed, 92 | penalty = 'none', # There is regularization by default, but removing it didn't seem to do much 93 | multi_class = 'auto', # Changing this to auto from multinomial helped 94 | solver = 'lbfgs', 95 | fit_intercept = False).fit(x,y,sample_weight=w[j]) 96 | beta[j,:] = clf.coef_ 97 | 98 | beta_diff = np.sum(np.power((beta_temp - beta), 2)) 99 | if DEBUG: 100 | print('beta difference is ' + str(beta_diff)) 101 | if beta_diff < beta_tol: 102 | print('convergence criteria reached') 103 | break 104 | 105 | # sort results 106 | idx = np.argsort(-pi) 107 | return pi[idx], beta[idx] 108 | 109 | #---------------sanity check with simulated data-----# 110 | #r_seed = 626 111 | #np.random.seed(r_seed) 112 | #k=2 113 | #p=2 114 | #n=5000 115 | #x = np.reshape(np.random.randn(n*p), [n,p]) 116 | ##beta = np.reshape(np.random.randn(k*p), [k,p]) 117 | #beta = -5*np.ones([k,p]) 118 | #pi = np.random.random(k) 119 | #pi = pi / np.sum(pi) # sum of probabilities should be 1 120 | # 121 | #y = np.zeros(n) 122 | #for i in range(n): 123 | # rdn = np.random.uniform(0,1,1) 124 | # for j in range(k): 125 | # if rdn >= pi[:j].sum() and rdn < pi[:j+1].sum(): 126 | # beta_s = beta[j] 127 | # p = np.exp(np.sum(beta_s*x[i])) / (1 + np.exp(np.sum(beta_s*x[i]))) 128 | # rdn_y = np.random.uniform(0,1,1) 129 | # if rdn_y <= p: 130 | # y[i] = 1 131 | # else: 132 | # y[i] = 0 133 | # 134 | #for i in range(5): 135 | # print(EM_alg(x, y, k, r_seed=r_seed*i)) 136 | #----------------------------------------# 137 | 138 | X = pd.read_csv(folder_path + '/X.csv', header = None).values 139 | y = pd.read_csv(folder_path + '/y.csv', header = None).values.ravel() 140 | 141 | pi, beta = EM_alg(X, y, num_component) 142 | 143 | pd.DataFrame(pi).to_csv(folder_path + '/alpha_EM.csv'\ 144 | , index= False, header = False) 145 | pd.DataFrame(beta.T).to_csv(folder_path +'/B_EM.csv'\ 146 | , index = False, header = False) 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /scripts/run_data_cleaning.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Tue Jun 2 14:10:48 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | from py_estimation import * 9 | from py_MSOM_cleaning import * 10 | 11 | # 'skus' table 12 | skus = pd.read_csv('./../MSOM_Data/JD_sku_data.csv') 13 | 14 | # 'users' table 15 | users = pd.read_csv('./../MSOM_Data/JD_user_data.csv') 16 | 17 | # 'clicks' table 18 | clicks = pd.read_csv('./../MSOM_Data/JD_click_data.csv') 19 | clicks['request_time'] = pd.to_datetime(clicks['request_time']) #string to datetime 20 | 21 | # 'orders' table 22 | orders = pd.read_csv('./../MSOM_Data/JD_order_data.csv') 23 | # to datetime 24 | orders['order_time'] = pd.to_datetime(orders['order_time']) 25 | orders['order_date'] = pd.to_datetime(orders['order_date']) 26 | # add brand_ID 27 | orders = pd.merge(orders, skus[['sku_ID','brand_ID']], on='sku_ID') 28 | # move brand_ID to the front 29 | cols = orders.columns.tolist() 30 | cols = cols[-1:] + cols[1:] 31 | orders = orders[cols] 32 | 33 | # 'delivery' table 34 | # delivery = pd.read_csv('./MSOM_data/JD_delivery_data.csv') 35 | 36 | # 'inventory' table 37 | # inventory = pd.read_csv('./MSOM_data/JD_inventory_data.csv') 38 | 39 | # 'network' table 40 | # network = pd.read_csv('./MSOM_data/JD_network_data.csv') 41 | 42 | 43 | ################# 44 | # Selected SKU_ID that are 'frequently' bounght 45 | # csv file in ./MSOM_data_cleaned/archive/frequent_skus_1_100.csv 46 | # code for generating the csv file can be found in ./MSOM_data_cleaning.ipynb 47 | ################# 48 | 49 | sku_ID_list = ['3c79df1d80','7e4cb4952a','b5cb479f7d','8dc4a01dec','adfedb6893'] 50 | 51 | for sku_ID in sku_ID_list: 52 | user_action = extract_action(orders, clicks, [sku_ID]) 53 | user_action.to_csv('./../MSOM_data_cleaned/user_action_%s.csv'%sku_ID, index = False) 54 | cleaned_action = clean_action(user_action) 55 | cleaned_action.to_csv('./../MSOM_data_cleaned/cleaned_action_%s.csv'%sku_ID, index = False) 56 | -------------------------------------------------------------------------------- /scripts/run_estimate_optimize_simulation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sat Sep 26 14:22:42 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | ''' 10 | use simulated 11 | estimation by logistic, EM, and nonparametric MLE 12 | plot results 13 | ''' 14 | 15 | 16 | from optimal_pricing_policy_exp_update import * 17 | from mmnl_simulation import * 18 | import random 19 | import pickle 20 | 21 | # timestamp = datetime.today().strftime('%m_%d_%Y') 22 | timestamp = "01_10_2022" 23 | 24 | T_est = 500 25 | n = 2 26 | d = 4 27 | folder_id = 1 28 | 29 | #---------------------------------------------------- 30 | epsilon = 0.01 # price discretization accuracy default 0.01 31 | L = 0 #lower bound of price 32 | H = 10 #upper bound of price 33 | T = np.inf 34 | theta = 0.8 # memory parameter 35 | gamma = 0.95 # discount factor 36 | price_list = np.arange(L-epsilon,H+2*epsilon,epsilon) 37 | 38 | #---------------------------- 39 | # NEED to be consistent with estimation 40 | BH = 10 41 | #----------------------------- 42 | 43 | #--------------------------------------------------------------------------------------- 44 | # mmnl (heterogeneous models) 45 | #--------------------------------------------------------------------------------------- 46 | 47 | 48 | # estimation results produced by "run_mmnl_estimation_simulation.py" 49 | B = pd.read_csv('./../simulation_results/CGM/{}/B_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 50 | vB = pd.read_csv('./../simulation_results/CGM/{}/vB_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 51 | alpha = pd.read_csv('./../simulation_results/CGM/{}/alpha_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 52 | 53 | 54 | 55 | alpha = alpha.ravel() 56 | 57 | BvB = np.append(B,vB, axis = 0) 58 | 59 | coefficients = (BvB.T).ravel() 60 | 61 | weights = alpha 62 | demand_name = 'mmnl_ext' 63 | 64 | V_1,mu_1 \ 65 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 66 | 67 | #------------------------------------------------ 68 | 69 | #--------------------------------------------------------------------------------------- 70 | # EM 71 | #--------------------------------------------------------------------------------------- 72 | 73 | 74 | # estimation results produced by "run_mmnl_estimation_simulation.py" 75 | B_EM = pd.read_csv('./../simulation_results/EM/{}/B_EM.csv'.format(folder_id), header = None).values 76 | alpha_EM = pd.read_csv('./../simulation_results/EM/{}/alpha_EM.csv'.format(folder_id), header = None).values 77 | 78 | 79 | alpha_EM = alpha_EM.ravel() 80 | coefficients = (B_EM.T).ravel() 81 | weights = alpha_EM 82 | demand_name = 'mmnl' 83 | 84 | V_2,mu_2 \ 85 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 86 | 87 | 88 | 89 | 90 | #--------------------------------------------------------------------------------------- 91 | # logistic (homogeneous) 92 | #--------------------------------------------------------------------------------------- 93 | 94 | # estimation results produced by "run_mmnl_estimation_simulation.py" 95 | B_logit = pd.read_csv('./../simulation_results/Logit/{}/B_logit_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 96 | alpha_logit = pd.read_csv('./../simulation_results/Logit/{}/alpha_logit_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 97 | 98 | 99 | 100 | alpha_logit = alpha_logit.ravel() 101 | coefficients = (B_logit.T).ravel() 102 | weights = alpha_logit 103 | demand_name = 'mmnl' 104 | 105 | V_3,mu_3 \ 106 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 107 | 108 | #------------------------------------------------ 109 | 110 | 111 | #--------------------------------------------------------------------------------------- 112 | # linear 113 | #--------------------------------------------------------------------------------------- 114 | 115 | 116 | 117 | # estimation results produced by "run_mmnl_estimation_simulation.py" 118 | B_lm = pd.read_csv('./../simulation_results/Linear/{}/B_lm_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 119 | alpha_lm = pd.read_csv('./../simulation_results/Linear/{}/alpha_lm_{}_{}_{}_{}.csv'.format(folder_id,T_est,n,d,timestamp), header = None).values 120 | 121 | 122 | 123 | alpha_lm = alpha_lm.ravel() 124 | coefficients = (B_lm.T).ravel() 125 | weights = alpha_lm 126 | 127 | demand_name = 'linear' 128 | V_4,mu_4 \ 129 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 130 | 131 | 132 | 133 | #--------------------------------------------------------------------------------------- 134 | #--------------------------------------------------------------------------------------- 135 | 136 | label_li = ['Nonparametric MLE', 'Mixed Logit via EM', 'Single Logit', 'Linear'] 137 | color_li = ["#0075DC", "#00998F", "#FFA405", "#F0A3FF" ] 138 | linestyle_li = [ 'dotted', #'dotted' 139 | (0, (5, 5)), #'dashed' 140 | (0, (3, 1, 1, 1)), #'dashdotted' 141 | 'dashdot' 142 | ] 143 | marker_li = ["o", "d", ">", "s"] 144 | 145 | 146 | 147 | 148 | 149 | 150 | #--------------------plots---------------------------- 151 | coeffname = 'estimate_optimize'+str(L).replace(".","dot")+'_'+str(H).replace(".","dot")\ 152 | +'_'+str(theta).replace(".", "dot")+'_'+str(gamma).replace(".", "dot") 153 | 154 | #------------------------ 155 | # plot price path 156 | #------------------------ 157 | start_ = 0 # staring time for plots 158 | end_ = 30 159 | i_li = random.sample(range(len(V_1)),10) 160 | i_li.append(int((H/epsilon)/2)+1) 161 | for i in i_li: 162 | c_1 = [] 163 | c_2 = [] 164 | c_3 = [] 165 | c_4 = [] 166 | 167 | id = i 168 | #apply the policy a few times 169 | for j in range(end_): 170 | c_1.append(int(mu_1[id])) 171 | id = int(mu_1[id]) 172 | price_path_1 = (price_list[c_1[1:]] - theta * price_list[c_1[:-1]])/(1-theta) 173 | 174 | id = i 175 | #apply the policy a few times 176 | for j in range(end_): 177 | c_2.append(int(mu_2[id])) 178 | id = int(mu_2[id]) 179 | price_path_2 = (price_list[c_2[1:]] - theta * price_list[c_2[:-1]])/(1-theta) 180 | 181 | id = i 182 | #apply the policy a few times 183 | for j in range(end_): 184 | c_3.append(int(mu_3[id])) 185 | id = int(mu_3[id]) 186 | price_path_3 = (price_list[c_3[1:]] - theta * price_list[c_3[:-1]])/(1-theta) 187 | 188 | id = i 189 | #apply the policy a few times 190 | for j in range(end_): 191 | c_4.append(int(mu_4[id])) 192 | id = int(mu_4[id]) 193 | price_path_4 = (price_list[c_4[1:]] - theta * price_list[c_4[:-1]])/(1-theta) 194 | 195 | 196 | fig, ax = plt.subplots() 197 | ax.plot(np.arange(start_+1,end_),price_path_1[start_:],\ 198 | label = label_li[0], color = color_li[0], linestyle = linestyle_li[0],\ 199 | marker = marker_li[0], mfc = 'none') 200 | ax.plot(np.arange(start_+1,end_),price_path_2[start_:],\ 201 | label = label_li[1],color = color_li[1],linestyle = linestyle_li[1],\ 202 | marker = marker_li[1],mfc = 'none') 203 | ax.plot(np.arange(start_+1,end_),price_path_3[start_:],\ 204 | label = label_li[2],color = color_li[2],linestyle = linestyle_li[2],\ 205 | marker = marker_li[2],mfc = 'none') 206 | ax.plot(np.arange(start_+1,end_),price_path_4[start_:],\ 207 | label = label_li[3],color = color_li[3],linestyle = linestyle_li[3],\ 208 | marker = marker_li[3],mfc = 'none') 209 | 210 | 211 | # plt.legend(bbox_to_anchor=(0., 1.1, 1., 0.1),ncol=2) 212 | ax.set_ylim(L,H+1) 213 | ax.set_xticks(np.arange(start_,end_+1,5)) 214 | ax.set_xlabel('Time', size = 16) 215 | ax.set_ylabel('Price',size = 16) 216 | coeffname_r0 = coeffname + 'r0=' + str(round(price_list[i],2)).replace(".","dot") 217 | fig.savefig('./../pricing_output/%s_price_path'%coeffname_r0, dpi= 300, bbox_inches='tight') 218 | 219 | #------------------------------------------------------------------------ 220 | # plot cumulative revenue over time 221 | #------------------------------------------------------------------------ 222 | 223 | #need at least 100 times to achieve convergence 224 | end_ = 200 225 | i = int((H/epsilon)/2)+1 226 | c_1 = [] 227 | c_2 = [] 228 | c_3 = [] 229 | c_4 = [] 230 | 231 | 232 | id = i 233 | #apply the policy a few times 234 | for j in range(end_): 235 | c_1.append(int(mu_1[id])) 236 | id = int(mu_1[id]) 237 | price_path_1 = (price_list[c_1[1:]] - theta * price_list[c_1[:-1]])/(1-theta) 238 | 239 | id = i 240 | #apply the policy a few times 241 | for j in range(end_): 242 | c_2.append(int(mu_2[id])) 243 | id = int(mu_2[id]) 244 | price_path_2 = (price_list[c_2[1:]] - theta * price_list[c_2[:-1]])/(1-theta) 245 | 246 | id = i 247 | #apply the policy a few times 248 | for j in range(end_): 249 | c_3.append(int(mu_3[id])) 250 | id = int(mu_3[id]) 251 | price_path_3 = (price_list[c_3[1:]] - theta * price_list[c_3[:-1]])/(1-theta) 252 | 253 | id = i 254 | #apply the policy a few times 255 | for j in range(end_): 256 | c_4.append(int(mu_4[id])) 257 | id = int(mu_4[id]) 258 | price_path_4 = (price_list[c_4[1:]] - theta * price_list[c_4[:-1]])/(1-theta) 259 | 260 | 261 | revenue_1 = [] 262 | cum_revenue_1 = 0 263 | 264 | revenue_2 = [] 265 | cum_revenue_2 = 0 266 | 267 | revenue_3 = [] 268 | cum_revenue_3 = 0 269 | 270 | revenue_4 = [] 271 | cum_revenue_4 = 0 272 | 273 | for j in range(end_-1): 274 | temp_1 = R_uniform_fast(price_list[c_1[j]],price_path_1[j],((BH/2, BH/2, BH/2, BH/2), BH)) 275 | # print(temp_1) 276 | 277 | cum_revenue_1 =cum_revenue_1 + gamma**j * temp_1 278 | revenue_1.append(cum_revenue_1) 279 | 280 | temp_2 = R_uniform_fast(price_list[c_2[j]],price_path_2[j],((BH/2, BH/2, BH/2, BH/2), BH)) 281 | # print(temp_2) 282 | cum_revenue_2 =cum_revenue_2 + gamma**j * temp_2 283 | revenue_2.append(cum_revenue_2) 284 | 285 | temp_3 = R_uniform_fast(price_list[c_3[j]],price_path_3[j],((BH/2, BH/2, BH/2, BH/2), BH)) 286 | # print(temp_2) 287 | cum_revenue_3 =cum_revenue_3 + gamma**j * temp_3 288 | revenue_3.append(cum_revenue_3) 289 | 290 | temp_4 = R_uniform_fast(price_list[c_4[j]],price_path_4[j],((BH/2, BH/2, BH/2, BH/2), BH)) 291 | # print(temp_2) 292 | cum_revenue_4 =cum_revenue_4 + gamma**j * temp_4 293 | revenue_4.append(cum_revenue_4) 294 | 295 | 296 | 297 | 298 | ### plots 299 | fig1, ax1 = plt.subplots() 300 | 301 | ax1.plot(np.arange(start_+1,end_),revenue_1,label = label_li[0],color = color_li[0],\ 302 | linestyle = linestyle_li[0],marker = marker_li[0],mfc = 'none',\ 303 | markevery=10) 304 | ax1.plot(np.arange(start_+1,end_),revenue_2,label = label_li[1],color = color_li[1],\ 305 | linestyle = linestyle_li[1],marker = marker_li[1],mfc = 'none',\ 306 | markevery=10) 307 | ax1.plot(np.arange(start_+1,end_),revenue_3,label = label_li[2],color = color_li[2],\ 308 | linestyle = linestyle_li[2],marker = marker_li[2],mfc = 'none',\ 309 | markevery=10) 310 | ax1.plot(np.arange(start_+1,end_),revenue_4,label = label_li[3],color = color_li[3],\ 311 | linestyle = linestyle_li[3],marker = marker_li[3],mfc = 'none',\ 312 | markevery=10) 313 | 314 | plt.legend(bbox_to_anchor=(1.01, 0.6),loc = "upper left", ncol=1) 315 | ax1.set_xticks(np.arange(start_,end_+1,20)) 316 | ax1.set_xlabel('Time', size = 16) 317 | ax1.set_ylabel('Discounted Cumulative Revenue',size = 16) 318 | coeffname_r0 = coeffname + 'r0=' + str(round(price_list[i],2)).replace(".","dot") 319 | fig1.savefig('./../pricing_output/%s_cum_revenue'%coeffname_r0, dpi= 300, bbox_inches='tight') 320 | 321 | 322 | 323 | -------------------------------------------------------------------------------- /scripts/run_extract_features.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Tue Jun 2 14:18:09 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | from py_estimation import * 9 | from py_MSOM_cleaning import * 10 | 11 | # from run_data_cleaning import * 12 | # set theta 13 | theta_list = np.round(np.arange(0,1,0.1),1) 14 | 15 | # '3c79df1d80','7e4cb4952a','b5cb479f7d','8dc4a01dec', 16 | # set sku_ID 17 | #sku_ID_list = ['adfedb6893'] 18 | sku_ID_list = ['adfedb6893', '3c79df1d80', 'b5cb479f7d'] 19 | # Whether or not to extract mmnl or linear features 20 | mmnl = False 21 | linear = True 22 | mmnl_daily = False 23 | 24 | for sku_ID in sku_ID_list: 25 | # read cleaned data 26 | cleaned_action = pd.read_csv('./../MSOM_data_cleaned/cleaned_action_%s.csv'%sku_ID, parse_dates = ['time']) 27 | 28 | if mmnl == True: 29 | for theta in [0.8]: 30 | 31 | V, choice_ct = extract_mmnl_features(cleaned_action,theta) 32 | 33 | # save to csv 34 | pd.DataFrame(V).to_csv('./../MSOM_data_cleaned/%s_%s_V'\ 35 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 36 | # save to csv 37 | pd.DataFrame(choice_ct).to_csv('./../MSOM_data_cleaned/%s_%s_choice_ct'\ 38 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 39 | if mmnl_daily == True: 40 | for theta in [0.8]: 41 | 42 | df = extract_mmnl_daily_features(cleaned_action, theta) 43 | 44 | V_daily = np.zeros((df.values.shape[0],6)) 45 | V_daily[:,0] = df['day'].values 46 | V_daily[:,1] = 1 47 | V_daily[:,2] = df['final_unit_price'].values 48 | V_daily[:,3] = np.maximum(df['reference_price'].values - df['final_unit_price'].values, 0) 49 | V_daily[:,4] = np.minimum(df['reference_price'].values - df['final_unit_price'].values, 0) 50 | V_daily[:,5] = df['quantity'].values 51 | 52 | # save to csv 53 | pd.DataFrame(V_daily).to_csv('./../MSOM_data_cleaned/%s_%s_V_daily'\ 54 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 55 | 56 | if linear == True: 57 | for theta in theta_list: 58 | 59 | V_lin, D = extract_linear_features(cleaned_action, theta) 60 | 61 | # save to csv 62 | pd.DataFrame(V_lin).to_csv('./../MSOM_data_cleaned/%s_%s_V_lin'\ 63 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 64 | # save to csv 65 | pd.DataFrame(D).to_csv('./../MSOM_data_cleaned/%s_%s_D'\ 66 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 67 | -------------------------------------------------------------------------------- /scripts/run_freq_estimate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Fri Jul 17 00:55:36 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | from py_estimation import * 10 | from py_MSOM_cleaning import * 11 | from sklearn.linear_model import LogisticRegression 12 | 13 | np.random.seed(626) 14 | random.seed(626) 15 | 16 | sku_ID = 'adfedb6893' 17 | # '3c79df1d80','7e4cb4952a','b5cb479f7d' 18 | theta_list = np.round(np.arange(0,1.1,0.1),1) 19 | 20 | sku_ID_list = ['3c79df1d80','7e4cb4952a','b5cb479f7d'] 21 | run_mmnl = True 22 | run_logistic = False 23 | option = '' 24 | 25 | for sku_ID in sku_ID_list: 26 | for theta in [0.8]: 27 | # read real data 28 | df1 = pd.read_csv('./../MSOM_data_cleaned/%s%s_%s_V'%(option,sku_ID,str(theta)[:3].replace('.', 'dot'))) 29 | V = df1.values 30 | 31 | df2 = pd.read_csv('./../MSOM_data_cleaned/%s%s_%s_choice_ct'%(option,sku_ID,str(theta)[:3].replace('.', 'dot'))) 32 | choice_ct_o = df2.values 33 | 34 | sub_sampling = 10000 #10000 35 | # process readed data, prepare for estimation 36 | choice_ct_temp = choice_ct_o[:,1] 37 | V_alltime = np.zeros((len(V), 2, 4)) 38 | V_alltime[:,0,:] = 0 # no-purchase feature 39 | V_alltime[:,1,:] = V 40 | choice_ct = np.zeros((len(choice_ct_temp), 2)) 41 | # two "products" - purchase and no-purchase 42 | choice_ct[:,0] = np.maximum(1 - choice_ct_temp.ravel(),0) 43 | choice_ct[:,1] = choice_ct_temp.ravel() 44 | #choice_ct[:,1] = (choice_ct_temp.ravel()>0).astype(int) 45 | 46 | ##################################### 47 | 48 | if run_mmnl == True: 49 | if len(choice_ct) > sub_sampling: 50 | V_alltime, choice_ct = sub_sample(V_alltime, choice_ct, sub_sampling) 51 | 52 | f, B, alpha, L_rec, b_sol_rec = CGM(V_alltime, choice_ct, 50) 53 | 54 | pd.DataFrame(B).to_csv('./../MSOM_data_estimated/freq_%s_%s_%s_B'%(sku_ID,str(theta)[:3].replace('.', 'dot'),str(sub_sampling)), index = False) 55 | pd.DataFrame(alpha).to_csv('./../MSOM_data_estimated/freq_%s_%s_%s_alpha'%(sku_ID,str(theta)[:3].replace('.', 'dot'), str(sub_sampling)), index = False) 56 | 57 | #------------------------------------------ 58 | #------reduce to binary problem 59 | mask = (choice_ct[:,1]>1) 60 | choice_ct[:,1][mask] = 1 61 | 62 | if run_logistic == True: 63 | # reformat data for logistic regression 64 | X = V_alltime[:,1,:] 65 | y = choice_ct[:,1] 66 | clf = LogisticRegression(random_state=0, solver = 'lbfgs',fit_intercept = False).fit(X,y) 67 | 68 | -------------------------------------------------------------------------------- /scripts/run_freq_user.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Thu Jul 16 14:18:47 2020 5 | 6 | @author: hanshengjiang 7 | 8 | """ 9 | ''' 10 | Extract features from data 11 | ''' 12 | 13 | from run_data_cleaning import * 14 | 15 | from py_estimation import * 16 | from py_MSOM_cleaning import * 17 | 18 | # '3c79df1d80', '7e4cb4952a', 'b5cb479f7d', '8dc4a01dec', 19 | sku_ID_list = [ 'adfedb6893'] 20 | #theta_list = np.round(np.arange(0,1.1,0.1),1) 21 | theta_list = [0.0] 22 | # sku_ID = '7e4cb4952a' 23 | 24 | for sku_ID in sku_ID_list: 25 | user_orders = orders.loc[orders['sku_ID']== sku_ID ]['user_ID'].value_counts() 26 | arr = pd.DataFrame(user_orders) 27 | arr = arr.rename(columns = {'user_ID':'counts'}) 28 | 29 | #++++++++++++++++++++++++++++++++++++++++++++++++++++++# 30 | # frequent user of this one product 31 | freq_user_list = list(arr.loc[arr['counts']>1].index) 32 | #++++++++++++++++++++++++++++++++++++++++++++++++# 33 | 34 | orders_freq = orders.loc[orders['user_ID'].isin(freq_user_list)] 35 | clicks_freq = clicks.loc[clicks['user_ID'].isin(freq_user_list)] 36 | 37 | user_action = extract_action(orders_freq, clicks_freq, ['b5cb479f7d']) 38 | cleaned_action = clean_action(user_action) 39 | cleaned_action.to_csv('./../MSOM_data_cleaned/freq_cleaned_action_%s.csv'%sku_ID) 40 | 41 | mmnl = False 42 | linear = True 43 | # set theta 44 | #theta_list = np.round(np.arange(0.0,1,0.1),1) 45 | 46 | # read cleaned data 47 | # cleaned_action = pd.read_csv('./MSOM_data_cleaned/freq_cleaned_action_%s.csv'%sku_ID, parse_dates = ['time']) 48 | 49 | if mmnl == True: 50 | for theta in theta_list: 51 | 52 | V, choice_ct_o = extract_mmnl_features(cleaned_action,theta) 53 | 54 | # save to csv 55 | pd.DataFrame(V).to_csv('./../MSOM_data_cleaned/freq_%s_%s_V'\ 56 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 57 | # save to csv 58 | pd.DataFrame(choice_ct).to_csv('./../MSOM_data_cleaned/freq_%s_%s_choice_ct'\ 59 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 60 | 61 | if linear == True: 62 | for theta in theta_list: 63 | 64 | V_lin, D = extract_linear_features(cleaned_action, theta) 65 | 66 | # save to csv 67 | pd.DataFrame(V_lin).to_csv('./../MSOM_data_cleaned/freq_%s_%s_V_lin'\ 68 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 69 | # save to csv 70 | pd.DataFrame(D).to_csv('./../MSOM_data_cleaned/freq_%s_%s_D'\ 71 | %(sku_ID,str(theta).replace('.', 'dot')), index = False) 72 | 73 | -------------------------------------------------------------------------------- /scripts/run_linear_estimation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sun May 31 10:53:15 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | ''' 10 | 11 | linear estimation 12 | 13 | ''' 14 | 15 | from py_estimation import * 16 | from py_MSOM_cleaning import * 17 | from sklearn import linear_model 18 | 19 | 20 | # set sku_ID 21 | # '3c79df1d80', 22 | sku_ID_list = ['adfedb6893', '3c79df1d80', '7e4cb4952a', 'b5cb479f7d'] 23 | 24 | option = '' 25 | for sku_ID in sku_ID_list: 26 | 27 | # chosen according to cross-validation 28 | for theta in [0.8]: 29 | 30 | 31 | # read real data 32 | df = pd.read_csv('./../MSOM_data_cleaned/%s%s_%s_V_lin'%(option,sku_ID,str(theta).replace('.', 'dot'))) 33 | V_lin = df.values 34 | df = pd.read_csv('./../MSOM_data_cleaned/%s%s_%s_D'%(option,sku_ID,str(theta).replace('.', 'dot'))) 35 | D = df.values 36 | 37 | 38 | # do NOT add extra constant intercept 39 | reg = linear_model.LinearRegression(fit_intercept = False) 40 | 41 | train_end = 31 42 | V_lin_train = V_lin[:train_end,:] 43 | D_train = D[:train_end,:] 44 | 45 | reg.fit(V_lin_train, D_train) 46 | 47 | pd.DataFrame(reg.coef_).to_csv('./../MSOM_data_estimated/{}{}_{}_linear_coef_{}'\ 48 | .format(option,sku_ID,str(theta).replace('.', 'dot'),train_end), index = False) 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /scripts/run_logisregmixEM.R: -------------------------------------------------------------------------------- 1 | # set up working directory as the location of this script 2 | # if you are running this in rstudio 3 | # setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) 4 | 5 | # check if R package "mixtools" is installed 6 | if("mixtools" %in% rownames(installed.packages()) == FALSE) {install.packages("mixtools")} 7 | require("mixtools") 8 | 9 | # receive arguments from command line 10 | args <- commandArgs(trailingOnly = TRUE) 11 | # number of components taken from command line arguments 12 | # algorithm tends to 13 | num_component <- as.numeric(args[1]) 14 | thresh <- num_component 15 | seed_id <- as.integer(args[2]) 16 | folder_path <- args[3] 17 | 18 | # set random seed 19 | set.seed(seed_id) 20 | 21 | #---------------------------------------------------------------------------# 22 | # read simulated data from file 23 | dir <- file.path(folder_path) 24 | X <- as.matrix(read.csv(file = file.path(dir, "X.csv"), header = FALSE)) 25 | y <- c(as.matrix(read.csv(file = file.path(dir, "y.csv"), header = FALSE))) 26 | #---------------------------------------------------------------------------# 27 | 28 | if(file.exists(file.path(dir, "B_logit.csv"))) { 29 | print("---Reading initialization from standard logistic regression---") 30 | B_logit <- as.matrix(read.csv(file = file.path(dir, "B_logit.csv"), header = FALSE)) 31 | len <- length(c(B_logit)) 32 | B_logit <- as.matrix(c(B_logit), nrow = len) 33 | num_component <- min(thresh, num_component) 34 | beta_ini <- matrix(rep(B_logit, each = num_component), nrow = nrow(B_logit), byrow = TRUE) 35 | 36 | #---------------------------------------------------------------------------# 37 | # call logisregmixEM from R Package mixtools 38 | # https://rdrr.io/cran/mixtools/man/logisregmixEM.html 39 | #---------------------------------------------------------------------------# 40 | reg_outcome <- logisregmixEM( 41 | y, X, 42 | k = num_component, 43 | beta = beta_ini, 44 | lambda = rep(1/num_component, as.integer(num_component)), # initialization of mixing proportions 45 | addintercept = FALSE, 46 | epsilon = 1e-03, 47 | maxit = 50, # max number of iterations 48 | verb = TRUE # print iterations 49 | ) 50 | #---------------------------------------------------------------------------# 51 | } else { # no initialization provided 52 | #---------------------------------------------------------------------------# 53 | # call logisregmixEM from R Package mixtools 54 | # https://rdrr.io/cran/mixtools/man/logisregmixEM.html 55 | #---------------------------------------------------------------------------# 56 | reg_outcome <- logisregmixEM( 57 | y, X, 58 | k = num_component, 59 | addintercept = FALSE, 60 | epsilon = 1e-03, 61 | maxit = 500, # max number of iterations 62 | verb = FALSE # print iterations 63 | ) 64 | #---------------------------------------------------------------------------# 65 | } 66 | 67 | # storage estimation results to files 68 | alpha_EM <- reg_outcome$lambda 69 | write.table(alpha_EM, file = file.path(dir, "alpha_EM.csv"),sep = ",",row.names = FALSE, col.names = FALSE) 70 | 71 | B_EM <- reg_outcome$beta 72 | write.table(B_EM, file = file.path(dir, "B_EM.csv"),sep = ",",row.names = FALSE, col.names = FALSE) 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /scripts/run_mmnl_estimation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Wed Jun 3 14:35:59 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | from py_estimation import * 9 | from py_MSOM_cleaning import * 10 | 11 | # set sku_ID. 12 | 13 | # set theta 14 | # theta_list = np.round(np.arange(0.1,1,0.1),1) 15 | 16 | # '3c79df1d80', 17 | sku_ID_list = ['3c79df1d80', '7e4cb4952a', 'b5cb479f7d', '8dc4a01dec', 'adfedb6893'] 18 | 19 | # ['adfedb6893', '3c79df1d80', 'b5cb479f7d']: 20 | 21 | from itertools import repeat 22 | import multiprocessing 23 | from multiprocessing import Pool 24 | 25 | 26 | 27 | def estimate_JD(sku_ID, rd_seed): 28 | np.random.seed(rd_seed) 29 | 30 | # chosen according to cross-validation 31 | for theta in [0.8]: 32 | 33 | # sample size, total number of rows is too large 34 | sub_sampling = 2000 35 | 36 | # cleaned_action = pd.read_csv('./MSOM_data_cleaned/cleaned_action_%s.csv'%sku_ID, parse_dates = ['time']) 37 | 38 | #---------------------------------------# 39 | 40 | # read real data 41 | df = pd.read_csv('./../MSOM_data_cleaned/%s_%s_V'%(sku_ID,str(theta)[:3].replace('.', 'dot'))) 42 | V = df.values 43 | 44 | df = pd.read_csv('./../MSOM_data_cleaned/%s_%s_choice_ct'%(sku_ID,str(theta)[:3].replace('.', 'dot'))) 45 | choice_ct_temp = df.values 46 | # process readed data, prepare for estimation 47 | V_alltime = np.zeros((len(V), 2, 4)) 48 | V_alltime[:,0,:] = 0 # no purchase feature 49 | V_alltime[:,1,:] = V 50 | 51 | # change sign of features (1, -p, (r-p)_+, (r-p)_-) 52 | V_alltime[:,1,1] = - V_alltime[:,1,1] 53 | 54 | choice_ct = np.zeros((len(choice_ct_temp), 2)) 55 | # two "products" - purchase and no-purchase 56 | choice_ct[:,0] = np.maximum(1 - choice_ct_temp.ravel(),0) 57 | choice_ct[:,1] = np.minimum(1, choice_ct_temp.ravel()) 58 | #choice_ct[:,1] = (choice_ct_temp.ravel()>0).astype(int) 59 | #---------------------------------------# 60 | 61 | if len(choice_ct) > sub_sampling: 62 | V_alltime, choice_ct = sub_sample(V_alltime, choice_ct, sub_sampling) 63 | 64 | 65 | 66 | start_time = time.time() 67 | f, B, vB, alpha, L_rec = CGM(V_alltime, choice_ct, 60) 68 | print("--- %s seconds ---" % (time.time() - start_time)) 69 | 70 | pd.DataFrame(B).to_csv('./../MSOM_data_estimated/%s_%s_%s_B'%(sku_ID,str(theta).replace('.', 'dot'),str(sub_sampling)), index = False, header = False) 71 | pd.DataFrame(vB).to_csv('./../MSOM_data_estimated/%s_%s_%s_vB'%(sku_ID,str(theta).replace('.', 'dot'),str(sub_sampling)), index = False, header = False) 72 | pd.DataFrame(alpha).to_csv('./../MSOM_data_estimated/%s_%s_%s_alpha'%(sku_ID,str(theta).replace('.', 'dot'), str(sub_sampling)), index = False, header = False) 73 | 74 | 75 | # read file 76 | # note: header = None is important 77 | B = pd.read_csv('./../MSOM_data_estimated/%s_%s_%s_B'%(sku_ID,str(theta).replace('.', 'dot'),str(sub_sampling)), header = None).values 78 | vB = pd.read_csv('./../MSOM_data_estimated/%s_%s_%s_vB'%(sku_ID,str(theta).replace('.', 'dot'),str(sub_sampling)), header = None).values 79 | alpha = pd.read_csv('./../MSOM_data_estimated/%s_%s_%s_alpha'%(sku_ID,str(theta).replace('.', 'dot'), str(sub_sampling)), header = None).values 80 | 81 | alpha = alpha.ravel() 82 | 83 | alphaBvB = np.append(np.reshape(alpha, (len(alpha),1)),\ 84 | (np.append(B,vB, axis = 0)).T, axis = 1) 85 | idx = (-alpha).argsort() 86 | alphaBvB = alphaBvB[idx] 87 | 88 | pd.DataFrame(alphaBvB).to_csv('./../MSOM_data_estimated/%s_%s_%s_alphaBvB.csv'%(sku_ID,str(theta).replace('.', 'dot'), \ 89 | str(sub_sampling)), index = False, header = False, float_format='%.3f') 90 | 91 | 92 | with Pool(3) as mmnl_pool: 93 | mmnl_pool.starmap(estimate_JD, [('adfedb6893',1), ('3c79df1d80',2), ('b5cb479f7d',3)]) -------------------------------------------------------------------------------- /scripts/run_mmnl_myopic_pricing.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | 5 | @author: hanshengjiang 6 | """ 7 | 8 | from multiprocessing import Pool 9 | from optimal_pricing_policy_exp_update import * 10 | def JD_myopic_pricing(sku_ID, L,H, sub_sampling): 11 | 12 | # timestamp = datetime.today().strftime('%m_%d_%Y') 13 | timestamp = "01_10_2022" 14 | 15 | 16 | theta = 0.8 17 | # discretization accuracy 18 | epsilon = (H-L)/500 19 | 20 | gamma = 0.95 21 | 22 | price_list = np.arange(L-epsilon,H+2*epsilon,epsilon) 23 | M = len(price_list) 24 | T = np.inf 25 | 26 | # estimation results produced by "run_mmnl_estimation_simulation.py" 27 | B = pd.read_csv('./../MSOM_data_estimated/{}/CGM/B_{}.csv'.format(sku_ID,timestamp), header = None).values 28 | vB = pd.read_csv('./../MSOM_data_estimated/{}/CGM/vB_{}.csv'.format(sku_ID,timestamp), header = None).values 29 | alpha = pd.read_csv('./../MSOM_data_estimated/{}/CGM/alpha_{}.csv'.format(sku_ID,timestamp), header = None).values 30 | 31 | # processing 32 | alpha = alpha.ravel() 33 | BvB = np.append(B,vB, axis = 0) 34 | coefficients = (BvB.T).ravel() 35 | weights = alpha 36 | demand_name = 'mmnl_ext' 37 | 38 | V_npmle,mu_npmle \ 39 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,\ 40 | coefficients,weights,demand_name) 41 | npmle_mean = np.sum(V_npmle)/M 42 | npmle_median = np.median(V_npmle.ravel()) 43 | 44 | 45 | 46 | # myopic pricing policy 47 | # myopic with respect to true model 48 | V_m,mu_m = myopic_inf_hor_pricing_pricerange(L,H,theta,epsilon,T,gamma,coefficients,weights,demand_name) 49 | 50 | pd.DataFrame(V_m).to_csv('./../MSOM_data_estimated/{}/V_myopic'.format(sku_ID), index = False, header = False) 51 | pd.DataFrame(mu_m).to_csv('./../MSOM_data_estimated/{}/mu_myopic'.format(sku_ID), index = False, header = False) 52 | 53 | myopic_mean = np.sum(V_m)/M 54 | myopic_median = np.median(V_m.ravel()) 55 | 56 | print(sku_ID, "npmle_mean:", npmle_mean, "myopic_mean:", myopic_mean, \ 57 | "npmle_median:", npmle_median, "myopic_median:", myopic_median) 58 | 59 | count = 2000 60 | with Pool(3) as pool: 61 | pool.starmap(JD_myopic_pricing, \ 62 | [('adfedb6893',50,160,count),\ 63 | ('3c79df1d80',30,60,count),\ 64 | ('b5cb479f7d', 20,50,count) ]) 65 | 66 | -------------------------------------------------------------------------------- /scripts/run_mmnl_pricing_optimization.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Tue Jul 14 21:00:52 2020 5 | 6 | @author: hanshengjiang 7 | """ 8 | 9 | from optimal_pricing_policy_exp_update import * 10 | 11 | # change plot fonts 12 | rc = {"font.family" : "serif", 13 | "mathtext.fontset" : "stix", 14 | "font.size": 16} 15 | plt.rcParams.update(rc) 16 | plt.rcParams["font.serif"] = ["Times New Roman"] + plt.rcParams["font.serif"] 17 | # +++++++++++++++++++++++++++++++++++++++++++++ 18 | 19 | import random 20 | np.random.seed(626) 21 | random.seed(626) 22 | 23 | ####Ningyuan's coefficients for linear 24 | # demand_name = 'linear' 25 | # for linear demand, all zero means fake segment 26 | # coefficients = (1,0.3,0,0.1,4,2,1.75,2) 27 | # coefficients = (0,0,0,0,4,2,1.75,1.75) 28 | 29 | 30 | # +++++++++++++++++++++++++++++++++ 31 | # Read Estimated Results 32 | # +++++++++++++++++++++++++++++++++ 33 | 34 | # sku_ID_list = ['adfedb6893','3c79df1d80', '7e4cb4952a', 'b5cb479f7d'] 35 | 36 | # '8dc4a01dec' 37 | # ('adfedb6893',50,160,10000)\ 38 | # ('3c79df1d80',30,60,13000),('7e4cb4952a', 20, 50,13000) 39 | # ('3c79df1d80',30,60,10000) 40 | option = '' 41 | 42 | for theta in [0.8]: 43 | for (sku_ID, L,H, sub_sampling) in [ ('adfedb6893',50,160,2000),('3c79df1d80',30,60,2000),('b5cb479f7d', 20,50,2000)]: 44 | 45 | # timestamp = datetime.today().strftime('%m_%d_%Y') 46 | timestamp = "01_16_2022" 47 | 48 | 49 | # L and H should be adjusted with sku_ID 50 | epsilon = (H-L)/500 51 | # L = 60 # lowest price changes with sku 52 | # H = 150 # highest price changes with sku 53 | 54 | 55 | T = np.inf 56 | gamma = 0.95 # discounted factor 57 | price_list = np.arange(L-epsilon,H+ 2*epsilon,epsilon) 58 | 59 | 60 | 61 | # estimation results produced by "run_mmnl_estimation_simulation.py" 62 | B = pd.read_csv('./../MSOM_data_estimated/{}/CGM/B_{}.csv'.format(sku_ID,timestamp), header = None).values 63 | vB = pd.read_csv('./../MSOM_data_estimated/{}/CGM/vB_{}.csv'.format(sku_ID,timestamp), header = None).values 64 | alpha = pd.read_csv('./../MSOM_data_estimated/{}/CGM/alpha_{}.csv'.format(sku_ID,timestamp), header = None).values 65 | 66 | # processing 67 | alpha = alpha.ravel() 68 | BvB = np.append(B,vB, axis = 0) 69 | coefficients = (BvB.T).ravel() 70 | weights = alpha 71 | demand_name = 'mmnl_ext' 72 | 73 | 74 | #optimal pricing policy 75 | V,mu \ 76 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 77 | 78 | pd.DataFrame(V).to_csv('./../MSOM_data_estimated/{}{}_{}_{}_V'.format(option,sku_ID,str(theta)[:3].replace('.', 'dot'),str(sub_sampling))) 79 | pd.DataFrame(mu).to_csv('./../MSOM_data_estimated/{}{}_{}_{}_mu'.format(option,sku_ID,str(theta)[:3].replace('.', 'dot'),str(sub_sampling))) 80 | 81 | 82 | #+++++++++++++++++++++++++++++++++ 83 | # plot results 84 | #+++++++++++++++++++++++++++++++ 85 | 86 | 87 | # name prefix for saved plots 88 | coeffname = 'pricing_opt'+ '_'+demand_name+'_'\ 89 | +sku_ID+'_'+ str(theta)[:3].replace('.', 'dot') +'_' + str(sub_sampling)+'_'\ 90 | +str(L).replace(".","dot")+'_'+str(H).replace(".","dot")+'_'+str(T)+'_' \ 91 | + str(epsilon).replace(".","dot")+'_'+ str(gamma)[:4].replace('.', 'dot') 92 | 93 | # # reference price 94 | # fig, ax = plt.subplots() 95 | # ax.plot(price_list[np.arange(len(mu)).astype(int)], price_list[mu.astype(int)],\ 96 | # color = 'black',linestyle = '--',marker = 'o',mfc = 'none'); 97 | # ax.set_xlabel(r"$r_t$",size = 30); 98 | # ax.set_ylabel(r"$r_{t+1}$",size = 30); 99 | # ax.set_ylim(L-1,H+1) 100 | # fig.savefig('./pricing_output/%s_referenceprice'%coeffname, dpi= 300) 101 | # 102 | # # value function as a function of reference price 103 | # fig1, ax1 = plt.subplots() 104 | # ax1.plot(price_list[np.arange(len(mu)).astype(int)], \ 105 | # V, color = 'black',mfc = 'none'); 106 | # ax1.set_xlabel(r"$r_t$",size = 30); 107 | # ax1.set_ylabel(r"$V^*(r_t)$",size = 30); 108 | # #ax2.set_ylim(,) 109 | # fig1.savefig('./pricing_output/%s_value_function'%coeffname, dpi= 300) 110 | # 111 | # # pricing policy 112 | # fig2, ax2 = plt.subplots() 113 | # ax2.plot(price_list[np.arange(len(mu)).astype(int)], 114 | # (price_list[mu.astype(int)] - theta * price_list[np.arange(len(mu)).astype(int)])/(1-theta),\ 115 | # color = 'black',linestyle = '--',marker = 'o',mfc = 'none'); 116 | # ax2.set_xlabel(r"$r_t$",size = 30); 117 | # ax2.set_ylabel(r"$p^*_t$",size = 30); 118 | # ax2.set_ylim(L-1,H+1) 119 | # fig2.savefig('./pricing_output/%s_price'%coeffname, dpi= 300) 120 | 121 | # plot price path 122 | i_li = random.sample(range(len(V)),10) 123 | i_li.append(int((H/epsilon)/2)+1) 124 | for i in i_li: 125 | c = [] 126 | # choose different initial reference price 127 | id = i 128 | 129 | # need to add the first reference price 130 | c.append(id) 131 | 132 | #apply the policy a few times 133 | for j in range(30): 134 | c.append(int(mu[id])) 135 | id = int(mu[id]) 136 | 137 | fig3, ax3 = plt.subplots() 138 | plt.tight_layout() 139 | price_path = (price_list[c[1:]] - theta * price_list[c[:-1]])/(1-theta) 140 | ax3.plot(range(len(price_path)),price_path,color = 'black',mfc = 'none',marker = 'o',linestyle = '--') 141 | ax3.set_ylim(L-1,H+1) 142 | ax3.set_xlabel('Time') 143 | #ax3.set_ylabel('optimal price path') 144 | ax3.set_ylabel('Price') 145 | coeffname_r0 = coeffname + '_r0=' + str(round(price_list[id],2)).replace(".","dot") 146 | fig3.savefig('./../pricing_output/%s_price_path'%coeffname_r0, dpi= 300,bbox_inches='tight') 147 | -------------------------------------------------------------------------------- /scripts/run_mmnl_revenue_compare.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | @author: hanshengjiang 5 | """ 6 | 7 | from itertools import repeat 8 | import multiprocessing 9 | 10 | from datetime import datetime 11 | from multiprocessing import Pool 12 | from optimal_pricing_policy_exp_update import * 13 | 14 | from sklearn.linear_model import LogisticRegression 15 | from sklearn.linear_model import LinearRegression 16 | 17 | 18 | #----------------------------revenue------------------------------------------- 19 | def JD_revenue_compare(sku_ID, L,H, sub_sampling, timestamp, ground_truth = "npmle"): 20 | 21 | 22 | 23 | for theta in [0.8]: 24 | 25 | # discretization accuracy 26 | epsilon = (H-L)/500 27 | 28 | gamma = 0.95 29 | # theta = 0.8 30 | 31 | 32 | #----------------------------------------- 33 | #---------------------------------------------------------------------------------- 34 | # Linear model 35 | #---------------------------------------------------------------------------------- 36 | #----------------------------------------- 37 | 38 | coefficients = pd.read_csv('./../MSOM_data_estimated/{}/Linear/B_lm_{}.csv'\ 39 | .format(sku_ID, timestamp), header = None).values.ravel() 40 | 41 | weights = np.array([1.0]) 42 | demand_name = 'linear' 43 | 44 | 45 | V_linear,mu_linear \ 46 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,\ 47 | coefficients,weights,demand_name) 48 | # save to file 49 | pd.DataFrame(V_linear).to_csv('./../MSOM_data_estimated/{}/V_linear'.format(sku_ID), index = False, header = False) 50 | pd.DataFrame(mu_linear).to_csv('./../MSOM_data_estimated/{}/mu_linear'.format(sku_ID), index = False, header = False) 51 | 52 | 53 | #----------------------------------------- 54 | #---------------------------------------------------------------------------------- 55 | # CGM 56 | #---------------------------------------------------------------------------------- 57 | #----------------------------------------- 58 | 59 | # estimation results produced by "run_mmnl_estimation_simulation.py" 60 | B = pd.read_csv('./../MSOM_data_estimated/{}/CGM/B_{}.csv'.format(sku_ID,timestamp), header = None).values 61 | vB = pd.read_csv('./../MSOM_data_estimated/{}/CGM/vB_{}.csv'.format(sku_ID,timestamp), header = None).values 62 | alpha = pd.read_csv('./../MSOM_data_estimated/{}/CGM/alpha_{}.csv'.format(sku_ID,timestamp), header = None).values 63 | 64 | # processing 65 | alpha = alpha.ravel() 66 | BvB = np.append(B,vB, axis = 0) 67 | coefficients = (BvB.T).ravel() 68 | weights = alpha 69 | demand_name = 'mmnl_ext' 70 | 71 | V_npmle,mu_npmle \ 72 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,\ 73 | coefficients,weights,demand_name) 74 | 75 | # save to file 76 | pd.DataFrame(V_npmle).to_csv('./../MSOM_data_estimated/{}/V_npmle'.format(sku_ID), index = False, header = False) 77 | pd.DataFrame(mu_npmle).to_csv('./../MSOM_data_estimated/{}/mu_npmle'.format(sku_ID), index = False, header = False) 78 | 79 | 80 | #----------------------------------------- 81 | #---------------------------------------------------------------------------------- 82 | # mixed logit by EM 83 | #---------------------------------------------------------------------------------- 84 | #----------------------------------------- 85 | 86 | 87 | #-------------------Read EM estimated results ----------------# 88 | B_EM = pd.read_csv('./../MSOM_data_estimated/{}/EM/B_EM.csv'.format(sku_ID), header = None).values 89 | alpha_EM = pd.read_csv('./../MSOM_data_estimated/{}/EM/alpha_EM.csv'.format(sku_ID), header = None).values.ravel() 90 | #------------------------------------------------------------# 91 | demand_name = 'mmnl' 92 | coefficients = (B_EM.T).ravel() 93 | weights = alpha_EM.ravel() 94 | 95 | V_EM,mu_EM \ 96 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,\ 97 | coefficients,weights,demand_name) 98 | 99 | # save to file 100 | pd.DataFrame(V_EM).to_csv('./../MSOM_data_estimated/{}/V_EM'.format(sku_ID), index = False, header = False) 101 | pd.DataFrame(mu_EM).to_csv('./../MSOM_data_estimated/{}/mu_EM'.format(sku_ID), index = False, header = False) 102 | 103 | 104 | #----------------------------------------- 105 | #---------------------------------------------------------------------------------- 106 | # logistic regression by sklearn 107 | #---------------------------------------------------------------------------------- 108 | #----------------------------------------- 109 | 110 | #-------------------Read logit estimated results ----------------# 111 | B_logit = pd.read_csv('./../MSOM_data_estimated/{}/Logit/B_logit.csv'.format(sku_ID), header = None).values 112 | alpha_logit = pd.read_csv('./../MSOM_data_estimated/{}/Logit/alpha_logit.csv'.format(sku_ID), header = None).values.ravel() 113 | #------------------------------------------------------------# 114 | demand_name = 'mmnl' 115 | coefficients = (B_logit.T).ravel() 116 | weights = alpha_logit.ravel() 117 | 118 | V_logit,mu_logit \ 119 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,\ 120 | coefficients,weights,demand_name) 121 | # save to file 122 | pd.DataFrame(V_logit).to_csv('./../MSOM_data_estimated/{}/V_logit'.format(sku_ID), index = False, header = False) 123 | pd.DataFrame(mu_logit).to_csv('./../MSOM_data_estimated/{}/mu_logit'.format(sku_ID), index = False, header = False) 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | #---------------- 132 | # Policy evaluation 133 | #---------------- 134 | 135 | price_list = np.arange(L-epsilon,H+2*epsilon,epsilon) 136 | M = len(price_list) 137 | T = np.inf 138 | 139 | 140 | if ground_truth == "npmle": 141 | # use npmle as ground truth 142 | func = 'mmnl_ext' 143 | coefficients = (BvB.T).ravel() 144 | weights = alpha 145 | elif ground_truth == "EM": 146 | func = 'mmnl' 147 | coefficients = (B_EM.T).ravel() 148 | weights = alpha_EM.ravel() 149 | elif ground_truth == "logit": 150 | func = 'mmnl' 151 | coefficients = (B_logit.T).ravel() 152 | weights = alpha_logit.ravel() 153 | elif ground_truth == "linear": 154 | func = "linear" 155 | coefficients = pd.read_csv('./../MSOM_data_estimated/{}/Linear/B_lm_{}.csv'\ 156 | .format(sku_ID, timestamp), header = None).values.ravel() 157 | weights = np.array([1.0]) 158 | 159 | 160 | 161 | V = policy_evaluation(L,H,theta,epsilon,T,gamma,coefficients,weights,func,mu_npmle) 162 | npmle_mean = np.sum(V)/M 163 | npmle_median = np.median(V.ravel()) 164 | 165 | V = policy_evaluation(L,H,theta,epsilon,T,gamma,coefficients,weights,func,mu_EM) 166 | EM_mean = np.sum(V)/M 167 | EM_median = np.median(V.ravel()) 168 | 169 | 170 | V = policy_evaluation(L,H,theta,epsilon,T,gamma,coefficients,weights,func,mu_logit) 171 | logit_mean = np.sum(V)/M 172 | logit_median = np.median(V.ravel()) 173 | pd.DataFrame(V).to_csv('./../MSOM_data_estimated/{}/V_logit_under{}'\ 174 | .format(sku_ID, func), index = False, header = False) 175 | 176 | 177 | V = policy_evaluation(L,H,theta,epsilon,T,gamma,coefficients,weights,func,mu_linear) 178 | linear_mean = np.sum(V)/M 179 | linear_median = np.median(V.ravel()) 180 | 181 | 182 | # myopic pricing policy 183 | # myopic with respect to true model 184 | V_m,mu_m = myopic_inf_hor_pricing_pricerange(L,H,theta,epsilon,T,gamma,coefficients,weights,'mmnl_ext') 185 | 186 | pd.DataFrame(V_m).to_csv('./../MSOM_data_estimated/{}/V_myopic'.format(sku_ID), index = False, header = False) 187 | pd.DataFrame(mu_m).to_csv('./../MSOM_data_estimated/{}/mu_myopic'.format(sku_ID), index = False, header = False) 188 | 189 | # print results 190 | myopic_mean = np.sum(V_m)/M 191 | myopic_median = np.median(V_m.ravel()) 192 | print(sku_ID, npmle_mean, myopic_mean, npmle_median,myopic_median) 193 | 194 | 195 | return np.array([npmle_mean, EM_mean, logit_mean, linear_mean,\ 196 | npmle_median,EM_median,logit_median,linear_median]) 197 | 198 | count = 2000 199 | import sys 200 | if __name__ == "__main__": 201 | if len(sys.argv) < 2: 202 | ground_truth = "npmle" 203 | else: 204 | #sys_argv[0] is the name of the .py file 205 | ground_truth = sys.argv[1] 206 | 207 | with Pool(3) as pool: 208 | # timestamp = datetime.today().strftime('%m_%d_%Y') 209 | timestamp = "01_16_2022" 210 | 211 | jd_revenue_results = pool.starmap(JD_revenue_compare, \ 212 | [('adfedb6893',50,160,count, timestamp, ground_truth),\ 213 | ('3c79df1d80',30,60,count, timestamp, ground_truth),\ 214 | ('b5cb479f7d', 20,50,count, timestamp, ground_truth) ]) 215 | #print(jd_revenue_results) 216 | jd_revenue_results_arr = np.zeros((3,8)) 217 | for i in range(3): 218 | jd_revenue_results_arr[i] = np.array(jd_revenue_results[i]).ravel() 219 | pd.DataFrame(jd_revenue_results_arr).to_csv('./../MSOM_data_optimized/jd_revenue_results_{}_{}.csv'.format(timestamp,ground_truth),\ 220 | index= False, header = False ) 221 | 222 | # reformulate into the same format as the table in paper 223 | jd_revenue_latex = np.zeros((4,6)) 224 | jd_revenue_latex[:,0] = jd_revenue_results_arr[0,:4] 225 | jd_revenue_latex[:,1] = jd_revenue_results_arr[0,4:] 226 | jd_revenue_latex[:,2] = jd_revenue_results_arr[1,:4] 227 | jd_revenue_latex[:,3] = jd_revenue_results_arr[1,4:] 228 | jd_revenue_latex[:,4] = jd_revenue_results_arr[2,:4] 229 | jd_revenue_latex[:,5] = jd_revenue_results_arr[2,4:] 230 | 231 | pd.DataFrame(jd_revenue_latex).to_csv('./../MSOM_data_optimized/jd_revenue_latex_{}_{}.csv'.format(timestamp,ground_truth),\ 232 | index= False, header = False ) 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /scripts/run_myopic_pricing_optimization_simulation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | 5 | @author: hanshengjiang 6 | """ 7 | from optimal_pricing_policy_exp_update import * 8 | import random 9 | import time 10 | 11 | import sys 12 | 13 | from itertools import repeat 14 | import multiprocessing 15 | from multiprocessing import Pool 16 | 17 | if __name__ == "__main__": 18 | if len(sys.argv) < 2: 19 | raise ValueError("Please provide experiments configuration!") 20 | 21 | config = sys.argv[1] 22 | 23 | # default 24 | if len(sys.argv) < 7: 25 | epsilon = 0.01 # price discretization accuracy 26 | L = 0 #lower bound of price 27 | H = 10 #upper bound of price 28 | T = np.inf 29 | theta = 0.8 30 | gamma = 0.95 31 | # otherwise take arguments from command line 32 | else: 33 | #sys_argv[0] is the name of the .py file 34 | epsilon = float(sys.argv[2]) 35 | L = float(sys.argv[3]) # number of data points 36 | H = float(sys.argv[4]) 37 | T = float(sys.argv[5]) 38 | if T != np.inf: 39 | T = int(T) 40 | theta = float(sys.argv[6]) 41 | 42 | if config == 'myopic_1': 43 | coefficients = (1,1,1,1) 44 | weights = (1,0,0) 45 | demand_name = 'mmnl' 46 | 47 | elif config == 'myopic_2': 48 | coefficients = (2,2,0.2,0.2) 49 | weights = (1,0,0) 50 | demand_name = 'mmnl' 51 | 52 | price_list = np.arange(L-epsilon,H+2*epsilon,epsilon) 53 | 54 | 55 | def compute_myopic(c): 56 | coefficients = (2, 2,c,2) 57 | #---------------------------------# 58 | # myopic pricing policy 59 | # name prefix for saved plots 60 | coeffname = 'myopic_inf_hor_fixed_price_range'+str(L).replace(".","dot")+'_'+str(H).replace(".","dot")+'_'+str(T)+'_'\ 61 | +str(coefficients).replace(" ", "_").replace(".","dot")\ 62 | +str(weights).replace(" ","_").replace(".","dot")+'_'+str(theta).replace(".", "dot")+'_'+str(gamma).replace(".", "dot")+demand_name 63 | 64 | # optimal pricing policy 65 | V,mu \ 66 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 67 | 68 | pd.DataFrame(V).to_csv('./../pricing_output/%s_V'%coeffname, index = False, header = False) 69 | pd.DataFrame(mu).to_csv('./../pricing_output/%s_mu'%coeffname, index = False, header = False) 70 | 71 | # myopic pricing policy 72 | V_m,mu_m \ 73 | = myopic_inf_hor_pricing_pricerange(L,H,theta,epsilon,T,gamma,coefficients,weights,demand_name) 74 | 75 | pd.DataFrame(V_m).to_csv('./../pricing_output/%s_V_m'%coeffname, index = False, header = False) 76 | pd.DataFrame(mu_m).to_csv('./../pricing_output/%s_mu_m'%coeffname, index = False, header = False) 77 | 78 | #---------------------------------# 79 | 80 | ''' 81 | #---------------price path-------------------------# 82 | # plot price path 83 | start_ = 0 # staring time for plots 84 | end_ = 20 85 | # i_li = random.sample(range(len(V)),1) 86 | i_li = [] 87 | i_li.append(int((H/epsilon)/2)+1) 88 | for i in i_li: 89 | 90 | c = [] 91 | id = i 92 | # need to add the first reference price 93 | c.append(id) 94 | #apply the policy a few times 95 | for j in range(end_): 96 | c.append(int(mu[id])) 97 | id = int(mu[id]) 98 | 99 | c_m = [] 100 | id_m = i 101 | # need to add the first reference price 102 | c_m.append(id_m) 103 | #apply the policy a few times 104 | for j in range(end_): 105 | c_m.append(int(mu_m[id_m])) 106 | id_m = int(mu_m[id_m]) 107 | 108 | fig3, ax3 = plt.subplots() 109 | plt.tight_layout() 110 | price_path = (price_list[c[1:]] - theta * price_list[c[:-1]])/(1-theta) 111 | ax3.plot(np.arange(start_,end_),price_path[start_:],\ 112 | marker = 'o',mfc = 'none',color = 'black',linestyle = '--') 113 | 114 | price_path_m = (price_list[c_m[1:]] - theta * price_list[c_m[:-1]])/(1-theta) 115 | ax3.plot(np.arange(start_,end_),price_path_m[start_:],\ 116 | marker = 'o',mfc = 'none', color = 'black',linestyle = '--') 117 | 118 | 119 | ax3.set_ylim(L,H+1) 120 | ax3.set_xticks(np.arange(start_,end_+1,5)) 121 | ax3.set_xlabel('Time', size = 16) 122 | #ax3.set_ylabel('optimal price path',size = 16) 123 | ax3.set_ylabel('Price',size = 16) 124 | coeffname_r0 = coeffname + 'r0=' + str(round(price_list[i],2)).replace(".","dot") 125 | fig3.savefig('./../pricing_output/%s_price_path'%coeffname_r0, dpi= 300) 126 | ''' 127 | 128 | print(c, (np.divide(V - V_m,V)).sum()/len(V)) 129 | 130 | with Pool(9) as pool: 131 | pool.map(compute_myopic, np.arange(1,5,0.5)) 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /scripts/run_pricing_optimization.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | @author: hanshengjiang 5 | """ 6 | 7 | from optimal_pricing_policy_exp_update import * 8 | import random 9 | import time 10 | 11 | import sys 12 | 13 | if __name__ == "__main__": 14 | if len(sys.argv) < 2: 15 | raise ValueError("Please provide experiments configuration!") 16 | 17 | config = sys.argv[1] 18 | 19 | # default 20 | if len(sys.argv) < 7: 21 | epsilon = 0.01 # price discretization accuracy 22 | L = 0 #lower bound of price 23 | H = 10 #upper bound of price 24 | T = np.inf 25 | theta = 0.8 26 | gamma = 0.95 27 | # otherwise take arguments from command line 28 | else: 29 | #sys_argv[0] is the name of the .py file 30 | epsilon = float(sys.argv[2]) 31 | L = float(sys.argv[3]) # number of data points 32 | H = float(sys.argv[4]) 33 | T = float(sys.argv[5]) 34 | if T != np.inf: 35 | T = int(T) 36 | theta = float(sys.argv[6]) 37 | 38 | 39 | 40 | 41 | price_list = np.arange(L-epsilon,H+2*epsilon,epsilon) 42 | 43 | if config == 'mmnl_1': 44 | coefficients = (1,1,1,1) 45 | weights = (1,0,0) 46 | demand_name = 'mmnl' 47 | elif config == 'mmnl_2_1': 48 | coefficients = (-5,0,1,5) 49 | weights = (1,0,0) 50 | demand_name = 'mmnl' 51 | elif config == 'mmnl_2_2': 52 | coefficients = (2,10,0.5,1) 53 | weights = (1,0,0) 54 | demand_name = 'mmnl' 55 | elif config == 'mmnl_3': 56 | coefficients = (2,2,0.2,0.2,-1,0.2,0,0) 57 | weights = (0.5,0.5,0) 58 | demand_name = 'mmnl' 59 | elif config == 'mmnl_3_1': 60 | coefficients = (2,2,0.2,0.2) 61 | weights = (1,0,0) 62 | demand_name = 'mmnl' 63 | elif config == 'mmnl_3_2': 64 | coefficients = (-1,0.2,0,0) 65 | weights = (1,0,0) 66 | demand_name = 'mmnl' 67 | elif config == 'mmnl_myopic': 68 | coefficients = (2,2,0.2,0.2) 69 | weights = (1,0,0) 70 | demand_name = 'mmnl' 71 | 72 | # name prefix for saved plots 73 | coeffname = 'inf_hor_fixed_price_range'+str(L).replace(".","dot")+'_'+str(H).replace(".","dot")+'_'+str(T)+'_'\ 74 | +str(coefficients).replace(" ", "_").replace(".","dot")\ 75 | +str(weights).replace(" ","_").replace(".","dot")+'_'+str(theta).replace(".", "dot")+'_'+str(gamma).replace(".", "dot")+demand_name 76 | 77 | 78 | 79 | 80 | #---------------------------------# 81 | # optimal pricing policy 82 | start_time = time.time() 83 | #optimal pricing policy 84 | 85 | V,mu \ 86 | = inf_hor_pricing_pricerange(L,H,theta,epsilon,np.inf,gamma,coefficients,weights,demand_name) 87 | 88 | print("running time {}".format(time.time()- start_time)) 89 | #---------------------------------# 90 | 91 | 92 | 93 | 94 | 95 | 96 | #---------------------------------# 97 | # plot results 98 | #---------------------------------# 99 | 100 | 101 | #---------------reference price transition function-------------------------# 102 | fig, ax = plt.subplots() 103 | plt.tight_layout() 104 | #ax.plot(price_list[np.arange(len(mu)).astype(int)], price_list[mu.astype(int)],\ 105 | # color = 'black'); 106 | ax.scatter(price_list[np.arange(len(mu)).astype(int)], price_list[mu.astype(int)],\ 107 | color = 'black',marker = 'o', facecolors = 'none', s = 5); # s controls markersize 108 | ax.set_xlabel(r"$r_t$",size = 16); 109 | ax.set_ylabel(r"$r_{t+1}$",size = 16); 110 | ax.set_ylim(L-1,H+1) 111 | fig.savefig('./../pricing_output/%s_referenceprice'%coeffname, dpi= 300) 112 | 113 | #---------------value function------------------------# 114 | fig1, ax1 = plt.subplots() 115 | plt.tight_layout() 116 | ax1.plot(price_list[np.arange(len(mu)).astype(int)], \ 117 | V, color = 'black'); 118 | ax1.set_xlabel(r"$r$",size = 16); 119 | ax1.set_ylabel(r"$V^*(r)$",size = 16); 120 | #ax2.set_ylim(,) 121 | fig1.savefig('./../pricing_output/%s_value_function'%coeffname, dpi= 300) 122 | 123 | #---------------pricing policy function-------------------------# 124 | fig2, ax2 = plt.subplots() 125 | plt.tight_layout() 126 | #ax2.plot(price_list[np.arange(len(mu)).astype(int)], 127 | # (price_list[mu.astype(int)] - theta * price_list[np.arange(len(mu)).astype(int)])/(1-theta),\ 128 | # color = 'black'); 129 | ax2.scatter(price_list[np.arange(len(mu)).astype(int)], 130 | (price_list[mu.astype(int)] - theta * price_list[np.arange(len(mu)).astype(int)])/(1-theta),\ 131 | color = 'black', marker = 'o', s= 5); 132 | ax2.set_xlabel(r"$r$",size = 16); 133 | ax2.set_ylabel(r"$p^*(r)$",size = 16); 134 | ax2.set_ylim(L-1,H+1) 135 | fig2.savefig('./../pricing_output/%s_price'%coeffname, dpi= 300) 136 | 137 | 138 | #---------------price path-------------------------# 139 | # plot price path 140 | start_ = 0 # staring time for plots 141 | end_ = 20 142 | i_li = random.sample(range(len(V)),10) 143 | i_li.append(int((H/epsilon)/2)+1) 144 | for i in i_li: 145 | c = [] 146 | id = i 147 | 148 | # need to add the first reference price 149 | c.append(id) 150 | 151 | 152 | #apply the policy a few times 153 | for j in range(end_): 154 | c.append(int(mu[id])) 155 | id = int(mu[id]) 156 | 157 | fig3, ax3 = plt.subplots() 158 | plt.tight_layout() 159 | price_path = (price_list[c[1:]] - theta * price_list[c[:-1]])/(1-theta) 160 | ax3.plot(np.arange(start_,end_),price_path[start_:],color = 'black',linestyle = '--') 161 | ax3.scatter(np.arange(start_,end_),price_path[start_:],marker = 'o',facecolors = 'none',edgecolors = 'black') 162 | ax3.set_ylim(L,H+1) 163 | ax3.set_xticks(np.arange(start_,end_+1,5)) 164 | ax3.set_xlabel('Time', size = 16) 165 | #ax3.set_ylabel('optimal price path',size = 16) 166 | ax3.set_ylabel('Price',size = 16) 167 | coeffname_r0 = coeffname + 'r0=' + str(round(price_list[i],2)).replace(".","dot") 168 | fig3.savefig('./../pricing_output/%s_price_path'%coeffname_r0, dpi= 300) 169 | 170 | 171 | 172 | 173 | #---------------long term price path plot-------------------------# 174 | 175 | id = i 176 | c = [] 177 | start_ = 80 178 | end_ = 100 179 | 180 | # need to add the first reference price 181 | c.append(id) 182 | 183 | for j in range(end_): 184 | c.append(int(mu[id])) 185 | id = int(mu[id]) 186 | 187 | fig4, ax4 = plt.subplots() 188 | plt.tight_layout() 189 | price_path = (price_list[c[1:]] - theta * price_list[c[:-1]])/(1-theta) 190 | ax4.plot(np.arange(start_,end_),price_path[start_:],color = 'black',linestyle = '--') 191 | ax4.scatter(np.arange(start_,end_),price_path[start_:],marker = 'o',facecolors = 'none',edgecolors = 'black') 192 | ax4.set_ylim(L,H+1) 193 | ax4.set_xticks(np.arange(start_,end_+1,5)) 194 | ax4.set_xlabel('Time', size = 16) 195 | #ax4.set_ylabel('optimal price path',size = 16) 196 | ax4.set_ylabel('Price',size = 16) 197 | coeffname_r0 = coeffname + 'r0=' + str(round(price_list[i],2)).replace(".","dot")+'100time' 198 | fig4.savefig('./../pricing_output/%s_longterm_price_path'%coeffname_r0, dpi= 300) 199 | 200 | 201 | #--------------revenue plot for heterogeneous market --------------------# 202 | c = [] 203 | id = int((H/epsilon)/2)+1 204 | 205 | # need to add the first reference price 206 | c.append(id) 207 | #### plot revenues 208 | for j in range(20): 209 | c.append(int(mu[id])) 210 | id = int(mu[id]) 211 | fig3, ax3 = plt.subplots(figsize = (10,5)) 212 | price_path = (price_list[c[1:]] - theta * price_list[c[:-1]])/(1-theta) 213 | r1 = [] 214 | r2 = [] 215 | for j in range(20): 216 | r = price_list[c[j]] 217 | p = price_path[j] 218 | print("================{}================".format(j)) 219 | print(r,p,coefficients,weights[0]) 220 | temp1 = R(r,p,coefficients[:4],(weights[0],0,0)) 221 | print("temp1", temp1) 222 | r1.append(temp1) 223 | temp2 = R(r,p,coefficients[4:],(weights[1],0,0)) 224 | print("temp2", temp2) 225 | r2.append(temp2) 226 | r = np.array(r1) + np.array(r2) 227 | ax3.plot(np.arange(20),r,label = r'Total',marker = 'o',mfc = 'none',linestyle = '-',color = 'tab:gray') 228 | ax3.plot(np.arange(20),r1,label = r'Consumer $A$',marker = 'd',mfc = 'none',linestyle = '--',color= 'tab:blue') 229 | ax3.plot(np.arange(20),r2,label = r'Consumer $B$', marker = 's',mfc = 'none', linestyle = ':',color = 'tab:red') 230 | # ax3.scatter(np.arange(20),price_path[start_:],marker = 'o',facecolors = 'none',edgecolors = 'black') 231 | #ax3.set_ylim(L,H+1) 232 | ax3.set_xticks(np.arange(0,21,5)) 233 | ax3.set_xlabel('Time', size = 16) 234 | ax3.set_ylabel('Expected Revenue',size = 16) 235 | plt.legend(bbox_to_anchor=(1.02, 1)) 236 | plt.tight_layout() 237 | coeffname_r0 = coeffname + 'r0=' + str(round(price_list[i],2)).replace(".","dot") 238 | fig3.savefig('./../pricing_output/%s_revenue'%coeffname_r0, dpi= 300) 239 | -------------------------------------------------------------------------------- /scripts/utilis.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | """ 4 | @author: hanshengjiang 5 | """ 6 | 7 | import numpy as np 8 | #-------------- 9 | # auxiliary function 10 | def KLD(p,q): 11 | p = p.ravel() 12 | q = q.ravel() 13 | n = len(p) 14 | s = 0 15 | for i in range(n): 16 | s = s + p[i]*np.log(p[i]/q[i]) 17 | return s 18 | #-------------- -------------------------------------------------------------------------------- /simulation_results/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------