/** * Make a new experiment with given variants * * @since 0.1.0 * * @param array $variants * @param int|string $id Experiment (group) ID * @param \MaBandit\MaBandit $bandit MaBandit object */ public function __construct(array $variants, $id, \MaBandit\MaBandit $bandit) { $this->experiment = $bandit->createExperiment((string) $id, $variants); if (method_exists($bandit->getPersistor(), 'save_levers')) { $bandit->getPersistor()->batchSave($this->experiment->getLevers(), $id); } }
/** * Start up the bandit. * * @since 0.4.0 * * @access protected */ protected function go() { $strategy = \MaBandit\Strategy\EpsilonGreedy::withExplorationEvery(3); $persistor = $this->create_persistor(); $this->bandit = \MaBandit\MaBandit::withStrategy($strategy)->withPersistor($persistor); try { $this->experiment = $this->bandit->getExperiment((string) $this->ID); } catch (\MaBandit\Exception\ExperimentNotFoundException $e) { $this->create_experiment(); } }
/** * @expectedException \PHPUnit_Framework_Error */ public function testWithPersistorRaisesOnInvalidStrategy() { $s = \MaBandit\Strategy\EpsilonGreedy::withExplorationEvery(10); $p = new \stdClass(); $bandit = \MaBandit\MaBandit::withStrategy($s)->withPersistor($p); }