Example #1
0
 public FormulaRenderWorkflow(FormulaRenderArgumentsGenerationParams generationParams, Size imageSize, FormulaRenderArgumentsGoodnessAnalyzer formulaRenderArgumentsGoodnessAnalyzer,
     Func<Size, FormulaBitmap> createFormulaBitmap, Random random)
 {
     GenerationParams = generationParams;
     _formulaRenderArgumentsGoodnessAnalyzer = formulaRenderArgumentsGoodnessAnalyzer;
     _createFormulaBitmap = createFormulaBitmap;
     _random = random;
     _reevaluateValues = true;
     ImageSize = imageSize;
 }
Example #2
0
 public FormulaRenderWorkflow(FormulaRenderArgumentsGenerationParams generationParams, Size imageSize, Func<Size, FormulaBitmap> createFormulaBitmap)
     : this(generationParams, imageSize, new FormulaRenderArgumentsGoodnessAnalyzer(generationParams.DimensionCountBounds.Low), createFormulaBitmap, new Random())
 {
 }
Example #3
0
        public void SaveState(FormulaRenderArgumentsGenerationParams generationParams)
        {
            int dimensionsCount = (int)DimensionsCountSlider.Value;
            generationParams.DimensionCountBounds = new Bounds<int>(dimensionsCount, dimensionsCount);

            int minimalDepth = (int)MinimalDepthSlider.Value;
            generationParams.MinimalDepthBounds = new Bounds<int>(minimalDepth, minimalDepth);

            double constantProbability = ConstantProbabilitySlider.Value / 100;
            generationParams.ConstantProbabilityBounds = new Bounds(constantProbability, constantProbability);

            double leafProbability = LeafProbabilitySlider.Value / 100;
            generationParams.LeafProbabilityBounds = new Bounds(leafProbability, leafProbability);

            double unaryVsBinaryOperatorsProbability = UnaryVsBinaryOperatorsProbabilitySlider.Value / 100;
            generationParams.UnaryVsBinaryOperatorsProbabilityBounds = new Bounds(unaryVsBinaryOperatorsProbability, unaryVsBinaryOperatorsProbability);

            generationParams.OperatorAndMaxProbabilityBoundsMap = OperatorControls.Where(cb => cb.IsChecked).ToDictionary(c => c.Operator, c => new Bounds(0, c.Probability));
        }
        private FormulaRenderArgumentsGenerationParams RandomizeFormulaRenderArgumentsGenerationParams(FormulaRenderArgumentsGenerationParams initParams)
        {
            FormulaRenderArgumentsGenerationParams randomParams = new FormulaRenderArgumentsGenerationParams();

            int dimensionsCount = _random.Next(initParams.DimensionCountBounds);
            randomParams.DimensionCountBounds = new Bounds<int>(dimensionsCount, dimensionsCount);

            int minimalDepth = _random.Next(initParams.MinimalDepthBounds);
            randomParams.MinimalDepthBounds = new Bounds<int>(minimalDepth, minimalDepth);
            
            double leafProbability = _random.Next(initParams.LeafProbabilityBounds);
            randomParams.LeafProbabilityBounds = new Bounds(leafProbability, leafProbability);

            double constantProbability = _random.Next(initParams.ConstantProbabilityBounds);
            randomParams.ConstantProbabilityBounds = new Bounds(constantProbability, constantProbability);

            double unaryVsBinaryOperatorsProbability = _random.Next(initParams.UnaryVsBinaryOperatorsProbabilityBounds);
            randomParams.UnaryVsBinaryOperatorsProbabilityBounds = new Bounds(unaryVsBinaryOperatorsProbability, unaryVsBinaryOperatorsProbability);
            
            return randomParams;
        }
Example #5
0
        public void LoadState(FormulaRenderArgumentsGenerationParams generationParams)
        {
            DimensionsCountSlider.Value = generationParams.DimensionCountBounds.Low;
            MinimalDepthSlider.Value = generationParams.MinimalDepthBounds.Low;
            ConstantProbabilitySlider.Value = generationParams.ConstantProbabilityBounds.Low * 100;
            LeafProbabilitySlider.Value = generationParams.LeafProbabilityBounds.Low*100;
            UnaryVsBinaryOperatorsProbabilitySlider.Value = generationParams.UnaryVsBinaryOperatorsProbabilityBounds.Low * 100;

            foreach (OperatorControl opCtrl in OperatorControls)
            {
                if (generationParams.OperatorAndMaxProbabilityBoundsMap.ContainsKey(opCtrl.Operator))
                {
                    opCtrl.Probability = generationParams.OperatorAndMaxProbabilityBoundsMap[opCtrl.Operator].High;
                    opCtrl.IsChecked = true;
                }
            }
        }