def test_01_setup(): """ sample init init attr, state, action space :return: """ names = ['gender', 'age'] vals = {'gender': ['M', 'F', 'U'], 'age': ['0-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-*']} attr_set = AttrSet(names, vals) state_set = StateSet(['date', 'how'], ['discrete', 'discrete'], [['2018-01-01', '2018-01-02'], list(range(168))]) act_set = ActionSet(attr_set, max_bid=9.99, min_bid=0.01, max_mod=9.0, min_mod=0.1) return attr_set, state_set, act_set
def _load_settings(self): file_data_handler = FileDataHandler() settings_spec = file_data_handler.load_spec(os.path.join(""), self.settings_spec_name) if settings_spec is None: sys.exit("Can't load experiment spec") self.save_history = settings_spec["save_history"] self.print_simulator_output = settings_spec["print_simulator_output"] self.processing = settings_spec["processing"] self.num_cores = settings_spec["num_cores"] self.master_seed = settings_spec["master_seed"] self.n_experiment_reps = settings_spec["n_experiment_reps"] # Initialize state set self.date_from = settings_spec.get("date_from", None) self.date_to = settings_spec.get("date_to", None) self.time_steps_df, self.dates_list = \ self._get_time_steps_data(self.date_from, self.date_to) self.state_set = StateSet( ["date", "how"], ["discrete", "discrete"], [self.dates_list, list(range(168))]) # Initialize attribute set names = settings_spec["attributes"]["names"] vals = settings_spec["attributes"]["vals"] self.attr_set = AttrSet(names, vals) # Initialize action set self.action_set = ActionSet(self.attr_set, max_bid=9.99, min_bid=0.01, max_mod=9.0, min_mod=0.1) return settings_spec
def setUp(self): from ssa_sim_v2.simulator.modules.auctions.auctions_base_module import AuctionsPoissonModule from ssa_sim_v2.simulator.modules.auction_attributes.auction_attributes_base_module import AuctionAttributesModule from ssa_sim_v2.simulator.modules.vickrey_auction.vickrey_auction_module import VickreyAuctionModule from ssa_sim_v2.simulator.modules.competitive_click_probability.competitive_click_probability_base_module import CompetitiveClickProbabilityTwoClassGeometricModule from ssa_sim_v2.simulator.modules.competitive_clicks.competitive_clicks_base_module import CompetitiveClicksBinomialModule from ssa_sim_v2.simulator.modules.conversion_rate.conversion_rate_base_module import ConversionRateFlatModule from ssa_sim_v2.simulator.modules.conversions.conversions_base_module import ConversionsBinomialModule from ssa_sim_v2.simulator.modules.revenue.revenue_base_module import RevenueGammaNoiseModule from ssa_sim_v2.simulator.modules.competitive_cpc.competitive_cpc_base_module import CompetitiveCPCVickreyModule from ssa_sim_v2.simulator.modules.auctions.auctions_date_how_module import AuctionsDateHoWModule from ssa_sim_v2.simulator.modules.auction_attributes.auction_attributes_date_how_module import AuctionAttributesDateHoWModule from ssa_sim_v2.simulator.modules.vickrey_auction.vickrey_auction_date_how_module import VickreyAuctionDateHoWModule from ssa_sim_v2.simulator.modules.competitive_click_probability.competitive_click_probability_date_how_module import CompetitiveClickProbabilityDateHoWModule from ssa_sim_v2.simulator.modules.competitive_clicks.competitive_clicks_date_how_module import CompetitiveClicksDateHoWModule from ssa_sim_v2.simulator.modules.conversion_rate.conversion_rate_date_how_module import ConversionRateDateHoWModule from ssa_sim_v2.simulator.modules.conversions.conversions_date_how_module import ConversionsDateHoWModule from ssa_sim_v2.simulator.modules.revenue.revenue_date_how_module import RevenueDateHoWModule from ssa_sim_v2.simulator.modules.competitive_cpc.competitive_cpc_date_how_module import CompetitiveCpcDateHoWModule self.seed = 1111 self.date_from = "2018-01-01" self.date_to = "2018-01-02" self.tmp_df = pd.DataFrame(np.array(range(24)), columns=["hour_of_day"]) self.tmp_df["key"] = 1 self.dates = pd.DataFrame(pd.date_range(self.date_from, self.date_to), columns=["date"]) dates_list = self.dates["date"].tolist() self.dates["key"] = 1 self.dates = pd.merge( self.dates, self.tmp_df, on=["key"], how="left") # columns: ['date', 'hour_of_day'] self.dates["hour_of_week"] = pd.to_datetime(self.dates[ "date"]).dt.dayofweek * 24 + self.dates["hour_of_day"] self.dates["date"] = self.dates["date"].dt.strftime("%Y-%m-%d") self.dates = self.dates[["date", "hour_of_week"]] # Initialize state set self.state_set = StateSet( ["date", "how"], ["discrete", "discrete"], [dates_list, list(range(168))]) # Initialize attribute set names = ['gender', 'age'] vals = { 'gender': ['M', 'F', 'U'], 'age': ['0-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-*'] } self.attr_set = AttrSet(names, vals) attr_combinations = self.attr_set.get_all_attr_tuples() # Initialize action set self.action_set = ActionSet(self.attr_set, max_bid=9.99, min_bid=0.01, max_mod=9.0, min_mod=0.1) def initialize_priors(params, base_class): attr_combinations = list(self.attr_set.get_all_attr_tuples()) priors = self.dates.copy() priors.loc[:, "prior"] = pd.Series( [dict.fromkeys(attr_combinations, params)] * len(priors)) base_classes = self.dates.copy() base_classes.loc[:, "base_class"] = base_class return priors, base_classes # Initialize auctions priors module_class = AuctionsPoissonModule Params = module_class.Params params = Params(auctions=100) priors = self.dates.copy() priors.loc[:, "prior"] = [{(): params}] * len(priors) base_classes = self.dates.copy() base_classes.loc[:, "base_class"] = module_class self.auctions_priors = priors self.auctions_base_classes = base_classes # Initialize auction_attributes priors module_class = AuctionAttributesModule Params = module_class.Params params = Params(p=1.0) # Probabilities are normalized self.auction_attributes_priors, self.auction_attributes_base_classes \ = initialize_priors(params, module_class) # Initialize vickrey_auction priors module_class = VickreyAuctionModule Params = module_class.Params params = Params() self.vickrey_auction_priors, self.vickrey_auction_base_classes \ = initialize_priors(params, module_class) # Initialize competitive_click_probability priors module_class = CompetitiveClickProbabilityTwoClassGeometricModule Params = module_class.Params params = Params(n_pos=8, p=0.5, q=0.5, r_11=0.6, r_12=0.4, r_2=0.5) self.competitive_click_probability_priors, self.competitive_click_probability_base_classes \ = initialize_priors(params, module_class) # Initialize competitive_clicks priors module_class = CompetitiveClicksBinomialModule Params = module_class.Params params = Params(noise_level=0.0, noise_type="multiplicative") self.competitive_clicks_priors, self.competitive_clicks_base_classes \ = initialize_priors(params, module_class) # Initialize conversion_rate priors module_class = ConversionRateFlatModule Params = module_class.Params params = Params(cvr=0.02, noise_level=0.0, noise_type="multiplicative") self.conversion_rate_priors, self.conversion_rate_base_classes \ = initialize_priors(params, module_class) # Initialize conversions priors module_class = ConversionsBinomialModule Params = module_class.Params params = Params(noise_level=0.0, noise_type="multiplicative") self.conversions_priors, self.conversions_base_classes \ = initialize_priors(params, module_class) # Initialize revenue priors module_class = RevenueGammaNoiseModule Params = module_class.Params params = Params(avg_rpv=300.0, noise_level=100.0) self.revenue_priors, self.revenue_base_classes = initialize_priors( params, module_class) # Initialize competitive_cpc priors module_class = CompetitiveCPCVickreyModule Params = module_class.Params params = Params(n_pos=8, fee=0.01) self.competitive_cpc_priors, self.competitive_cpc_base_classes = \ initialize_priors(params, module_class) # Module setup for the simulator self.mods = \ {"auctions": AuctionsDateHoWModule(self.auctions_priors, self.auctions_base_classes, self.seed), "auction_attributes": AuctionAttributesDateHoWModule(self.auction_attributes_priors, self.auction_attributes_base_classes, self.seed), "vickrey_auction": VickreyAuctionDateHoWModule(self.vickrey_auction_priors, self.vickrey_auction_base_classes, self.seed), "competitive_click_probability": CompetitiveClickProbabilityDateHoWModule(self.competitive_click_probability_priors, self.competitive_click_probability_base_classes, self.seed), "competitive_clicks": CompetitiveClicksDateHoWModule(self.competitive_clicks_priors, self.competitive_clicks_base_classes, self.seed), "conversion_rate": ConversionRateDateHoWModule(self.conversion_rate_priors, self.conversion_rate_base_classes, self.seed), "conversions": ConversionsDateHoWModule(self.conversions_priors, self.conversions_base_classes, self.seed), "revenue": RevenueDateHoWModule(self.revenue_priors, self.revenue_base_classes, self.seed), "competitive_cpc": CompetitiveCpcDateHoWModule(self.competitive_cpc_priors, self.competitive_cpc_base_classes, self.seed) } self.simulator = CompetitiveDateHowSimulator(self.state_set, self.action_set, self.attr_set, self.mods, self.date_from, self.date_to, income_share=1.0)