Esempio n. 1
0
        /// <summary>
        /// Adds an experiment.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="campaignId">The campaign id.</param>
        /// <param name="adGroupId">The ad group id.</param>
        /// <param name="criterionId">The criterion id.</param>
        /// <returns>The experiment id.</returns>
        public long AddExperiment(AdWordsUser user, long campaignId, long adGroupId, long criterionId)
        {
            // Get the ExperimentService.
            ExperimentService experimentService =
                (ExperimentService)user.GetService(AdWordsService.v201406.ExperimentService);

            // Get the AdGroupService.
            AdGroupService adGroupService =
                (AdGroupService)user.GetService(AdWordsService.v201406.AdGroupService);

            // Get the AdGroupCriterionService.
            AdGroupCriterionService adGroupCriterionService =
                (AdGroupCriterionService)user.GetService(AdWordsService.v201406.AdGroupCriterionService);

            // Create the experiment.
            Experiment experiment = new Experiment();

            experiment.campaignId      = campaignId;
            experiment.name            = "Interplanetary Cruise #" + GetTimeStamp();
            experiment.queryPercentage = 10;
            experiment.startDateTime   = DateTime.Now.AddDays(1).ToString("yyyyMMdd HHmmss");

            // Create the operation.
            ExperimentOperation experimentOperation = new ExperimentOperation();

            experimentOperation.@operator = Operator.ADD;
            experimentOperation.operand   = experiment;

            // Add the experiment.
            ExperimentReturnValue experimentRetVal = experimentService.mutate(
                new ExperimentOperation[] { experimentOperation });

            return(experimentRetVal.value[0].id);
        }
Esempio n. 2
0
        public JsonResult UpdateBot()
        {
            ExperimentService experimentService = new ExperimentService();

            experimentService.PushToRedis();
            return(Json("okay"));
        }
Esempio n. 3
0
        public JsonResult Analyze(string input)
        {
            ExperimentService         experimentService = new ExperimentService();
            ExperimentResultViewModel pattern           = experimentService.Analyze(input);

            return(Json(pattern, JsonRequestBehavior.AllowGet));
        }
        public async Task <IActionResult> PutExperimentSettings([FromBody] ExperimentSettings experimentSettings)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            await ExperimentService.UpdateSettingsAsync(experimentSettings);

            return(NoContent());
        }
        public async Task <IActionResult> PostExperimentSettings([FromBody] ExperimentSettings experimentSettings)
        {
            experimentSettings.LogicalName = "experiment_settings";
            experimentSettings.CreatedOn   = DateTime.Now;
            experimentSettings.Experiment  = await ExperimentRepository.GetByIdAsync(experimentSettings.ExperimentId);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            experimentSettings = await ExperimentService.CreateSettingsAsync(experimentSettings);

            return(CreatedAtAction("GetExperimentSettings", new { id = experimentSettings.Id }, experimentSettings));
        }
        public List <(int, double)> RunExperiment(int startSize, int finalSize, int step, int matrixQuantity, double averChange, BackgroundWorker worker, string processingMessage, string additionalMessage)
        {
            List <(int, double)> results = new List <(int, double)>();
            var random   = new Random();
            var solver   = new Solver();
            var quantity = Math.Floor((double)((finalSize - startSize) / step) + 1);
            var progress = 1;
            var interval = (int)(100 / (quantity));

            if (additionalMessage != ", R = ")
            {
                worker.ReportProgress(0, string.Format("{0}N = {1}{2}", processingMessage, startSize, additionalMessage));
            }
            else
            {
                worker.ReportProgress(0, string.Format("{0}N = {1}{2}{3}", processingMessage, startSize, additionalMessage, matrixQuantity));
            }

            for (int i = startSize; i <= finalSize; i += step)
            {
                results.Add((i, SearchMeanPercentForSize(i, matrixQuantity, averChange, solver, random)));
                if ((i + step) <= finalSize)
                {
                    if (additionalMessage != ", R = ")
                    {
                        worker.ReportProgress(progress * interval, string.Format("{0}N = {1}{2}", processingMessage, i + step, additionalMessage));
                    }
                    else
                    {
                        worker.ReportProgress(progress * interval, string.Format("{0}N = {1}{2}{3}", processingMessage, i + step, additionalMessage, matrixQuantity));
                    }
                }

                progress++;
            }

            var service = new ExperimentService();

            service.AddExperimentResult(results, _generator, averChange, matrixQuantity, _cChangeParameters);

            return(results);
        }
Esempio n. 7
0
        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        /// <param name="experimentId">Id of the experiment to be promoted.</param>
        public void Run(AdWordsUser user, long experimentId)
        {
            // Get the ExperimentService.
            ExperimentService experimentService =
                (ExperimentService)user.GetService(AdWordsService.v201607.ExperimentService);

            // Set experiment's status to PROMOTED.
            Experiment experiment = new Experiment();

            experiment.id     = experimentId;
            experiment.status = ExperimentStatus.PROMOTED;

            // Create the operation.
            ExperimentOperation operation = new ExperimentOperation();

            operation.@operator = Operator.SET;
            operation.operand   = experiment;

            try {
                // Update the experiment.
                ExperimentReturnValue retVal = experimentService.mutate(
                    new ExperimentOperation[] { operation });

                // Display the results.
                if (retVal != null && retVal.value != null && retVal.value.Length > 0)
                {
                    Experiment promotedExperiment = retVal.value[0];
                    Console.WriteLine("Experiment with name = \"{0}\" and id = \"{1}\" was promoted.\n",
                                      promotedExperiment.name, promotedExperiment.id);
                }
                else
                {
                    Console.WriteLine("No experiments were promoted.");
                }
            } catch (Exception e) {
                throw new System.ApplicationException("Failed to promote experiment.", e);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        /// <param name="campaignId">Id of the campaign to which experiments are
        /// added.</param>
        /// <param name="adGroupId">Id of the ad group to which experiments are
        /// added.</param>
        /// <param name="criterionId">Id of the criterion for which experiments
        /// are added.</param>
        public void Run(AdWordsUser user, long campaignId, long adGroupId, long criterionId)
        {
            // Get the ExperimentService.
            ExperimentService experimentService =
                (ExperimentService)user.GetService(AdWordsService.v201607.ExperimentService);

            // Get the AdGroupService.
            AdGroupService adGroupService =
                (AdGroupService)user.GetService(AdWordsService.v201607.AdGroupService);

            // Get the AdGroupCriterionService.
            AdGroupCriterionService adGroupCriterionService =
                (AdGroupCriterionService)user.GetService(AdWordsService.v201607.AdGroupCriterionService);

            // Create the experiment.
            Experiment experiment = new Experiment();

            experiment.campaignId      = campaignId;
            experiment.name            = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString();
            experiment.queryPercentage = 10;
            experiment.startDateTime   = DateTime.Now.AddDays(1).ToString("yyyyMMdd HHmmss");

            // Optional: Set the end date.
            experiment.endDateTime = DateTime.Now.AddDays(30).ToString("yyyyMMdd HHmmss");

            // Optional: Set the status.
            experiment.status = ExperimentStatus.ENABLED;

            // Create the operation.
            ExperimentOperation experimentOperation = new ExperimentOperation();

            experimentOperation.@operator = Operator.ADD;
            experimentOperation.operand   = experiment;

            try {
                // Add the experiment.
                ExperimentReturnValue experimentRetVal = experimentService.mutate(
                    new ExperimentOperation[] { experimentOperation });

                // Display the results.
                if (experimentRetVal != null && experimentRetVal.value != null && experimentRetVal.value.
                    Length > 0)
                {
                    long experimentId = 0;

                    Experiment newExperiment = experimentRetVal.value[0];

                    Console.WriteLine("Experiment with name = \"{0}\" and id = \"{1}\" was added.\n",
                                      newExperiment.name, newExperiment.id);
                    experimentId = newExperiment.id;

                    // Set ad group for the experiment.
                    AdGroup adGroup = new AdGroup();
                    adGroup.id = adGroupId;

                    // Create experiment bid multiplier rule that will modify ad group bid
                    // for the experiment.
                    ManualCPCAdGroupExperimentBidMultipliers adGroupBidMultiplier =
                        new ManualCPCAdGroupExperimentBidMultipliers();
                    adGroupBidMultiplier.maxCpcMultiplier            = new BidMultiplier();
                    adGroupBidMultiplier.maxCpcMultiplier.multiplier = 1.5;

                    // Set experiment data to the ad group.
                    AdGroupExperimentData adGroupExperimentData = new AdGroupExperimentData();
                    adGroupExperimentData.experimentId             = experimentId;
                    adGroupExperimentData.experimentDeltaStatus    = ExperimentDeltaStatus.MODIFIED;
                    adGroupExperimentData.experimentBidMultipliers = adGroupBidMultiplier;

                    adGroup.experimentData = adGroupExperimentData;

                    // Create the operation.
                    AdGroupOperation adGroupOperation = new AdGroupOperation();
                    adGroupOperation.operand   = adGroup;
                    adGroupOperation.@operator = Operator.SET;

                    // Update the ad group.
                    AdGroupReturnValue adGroupRetVal = adGroupService.mutate(new AdGroupOperation[] {
                        adGroupOperation
                    });

                    // Display the results.
                    if (adGroupRetVal != null && adGroupRetVal.value != null &&
                        adGroupRetVal.value.Length > 0)
                    {
                        AdGroup updatedAdGroup = adGroupRetVal.value[0];
                        Console.WriteLine("Ad group with name = \"{0}\", id = \"{1}\" and status = \"{2}\" " +
                                          "was updated for the experiment.\n", updatedAdGroup.name, updatedAdGroup.id,
                                          updatedAdGroup.status);
                    }
                    else
                    {
                        Console.WriteLine("No ad groups were updated.");
                    }

                    // Set ad group criteria for the experiment.
                    Criterion criterion = new Criterion();
                    criterion.id = criterionId;

                    BiddableAdGroupCriterion adGroupCriterion = new BiddableAdGroupCriterion();
                    adGroupCriterion.adGroupId = adGroupId;
                    adGroupCriterion.criterion = criterion;

                    // Create experiment bid multiplier rule that will modify criterion bid
                    // for the experiment.
                    ManualCPCAdGroupCriterionExperimentBidMultiplier bidMultiplier =
                        new ManualCPCAdGroupCriterionExperimentBidMultiplier();
                    bidMultiplier.maxCpcMultiplier            = new BidMultiplier();
                    bidMultiplier.maxCpcMultiplier.multiplier = 1.5;

                    // Set experiment data to the criterion.
                    BiddableAdGroupCriterionExperimentData adGroupCriterionExperimentData =
                        new BiddableAdGroupCriterionExperimentData();
                    adGroupCriterionExperimentData.experimentId            = experimentId;
                    adGroupCriterionExperimentData.experimentDeltaStatus   = ExperimentDeltaStatus.MODIFIED;
                    adGroupCriterionExperimentData.experimentBidMultiplier = bidMultiplier;

                    adGroupCriterion.experimentData = adGroupCriterionExperimentData;

                    // Create the operation.
                    AdGroupCriterionOperation adGroupCriterionOperation = new AdGroupCriterionOperation();
                    adGroupCriterionOperation.operand   = adGroupCriterion;
                    adGroupCriterionOperation.@operator = Operator.SET;

                    // Update the ad group criteria.
                    AdGroupCriterionReturnValue adGroupCriterionRetVal = adGroupCriterionService.mutate(
                        new AdGroupCriterionOperation[] { adGroupCriterionOperation });

                    // Display the results.
                    if (adGroupCriterionRetVal != null && adGroupCriterionRetVal.value != null &&
                        adGroupCriterionRetVal.value.Length > 0)
                    {
                        AdGroupCriterion updatedAdGroupCriterion = adGroupCriterionRetVal.value[0];
                        Console.WriteLine("Ad group criterion with ad group id = \"{0}\", criterion id = "
                                          + "\"{1}\" and type = \"{2}\" was updated for the experiment.\n",
                                          updatedAdGroupCriterion.adGroupId, updatedAdGroupCriterion.criterion.id,
                                          updatedAdGroupCriterion.criterion.CriterionType);
                    }
                    else
                    {
                        Console.WriteLine("No ad group criteria were updated.");
                    }
                }
                else
                {
                    Console.WriteLine("No experiments were added.");
                }
            } catch (Exception e) {
                throw new System.ApplicationException("Failed to add experiment.", e);
            }
        }
Esempio n. 9
0
 public ExperimentController(IDatabaseContext context)
 {
     _experimentService = new ExperimentService(context);
 }
Esempio n. 10
0
 public ExperimentController()
 {
     _experimentService = new ExperimentService(new DatabaseContext());
 }
Esempio n. 11
0
 public ExperimentController(ExperimentService exptSvc)
 {
     _exptSvc = exptSvc;
 }
Esempio n. 12
0
 public ExperimentController(UserManager <ApplicationUser> manager)
 {
     _experimentService = new ExperimentService();
     _manager           = manager;
 }
        public async Task <IActionResult> CheckAvailability([FromQuery] string title, [FromQuery] Guid userId)
        {
            var result = await ExperimentService.CheckAvailability(title, userId);

            return(Ok(result));
        }