def get_enac_experiment(case, minor=1): gen = case.generators profile = array([1.0, 1.0]) maxSteps = len(profile) initalSigma = 0.0 sigmaOffset = -4.0 if minor == 1: decay = 0.999 learningRate = 0.01 # (0.1-0.001, down to 1e-7 for RNNs, default: 0.1) elif minor == 2: decay = 0.997 learningRate = 0.005 elif minor == 3: decay = 0.999 learningRate = 0.05 elif minor == 4: decay = 0.999 learningRate = 0.005 else: raise ValueError, "Invalid minor version: %d" % minor market = pyreto.SmartMarket(case, priceCap=cap, decommit=decommit, auctionType=auctionType) experiment = pyreto.continuous.MarketExperiment([], [], market, profile) for g in gen[0:2]: learner = ENAC() # learner = Reinforce() # learner.gd.rprop = False # only relevant for BP learner.learningRate = learningRate # learner.gd.alpha = 0.0001 # learner.gd.alphadecay = 0.9 # learner.gd.momentum = 0.9 # only relevant for RP # learner.gd.deltamin = 0.0001 task, agent = get_continuous_task_agent([g], market, nOffer, markupMax, withholdMax, maxSteps, learner) learner.explorer = ManualNormalExplorer(agent.module.outdim, initalSigma, decay, sigmaOffset) experiment.tasks.append(task) experiment.agents.append(agent) # Passive agent. task, agent = get_neg_one_task_agent(gen[2:3], market, nOffer, maxSteps) experiment.tasks.append(task) experiment.agents.append(agent) return experiment
def get_enac_experiment(case): locAdj = "ac" initalSigma = 0.0 sigmaOffset = -5.0 decay = 0.995 learningRate = 0.005 market = pyreto.SmartMarket(case, priceCap=cap, decommit=decommit, auctionType=auctionType, locationalAdjustment=locAdj) experiment = \ pyreto.continuous.MarketExperiment([], [], market, branchOutages=None) portfolios, sync_cond = get_portfolios3() for gidx in portfolios: g = [case.generators[i] for i in gidx] learner = ENAC() learner.learningRate = learningRate task, agent = get_continuous_task_agent(g, market, nOffer, markupMax, withholdMax, maxSteps, learner) learner.explorer = ManualNormalExplorer(agent.module.outdim, initalSigma, decay, sigmaOffset) experiment.tasks.append(task) experiment.agents.append(agent) # Have an agent bid at marginal cost (0.0) for the sync cond. passive = [case.generators[i] for i in sync_cond] passive[0].p_min = 0.001 # Avoid invalid offer withholding. passive[0].p_max = 0.002 task, agent = get_neg_one_task_agent(passive, market, 1, maxSteps) experiment.tasks.append(task) experiment.agents.append(agent) return experiment