private List <AbstractBidder> CreateBidders(List <bidder> bidders, double activityReq, IEnumerable <bidder_assigned_strategy> bidStrats, List <AuctionItem> items) { Dictionary <int, int> idToStrat = bidStrats.ToDictionary(b => b.bidder_idx, b => b.bidder_strategy_id); Dictionary <int, bidder_strategy> strategies; using (var db = new kffg_simulations2Context()) { strategies = db.bidder_strategy.ToDictionary(s => s.id, s => s); } List <AbstractBidder> robotBidders = new List <AbstractBidder>(); foreach (bidder b in bidders) { string lpSolvePath = AppDomain.CurrentDomain.BaseDirectory; int maxEligibility = MaxEligibility(b.bidder_value, items); bidder_strategy strat = strategies[idToStrat[b.idx]]; switch (strat.id) { case 1: robotBidders.Add(new LexicographicBidder(b, activityReq, maxEligibility)); break; case 2: robotBidders.Add(new OptimizedBidderSimple(b, activityReq, lpSolvePath, maxEligibility)); break; default: throw new Exception("Invalid strategy id"); } } return(robotBidders); }
private Auction CreateAuction(auction a) { using (kffg_simulations2Context db = new kffg_simulations2Context()) { simulation simModel = db.simulations.First(s => s.id == a.simulation_id); parameter parameters = db.parameters.First(p => p.id == simModel.parameters_id); Dictionary <string, clock_item> keyToPEA = db.clock_item.Where(ci => ci.pea_group_id == parameters.pea_group_id && ci.item_set_id == parameters.item_set_id) .ToList() .ToDictionary(ci => ForwardAuction.ProductKey(ci), ci => ci); List <bidder> bidders = db.bidders.Where(b => b.simulation_id == a.simulation_id).ToList(); IEnumerable <bidder_assigned_strategy> strats = db.bidder_assigned_strategy.Where(s => s.auction_id == a.id); statusVM = new AuctionStatusViewModel(); return(new Auction(a, keyToPEA, bidders, strats, parameters, statusVM)); } }
public LoadParametersViewModel(kffg_simulations2Context db) { this.db = db; }