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);
        }
Beispiel #2
0
        /// <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("");
        }