Exemplo n.º 1
0
        /// <summary>
        /// Builds a OPTANO Algorithm Tuner instance that tunes by process runtime.
        /// </summary>
        /// <param name="config">
        /// The configuration.
        /// </param>
        /// <param name="trainingInstanceFolder">
        /// The path to the folder containing training instances.
        /// </param>
        /// <param name="testInstanceFolder">
        /// The path to the folder containing test instances.
        /// </param>
        /// <param name="basicCommand">
        /// The basic command to the target algorithm as it should be executed by the
        /// command line. The path to the instance file and the parameters will be set by replacing
        /// <see cref="CommandExecutorBase{TResult}.InstanceReplacement"/> and
        /// <see cref="CommandExecutorBase{TResult}.ParameterReplacement"/>.
        /// </param>
        /// <param name="pathToParameterTree">
        /// The path to a parameter tree defined via XML.
        /// </param>
        /// <param name="factorParK">
        /// The factor for the penalization of the average runtime.
        /// </param>
        /// <returns>
        /// The built OPTANO Algorithm Tuner instance.
        /// </returns>
        private static AlgorithmTuner <TimeMeasuringExecutor, InstanceFile, RuntimeResult> BuildRuntimeTuner(
            AlgorithmTunerConfiguration config,
            string trainingInstanceFolder,
            string testInstanceFolder,
            string basicCommand,
            string pathToParameterTree,
            int factorParK)
        {
            IRunEvaluator <InstanceFile, RuntimeResult> runEvaluator;

            if (factorParK == 0)
            {
                runEvaluator = new SortByUnpenalizedRuntime <InstanceFile>(config.CpuTimeout);
            }
            else
            {
                runEvaluator = new SortByPenalizedRuntime <InstanceFile>(factorParK, config.CpuTimeout);
            }

            var tuner = new AlgorithmTuner <TimeMeasuringExecutor, InstanceFile, RuntimeResult>(
                targetAlgorithmFactory: new TimeMeasuringExecutorFactory(basicCommand, config.CpuTimeout),
                runEvaluator: runEvaluator,
                trainingInstances: ExtractInstances(trainingInstanceFolder),
                parameterTree: ParameterTreeConverter.ConvertToParameterTree(pathToParameterTree),
                configuration: config);

            if (testInstanceFolder != null)
            {
                tuner.SetTestInstances(ExtractInstances(testInstanceFolder));
            }

            return(tuner);
        }
Exemplo n.º 2
0
        BuildLingelingAlgorithmTuner(
            AlgorithmTunerConfiguration tunerConfig,
            string trainingInstanceFolder,
            string testInstanceFolder,
            LingelingRunnerConfiguration runnerConfig)
        {
            IRunEvaluator <InstanceSeedFile, RuntimeResult> runEvaluator;

            if (runnerConfig.FactorParK == 0)
            {
                runEvaluator = new SortByUnpenalizedRuntime <InstanceSeedFile>(tunerConfig.CpuTimeout);
            }
            else
            {
                runEvaluator = new SortByPenalizedRuntime <InstanceSeedFile>(runnerConfig.FactorParK, tunerConfig.CpuTimeout);
            }

            var tuner = new AlgorithmTuner <LingelingRunner, InstanceSeedFile, RuntimeResult, TLearnerModel,
                                            TPredictorModel,
                                            TSamplingStrategy>(
                targetAlgorithmFactory: new LingelingRunnerFactory(runnerConfig.PathToExecutable, tunerConfig, runnerConfig.MemoryLimitMegabyte),
                runEvaluator: runEvaluator,
                trainingInstances: InstanceSeedFile.CreateInstanceSeedFilesFromDirectory(
                    trainingInstanceFolder,
                    LingelingUtils.ListOfValidFileExtensions,
                    runnerConfig.NumberOfSeeds,
                    runnerConfig.RngSeed),
                parameterTree: LingelingUtils.CreateParameterTree(),
                configuration: tunerConfig);

            if (!string.IsNullOrWhiteSpace(testInstanceFolder))
            {
                tuner.SetTestInstances(
                    InstanceSeedFile.CreateInstanceSeedFilesFromDirectory(
                        testInstanceFolder,
                        LingelingUtils.ListOfValidFileExtensions,
                        runnerConfig.NumberOfSeeds,
                        runnerConfig.RngSeed));
            }

            return(tuner);
        }