public static bool TestDistributionAwareSolverSelection(string solver, int expected, int seed, string selection, string onlyBin) { string loc = resolvePath(solver, "DistributionAwareSolverSampling.csv"); Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("seed", seed.ToString()); parameters.Add("selection", selection); parameters.Add("onlyBinary", onlyBin); List <SamplingStrategies> binaryStrat = new List <SamplingStrategies>(); List <ExperimentalDesign> numericStrat = new List <ExperimentalDesign>(); numericStrat.Add(new CentralCompositeInscribedDesign()); List <HybridStrategy> hybridStrat = new List <HybridStrategy>(); HybridStrategy distAwSolver = new DistributionAware(); distAwSolver.SetSamplingParameters(parameters); hybridStrat.Add(distAwSolver); //List<Configuration> result = ConfigurationBuilder.buildConfigs(model, binaryStrat, numericStrat, hybridStrat); //List<Configuration> expectedSample = ConfigurationReader.readConfigurations_Header_CSV(loc, GlobalState.varModel); //return containsAllMeasurements(result, expectedSample) && result.Count == expected; return(true); }
/// <summary> /// This method sets the according variables to perform the hybrid sampling strategy. /// Note: A hybrid sampling strategy might have parameters and also consider only a specific set of numeric options. /// [option1,option3,...,optionN] param1:value param2:value /// </summary> /// <param name="task">the task containing the name of the sampling strategy and the parameters</param> /// <returns>the name of the sampling strategy if it is not found; empty string otherwise</returns> public string performOneCommand_Hybrid(string task) { // splits the task in design and parameters of the design string[] designAndParams = task.Split(new[] { ' ' }, 2); string designName = designAndParams[0]; // parsing of the parameters List <ConfigurationOption> optionsToConsider; Dictionary <string, string> parameter; List <ConfigurationOption> temp = new List <ConfigurationOption>(); getParametersAndSamplingDomain(task, out parameter, out optionsToConsider); if (optionsToConsider.Count == 0) { optionsToConsider.AddRange(GlobalState.varModel.NumericOptions); optionsToConsider.AddRange(GlobalState.varModel.BinaryOptions); } HybridStrategy hybridDesign = null; switch (designName.ToLower()) { case COMMAND_HYBRID_DISTRIBUTION_AWARE: parameter.Remove(designName); hybridDesign = new DistributionAware(); hybridDesign.SetSamplingDomain(optionsToConsider); break; case COMMAND_HYBRID_DISTRIBUTION_PRESERVING: parameter.Remove(designName); hybridDesign = new DistributionPreserving(); hybridDesign.SetSamplingDomain(optionsToConsider); break; default: return(task); } addHybridDesign(hybridDesign, parameter.ContainsKey("validation"), parameter); return(""); }