Exemplo n.º 1
0
        /// <summary>
        /// Initialise the Generic Data Manager Class
        /// </summary>
        /// <param name="algorithmSettings">The algorithm settings instance</param>
        /// <param name="timeKeeper">The algorithm's time keeper</param>
        public SubscriptionManager(AlgorithmSettings algorithmSettings, TimeKeeper timeKeeper)
        {
            _algorithmSettings = algorithmSettings;
            _timeKeeper        = timeKeeper;
            //Generic Type Data Holder:
            Subscriptions = new HashSet <SubscriptionDataConfig>();

            // Initialize the default data feeds for each security type
            AvailableDataTypes = DefaultDataTypes();
        }
        public string ExtractText(Bitmap image, AlgorithmSettings settings)
        {
            Color[] colors = BitmapConverter.BitmapToColorArray(image, settings.Direction);

            int offset = CalculateOffset(settings.OffsetX, settings.OffsetY, image.Width, image.Height, settings.Direction);

            var data = ReadBytesFromColorArray(colors, offset);

            return(Encoding.UTF8.GetString(data));
        }
        public Bitmap HideBytes(byte[] data, Bitmap image, AlgorithmSettings settings)
        {
            Color[] colors  = BitmapConverter.BitmapToColorArray(image, settings.Direction);
            var     cleaned = BitmapConverter.CleanColorArrayFromLSB(colors);

            int offset = CalculateOffset(settings.OffsetX, settings.OffsetY, image.Width, image.Height, settings.Direction);

            var hiden = WriteBytesInColorArray(data, cleaned, offset);

            return(BitmapConverter.ColorArrayToBitmap(hiden, image.Width, image.Height, settings.Direction));
        }
Exemplo n.º 4
0
        public DataPoints CalculateDataPoints([FromBody] AlgorithmSettings settings)
        {
            var stopwatch = new Stopwatch();
            var tsp       = TSP.FromFile(settings.Filename);

            stopwatch.Start();
            var result = tsp.SolveTsp(settings);

            stopwatch.Stop();
            Console.WriteLine("Elapsed time is {0} s", stopwatch.ElapsedMilliseconds / 1000.0);

            return(result);
        }
Exemplo n.º 5
0
        public void Run(AlgorithmSettings settings)
        {
            settings.OptModel.ResetCallCount();
            Chromosome.ResetIdentity();
            InitialMesh = MeshService.GetMesh(settings.OptModel, settings.InitialPointCount, settings.InitialLoadType);
            Generations = new List <Generation>();
            Generations.Add(new Generation(InitialMesh.Chromosomes, settings));
            int i = 0;

            while (!Generations[i].IsFinal)
            {
                Generations.Add(new Generation(Generations[i]));
                i++;
            }
            CallCount = settings.OptModel.CallCount;
            Best      = Generations[i].BestChromosome;
        }
Exemplo n.º 6
0
        private void selectImageButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.Title       = "Wybierz obraz w którym zostanie ukryta wiadomość";
            dialog.Multiselect = false;

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                ImagePath = dialog.FileName;

                try
                {
                    Settings = new AlgorithmSettings(dialog.FileName + ".json");
                }
                catch (Exception) { }
            }
        }
            public SerializedProperties(SerializedObject serializedObject)
            {
                ComputeShader = serializedObject.FindProperty("m_computeShader");
                SDFGroup      = serializedObject.FindProperty("m_group");

                MainSettings       = serializedObject.FindProperty("m_mainSettings");
                AutoUpdate         = MainSettings.FindPropertyRelative("m_autoUpdate");
                OutputMode         = MainSettings.FindPropertyRelative("m_outputMode");
                IsAsynchronous     = MainSettings.FindPropertyRelative("m_isAsynchronous");
                ProceduralMaterial = MainSettings.FindPropertyRelative("m_proceduralMaterial");

                AlgorithmSettings        = serializedObject.FindProperty("m_algorithmSettings");
                MaxAngleTolerance        = AlgorithmSettings.FindPropertyRelative("m_maxAngleTolerance");
                VisualNormalSmoothing    = AlgorithmSettings.FindPropertyRelative("m_visualNormalSmoothing");
                IsosurfaceExtractionType = AlgorithmSettings.FindPropertyRelative("m_isosurfaceExtractionType");
                //ConstrainToCellUnits = AlgorithmSettings.FindPropertyRelative("m_constrainToCellUnits");
                //OverrideQEFSettings = AlgorithmSettings.FindPropertyRelative("m_overrideQEFSettings");
                //QEFSweeps = AlgorithmSettings.FindPropertyRelative("m_qefSweeps");
                //QEFPseudoInverseThreshold = AlgorithmSettings.FindPropertyRelative("m_qefPseudoInverseThreshold");
                EdgeIntersectionType      = AlgorithmSettings.FindPropertyRelative("m_edgeIntersectionType");
                BinarySearchIterations    = AlgorithmSettings.FindPropertyRelative("m_binarySearchIterations");
                ApplyGradientDescent      = AlgorithmSettings.FindPropertyRelative("m_applyGradientDescent");
                GradientDescentIterations = AlgorithmSettings.FindPropertyRelative("m_gradientDescentIterations");
                //NudgeVerticesToAverageNormalScalar = AlgorithmSettings.FindPropertyRelative("m_nudgeVerticesToAverageNormalScalar");
                //NudgeMaxMagnitude = AlgorithmSettings.FindPropertyRelative("m_nudgeMaxMagnitude");

                VoxelSettings = serializedObject.FindProperty("m_voxelSettings");
                CellSizeMode  = VoxelSettings.FindPropertyRelative("m_cellSizeMode");
                CellSize      = VoxelSettings.FindPropertyRelative("m_cellSize");
                CellCount     = VoxelSettings.FindPropertyRelative("m_cellCount");
                VolumeSize    = VoxelSettings.FindPropertyRelative("m_volumeSize");
                CellDensity   = VoxelSettings.FindPropertyRelative("m_cellDensity");

                ShowGrid = serializedObject.FindProperty("m_showGrid");

                SettingsControlledByGrid = serializedObject.FindProperty("m_settingsControlledByGrid");
            }
        internal static AlgorithmSettings DefineSettings()
        {
            var settings = new AlgorithmSettings()
            {
                AlgorithmName           = AttackName,
                AlgorithmDescriptionURL = "https://www.raccoonbot.com/forum/topic/25606-smart-4-fingers-deploy/"
            };

            // Global Settings.
            var debugMode = new AlgorithmSetting("Debug Mode", "When on, Debug Images will be written out for each attack showing what the algorithm is seeing.", 0, SettingType.Global);

            debugMode.PossibleValues.Add(new SettingOption("Off", 0));
            debugMode.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(debugMode);

            var ccFirst = new AlgorithmSetting("CC Deployment", "Deployment of CC", 0, SettingType.Global);

            ccFirst.PossibleValues.Add(new SettingOption("Deploy at Start", 0));
            ccFirst.PossibleValues.Add(new SettingOption("Deploy at End", 1));
            settings.DefineSetting(ccFirst);

            var setCollMines = new AlgorithmSetting("Set Exposed Collecotors & Mines", "turn on and off searching for outside elixir collectors and gold mines.", 1, SettingType.ActiveAndDead);

            setCollMines.PossibleValues.Add(new SettingOption("Off", 0));
            setCollMines.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(setCollMines);

            // Show These ONLY when Set Exposed Collecotors & Mines is on.
            var minDistance = new AlgorithmSetting("Acceptable Target Range", "the maximun numbers of tiles the collectors and drills can be far from red line", 6, SettingType.ActiveAndDead)
            {
                MinValue = 2,
                MaxValue = 10
            };

            minDistance.HideInUiWhen.Add(new SettingOption("Set Exposed Collecotors & Mines", 0));
            settings.DefineSetting(minDistance);

            var minimElixir = new AlgorithmSetting("Minimum Exposed Colloctors", "Minimum Elixir Colloctores found outside before attack", 3, SettingType.ActiveAndDead)
            {
                MinValue = 0,
                MaxValue = 7
            };

            minimElixir.HideInUiWhen.Add(new SettingOption("Set Exposed Collecotors & Mines", 0));
            settings.DefineSetting(minimElixir);

            var minimGold = new AlgorithmSetting("Minimum Exposed Mines", "Minimum Gold Mines found outside before attack", 3, SettingType.ActiveAndDead)
            {
                MinValue = 0,
                MaxValue = 7
            };

            minimGold.HideInUiWhen.Add(new SettingOption("Set Exposed Collecotors & Mines", 0));
            settings.DefineSetting(minimGold);


            var useSmartZapDrills = new AlgorithmSetting("Smart Zap Drills", "replace default zap drills module with smart zap module.", 0, SettingType.ActiveAndDead);

            useSmartZapDrills.PossibleValues.Add(new SettingOption("Off", 0));
            useSmartZapDrills.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(useSmartZapDrills);

            var minDEAmount = new AlgorithmSetting("Min Dark Elixir per Zap", "we will zap only drills that have more than this amount of DE.", 200, SettingType.ActiveAndDead)
            {
                MinValue = 100,
                MaxValue = 600
            };

            minDEAmount.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(minDEAmount);

            var useEQOnDrills = new AlgorithmSetting("Use EarthQuake spell on drills", "use EarthQuake spell to gain DE from drills ", 0, SettingType.ActiveAndDead);

            useEQOnDrills.PossibleValues.Add(new SettingOption("Off", 0));
            useEQOnDrills.PossibleValues.Add(new SettingOption("On", 1));
            useEQOnDrills.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(useEQOnDrills);

            var deployHeroesAt = new AlgorithmSetting("Deploy Heroes At", "choose where to deploy Heroes", 0, SettingType.ActiveAndDead);

            deployHeroesAt.PossibleValues.Add(new SettingOption("Normal (at the end)", 0));
            deployHeroesAt.PossibleValues.Add(new SettingOption("TownHall Side", 1));
            deployHeroesAt.PossibleValues.Add(new SettingOption("DE Storage Side", 2));
            settings.DefineSetting(deployHeroesAt);

            var DeployMode = new AlgorithmSetting("Set Troops Deployment", "Select how to deploy troops around the base.", 0, SettingType.Global);

            DeployMode.PossibleValues.Add(new SettingOption("Equal Deployment (25% on 4 side)", 0));
            DeployMode.PossibleValues.Add(new SettingOption("Collectors Side (target% on each side)", 1));
            DeployMode.PossibleValues.Add(new SettingOption("Loot + Damage (deploy some on empty sides)", 2));
            settings.DefineSetting(DeployMode);

            return(settings);
        }
Exemplo n.º 9
0
        internal static AlgorithmSettings DefineSettings()
        {
            var settings = new AlgorithmSettings();

            settings.AlgorithmName           = AttackName;
            settings.AlgorithmDescriptionURL = "https://www.raccoonbot.com/forum/topic/24589-dark-push-deploy/";

            // Global Settings
            var debugMode = new AlgorithmSetting("Debug Mode", "When on, Debug Images will be written out for each attack showing what the algorithm is seeing.", 0, SettingType.Global);

            debugMode.PossibleValues.Add(new SettingOption("Off", 0));
            debugMode.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(debugMode);

            var setTargetTo = new AlgorithmSetting("Select Your Target", "", 0, SettingType.ActiveAndDead);

            setTargetTo.PossibleValues.Add(new SettingOption("TownHall", 0));
            setTargetTo.PossibleValues.Add(new SettingOption("Dark Elixir Storage", 1));
            setTargetTo.PossibleValues.Add(new SettingOption("Eagle Artilary", 2));
            settings.DefineSetting(setTargetTo);

            var UseQueenWalk = new AlgorithmSetting("Use Queen Walk", "When on, healer will be used for Queen walk, When off: it will be used for Bowler and Witch walk", 0, SettingType.ActiveAndDead);

            UseQueenWalk.PossibleValues.Add(new SettingOption("Off", 0));
            UseQueenWalk.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(UseQueenWalk);

            // Show These ONLY when Use Queen Walk Mode is on
            var HealersForQueenWalk = new AlgorithmSetting("Number of healers to use on Queen", "How meny healers to follow the queen , the rest will be dropped on the main troops", 4, SettingType.ActiveAndDead)
            {
                MinValue = 1,
                MaxValue = 8
            };

            HealersForQueenWalk.HideInUiWhen.Add(new SettingOption("Use Queen Walk", 0));
            settings.DefineSetting(HealersForQueenWalk);

            var UseRageForQW = new AlgorithmSetting("Drop 1 rage in the first of the QW", "use 1 rage on the Queen To help fast funnelling", 0, SettingType.ActiveAndDead);

            UseRageForQW.PossibleValues.Add(new SettingOption("Off", 0));
            UseRageForQW.PossibleValues.Add(new SettingOption("On", 1));
            UseRageForQW.HideInUiWhen.Add(new SettingOption("Use Queen Walk", 0));
            settings.DefineSetting(UseRageForQW);

            var useCCAs = new AlgorithmSetting("use Clan Castle troops as", "", 0, SettingType.ActiveAndDead);

            useCCAs.PossibleValues.Add(new SettingOption("Normal troops (deploy at the end)", 0));
            useCCAs.PossibleValues.Add(new SettingOption("Golem (deploy at the first)", 1));
            useCCAs.PossibleValues.Add(new SettingOption("Giants (deploy before normal troops)", 2));
            settings.DefineSetting(useCCAs);

            var ShiftSpells = new AlgorithmSetting("Shift Spells In(+) and Out(-)", "Shift spells to inward or upward", 0, SettingType.ActiveAndDead)
            {
                MinValue = -5,
                MaxValue = 5
            };

            settings.DefineSetting(ShiftSpells);

            var customDeployOrder = new AlgorithmSetting("use custom deploy order", "Change the deploying troops order, the default order is: 1-Golems if more than 1, 2- funnling, 3-giants or one golem, 4-heroes, 5-wallBreakers, 6-Normal troops", 0, SettingType.Global);

            customDeployOrder.PossibleValues.Add(new SettingOption("Off", 0));
            customDeployOrder.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(customDeployOrder);

            // Deploy order if custom deploy is on
            var deploy1 = new AlgorithmSetting("#1", "", 1, SettingType.Global);

            deploy1.PossibleValues.Add(new SettingOption("Golems", 1));
            deploy1.PossibleValues.Add(new SettingOption("Ground Funnelling", 2));
            deploy1.PossibleValues.Add(new SettingOption("Giants", 3));
            deploy1.PossibleValues.Add(new SettingOption("Heroes", 4));
            deploy1.PossibleValues.Add(new SettingOption("Wall Breakers", 5));
            deploy1.PossibleValues.Add(new SettingOption("Normal Troops", 6));
            deploy1.PossibleValues.Add(new SettingOption("Balloons", 7));
            deploy1.PossibleValues.Add(new SettingOption("BabyDragons", 8));
            deploy1.PossibleValues.Add(new SettingOption("Lava", 9));
            deploy1.PossibleValues.Add(new SettingOption("Dragons", 10));
            deploy1.PossibleValues.Add(new SettingOption("Air Funnelling", 11));
            deploy1.HideInUiWhen.Add(new SettingOption("use custom deploy order", 0));
            settings.DefineSetting(deploy1);

            var deploy2 = new AlgorithmSetting("#2", "", 2, SettingType.Global);

            deploy2.PossibleValues.Add(new SettingOption("Golems", 1));
            deploy2.PossibleValues.Add(new SettingOption("Ground Funnelling", 2));
            deploy2.PossibleValues.Add(new SettingOption("Giants", 3));
            deploy2.PossibleValues.Add(new SettingOption("Heroes", 4));
            deploy2.PossibleValues.Add(new SettingOption("Wall Breakers", 5));
            deploy2.PossibleValues.Add(new SettingOption("Normal Troops", 6));
            deploy2.PossibleValues.Add(new SettingOption("Balloons", 7));
            deploy2.PossibleValues.Add(new SettingOption("BabyDragons", 8));
            deploy2.PossibleValues.Add(new SettingOption("Lava", 9));
            deploy2.PossibleValues.Add(new SettingOption("Dragons", 10));
            deploy2.PossibleValues.Add(new SettingOption("Air Funnelling", 11));
            deploy2.HideInUiWhen.Add(new SettingOption("use custom deploy order", 0));
            settings.DefineSetting(deploy2);

            var deploy3 = new AlgorithmSetting("#3", "", 3, SettingType.Global);

            deploy3.PossibleValues.Add(new SettingOption("Golems", 1));
            deploy3.PossibleValues.Add(new SettingOption("Ground Funnelling", 2));
            deploy3.PossibleValues.Add(new SettingOption("Giants", 3));
            deploy3.PossibleValues.Add(new SettingOption("Heroes", 4));
            deploy3.PossibleValues.Add(new SettingOption("Wall Breakers", 5));
            deploy3.PossibleValues.Add(new SettingOption("Normal Troops", 6));
            deploy3.PossibleValues.Add(new SettingOption("Balloons", 7));
            deploy3.PossibleValues.Add(new SettingOption("BabyDragons", 8));
            deploy3.PossibleValues.Add(new SettingOption("Lava", 9));
            deploy3.PossibleValues.Add(new SettingOption("Dragons", 10));
            deploy3.PossibleValues.Add(new SettingOption("Air Funnelling", 11));
            deploy3.HideInUiWhen.Add(new SettingOption("use custom deploy order", 0));
            settings.DefineSetting(deploy3);

            var deploy4 = new AlgorithmSetting("#4", "", 4, SettingType.Global);

            deploy4.PossibleValues.Add(new SettingOption("Golems", 1));
            deploy4.PossibleValues.Add(new SettingOption("Ground Funnelling", 2));
            deploy4.PossibleValues.Add(new SettingOption("Giants", 3));
            deploy4.PossibleValues.Add(new SettingOption("Heroes", 4));
            deploy4.PossibleValues.Add(new SettingOption("Wall Breakers", 5));
            deploy4.PossibleValues.Add(new SettingOption("Normal Troops", 6));
            deploy4.PossibleValues.Add(new SettingOption("Balloons", 7));
            deploy4.PossibleValues.Add(new SettingOption("BabyDragons", 8));
            deploy4.PossibleValues.Add(new SettingOption("Lava", 9));
            deploy4.PossibleValues.Add(new SettingOption("Dragons", 10));
            deploy4.PossibleValues.Add(new SettingOption("Air Funnelling", 11));
            deploy4.HideInUiWhen.Add(new SettingOption("use custom deploy order", 0));
            settings.DefineSetting(deploy4);

            var deploy5 = new AlgorithmSetting("#5", "", 5, SettingType.Global);

            deploy5.PossibleValues.Add(new SettingOption("Golems", 1));
            deploy5.PossibleValues.Add(new SettingOption("Ground Funnelling", 2));
            deploy5.PossibleValues.Add(new SettingOption("Giants", 3));
            deploy5.PossibleValues.Add(new SettingOption("Heroes", 4));
            deploy5.PossibleValues.Add(new SettingOption("Wall Breakers", 5));
            deploy5.PossibleValues.Add(new SettingOption("Normal Troops", 6));
            deploy5.PossibleValues.Add(new SettingOption("Balloons", 7));
            deploy5.PossibleValues.Add(new SettingOption("BabyDragons", 8));
            deploy5.PossibleValues.Add(new SettingOption("Lava", 9));
            deploy5.PossibleValues.Add(new SettingOption("Dragons", 10));
            deploy5.PossibleValues.Add(new SettingOption("Air Funnelling", 11));
            deploy5.HideInUiWhen.Add(new SettingOption("use custom deploy order", 0));
            settings.DefineSetting(deploy5);

            var deploy6 = new AlgorithmSetting("#6", "", 6, SettingType.Global);

            deploy6.PossibleValues.Add(new SettingOption("Golems", 1));
            deploy6.PossibleValues.Add(new SettingOption("Ground Funnelling", 2));
            deploy6.PossibleValues.Add(new SettingOption("Giants", 3));
            deploy6.PossibleValues.Add(new SettingOption("Heroes", 4));
            deploy6.PossibleValues.Add(new SettingOption("Wall Breakers", 5));
            deploy6.PossibleValues.Add(new SettingOption("Normal Troops", 6));
            deploy6.PossibleValues.Add(new SettingOption("Balloons", 7));
            deploy6.PossibleValues.Add(new SettingOption("BabyDragons", 8));
            deploy6.PossibleValues.Add(new SettingOption("Lava", 9));
            deploy6.PossibleValues.Add(new SettingOption("Dragons", 10));
            deploy6.PossibleValues.Add(new SettingOption("Air Funnelling", 11));
            deploy6.HideInUiWhen.Add(new SettingOption("use custom deploy order", 0));
            settings.DefineSetting(deploy6);

            return(settings);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Allows any Algorithm Dev to specify their own Settings.
        /// </summary>
        /// <returns>A Template of Settings to Dynamically build the UI for - so the Bot User can customize the settings.</returns>
        internal static AlgorithmSettings DefineSettings()
        {
            var settings = new AlgorithmSettings();

            settings.AlgorithmName           = algorithmName;
            settings.AlgorithmDescriptionURL = "http://www.raccoonbot.com/forum/topic/22848-human-barch-deploy/";

            var debugMode = new AlgorithmSetting("Debug Mode", "When on, Debug Images will be written out for each attack showing what the algorithm is seeing.", 1, SettingType.Global);

            debugMode.PossibleValues.Add(new SettingOption("Off", 0));
            debugMode.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(debugMode);

            var ignoreGold = new AlgorithmSetting("Ignore Gold", "When on, The algorithm will not target Gold Collectors/Storages.", 0, SettingType.Global);

            ignoreGold.PossibleValues.Add(new SettingOption("Off", 0));
            ignoreGold.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(ignoreGold);

            var ignoreElixir = new AlgorithmSetting("Ignore Elixir", "When on, The algorithm will not target Elixir Collectors/Storages.", 0, SettingType.Global);

            ignoreElixir.PossibleValues.Add(new SettingOption("Off", 0));
            ignoreElixir.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(ignoreElixir);

            var minExposedTargets = new AlgorithmSetting("Minimum Exposed Targets", "Minimum number of Collectors/Drills/Storages that are on the outside of the base - before the attack phase will start.", 3, SettingType.ActiveAndDead);

            minExposedTargets.PossibleValues.Add(new SettingOption("1", 1));
            minExposedTargets.PossibleValues.Add(new SettingOption("2", 2));
            minExposedTargets.PossibleValues.Add(new SettingOption("3", 3));
            minExposedTargets.PossibleValues.Add(new SettingOption("4", 4));
            minExposedTargets.PossibleValues.Add(new SettingOption("5", 5));
            minExposedTargets.PossibleValues.Add(new SettingOption("6", 6));
            minExposedTargets.PossibleValues.Add(new SettingOption("7", 7));
            minExposedTargets.PossibleValues.Add(new SettingOption("8", 8));
            settings.DefineSetting(minExposedTargets);

            var maximumDistanceToTarget = new AlgorithmSetting("Acceptable Target Range", "Specify the maximum number of tiles a target can be from the ouside of the base. (Collectors/Drills/Storages furthor inside than this will not be targeted.)", 9, SettingType.ActiveAndDead);

            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("2", 2));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("3", 3));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("4", 4));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("5", 5));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("6", 6));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("7", 7));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("8", 8));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("9", 9));
            maximumDistanceToTarget.PossibleValues.Add(new SettingOption("10", 10));
            settings.DefineSetting(maximumDistanceToTarget);

            var minFillLevel = new AlgorithmSetting("Min Collector Fill Level", "The minimum Fullness of Collectors to Attack. (5-50)", 26, SettingType.ActiveOnly);

            minFillLevel.MinValue = 5;
            minFillLevel.MaxValue = 50;
            settings.DefineSetting(minFillLevel);

            var minAvgCollectorLvl = new AlgorithmSetting("Min Average Collector Level", "Specify the Average Collector Level to accept when attacking live bases. (6-12)", 9, SettingType.ActiveOnly);

            minAvgCollectorLvl.MinValue = 6;
            minAvgCollectorLvl.MaxValue = 12;
            settings.DefineSetting(minAvgCollectorLvl);

            var deployAllTroops = new AlgorithmSetting("Deploy All Troops Mode", "When Turned on, The Algorithm Will divide all available troops by number of valid targets, and Deploy all Troops in the First Wave.", 1, SettingType.ActiveAndDead);

            deployAllTroops.PossibleValues.Add(new SettingOption("On", 1));
            deployAllTroops.PossibleValues.Add(new SettingOption("Off", 0));
            settings.DefineSetting(deployAllTroops);

            var groundUnits = new AlgorithmSetting("Ground Units Per Target", "Specify the number of Ground units (Barbs, Goblins etc.) to deploy at each Target.", 10, SettingType.ActiveAndDead);

            groundUnits.MinValue = 1;
            groundUnits.MaxValue = 25;
            groundUnits.HideInUiWhen.Add(new SettingOption("Deploy All Troops Mode", 1));
            settings.DefineSetting(groundUnits);

            var rangedUnits = new AlgorithmSetting("Ranged Units Per Target", "Specify the number of Ranged units (Archers, Minions etc.) to deploy at each Target.", 8, SettingType.ActiveAndDead);

            rangedUnits.MinValue = 1;
            rangedUnits.MaxValue = 25;
            rangedUnits.HideInUiWhen.Add(new SettingOption("Deploy All Troops Mode", 1));
            settings.DefineSetting(rangedUnits);

            var tankUnits = new AlgorithmSetting("Tank Units Per Target", "Specify the number of Tanks (Giants) to deploy at each target.", 1, SettingType.ActiveAndDead);

            tankUnits.PossibleValues.Add(new SettingOption("1", 1));
            tankUnits.PossibleValues.Add(new SettingOption("2", 2));
            tankUnits.HideInUiWhen.Add(new SettingOption("Deploy All Troops Mode", 1));
            settings.DefineSetting(tankUnits);

            var valksAsTanks = new AlgorithmSetting("Use Valkyries as Tanks", "When on, The algorithm will classify Valkyries as Tank Units, and deploy before other Ground and Ranged units.", 0, SettingType.ActiveAndDead);

            valksAsTanks.PossibleValues.Add(new SettingOption("Off", 0));
            valksAsTanks.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(valksAsTanks);

            return(settings);
        }
Exemplo n.º 11
0
        void AddAlgNode(string algName, double x = 0, double y = 0, LoopControl loop = null)
        {
            Type algType = Window.HydrologyCore.AlgorithmTypes[algName];

            DataTable paramsTable = new DataTable();
            paramsTable.Columns.Add("Name");
            paramsTable.Columns.Add("Value");

            foreach (ParameterAttribute attr in algType.GetCustomAttributes<ParameterAttribute>())
            {
                DataRow row = paramsTable.NewRow();
                row["Name"] = attr.Name;
                row["Value"] = attr.DefaultValue;
                paramsTable.Rows.Add(row);
            }

            var algSettings = new AlgorithmSettings(Window.FolderDialog, paramsTable, algType)
            {
                Owner = Window,
                WindowStartupLocation = WindowStartupLocation.CenterOwner
            };
            algSettings.ParentLoop = this;
            bool? dialogResult = algSettings.ShowDialog();
            if (dialogResult.HasValue && dialogResult.Value)
            {
                AddNode(algType, algSettings.Path, algSettings.ParamsTable, x, y, loop, algSettings.VarLoop);
            }
        }
 public SettingsForm(AlgorithmSettings algorithmSettings)
 {
     this.algorithmSettings = algorithmSettings;
 }
Exemplo n.º 13
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            int progress = 0;

            optrez.Clear();
            finalRez.Clear();
            alg = new PGA();
            OptimizationModel optModel = new OptimizationModel(func);
            EnumConverter     InitialLoadTypeCollection = new EnumConverter(typeof(InitialLoadType));
            EnumConverter     EndConditionTypeCollecton = new EnumConverter(typeof(EndCondition));
            EnumConverter     MutationTypeCollecton     = new EnumConverter(typeof(MutationType));
            EnumConverter     SelectionTypeCollection   = new EnumConverter(typeof(SelectionType));

            foreach (InitialLoadType il in InitialLoadTypeCollection.GetStandardValues())
            {
                foreach (EndCondition ec in EndConditionTypeCollecton.GetStandardValues())
                {
                    foreach (MutationType mt in MutationTypeCollecton.GetStandardValues())
                    {
                        foreach (SelectionType st in SelectionTypeCollection.GetStandardValues())
                        {
                            double[] f1m = new double[(int)numericUpDown8.Value];
                            double[] f2m = new double[(int)numericUpDown8.Value];
                            double[] fm  = new double[(int)numericUpDown8.Value];
                            double[] x1m = new double[(int)numericUpDown8.Value];
                            double[] x2m = new double[(int)numericUpDown8.Value];
                            for (int i = 0; i < (int)numericUpDown8.Value; i++)
                            {
                                AlgorithmSettings settings = new AlgorithmSettings()
                                {
                                    InitialLoadType             = il,
                                    OptModel                    = optModel,
                                    InitialPointCount           = (int)numericUpDown1.Value,
                                    SelectionType               = st,
                                    EndCondition                = ec,
                                    MaxGenerationCount          = (int)numericUpDown2.Value,
                                    SurvivedCount               = (int)numericUpDown3.Value,
                                    MutationChance              = (double)numericUpDown4.Value,
                                    CrossingGenNumber           = (int)numericUpDown5.Value,
                                    Tolerance                   = (double)numericUpDown6.Value,
                                    MutationChanceAfterCrossing = (double)numericUpDown7.Value,
                                    MutationType                = mt
                                };
                                alg.Run(settings);
                                double x1 = alg.Best.X1;
                                double x2 = alg.Best.X2;
                                double f1 = alg.Best.F;
                                double f2 = alg.CallCount;
                                double f  = GetCriterion(f1, f2);
                                f1m[i] = f1;
                                f2m[i] = f2;
                                fm[i]  = f;
                                x1m[i] = x1;
                                x2m[i] = x2;
                                optrez.Add(new OptRezult()
                                {
                                    I  = il,
                                    E  = ec,
                                    S  = st,
                                    M  = mt,
                                    F1 = f1,
                                    F2 = f2,
                                    X1 = x1,
                                    X2 = x2,
                                    F  = f
                                });
                            }
                            progress++;
                            backgroundWorker1.ReportProgress(progress * 100 / 24);
                            finalRez.Add(new OptRezult()
                            {
                                I  = il,
                                E  = ec,
                                S  = st,
                                M  = mt,
                                X1 = x1m.Average(),
                                X2 = x2m.Average(),
                                F1 = f1m.Average(),
                                F2 = f2m.Average(),
                                F  = fm.Average()
                            });
                        }
                    }
                }
            }
        }
Exemplo n.º 14
0
        internal static AlgorithmSettings DefineSettings()
        {
            var settings = new AlgorithmSettings()
            {
                AlgorithmName           = AttackName,
                AlgorithmDescriptionURL = "https://www.raccoonbot.com/forum/topic/24589-dark-push-deploy/"
            };

            // Global Settings.
            var debugMode = new AlgorithmSetting("Debug Mode", "When on, Debug Images will be written out for each attack showing what the algorithm is seeing.", 0, SettingType.Global);

            debugMode.PossibleValues.Add(new SettingOption("Off", 0));
            debugMode.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(debugMode);

            var setCollMines = new AlgorithmSetting("Set Exposed Collecotors & Mines", "turn on and off searching for outside elixir collectors and gold mines.", 1, SettingType.ActiveAndDead);

            setCollMines.PossibleValues.Add(new SettingOption("Off", 0));
            setCollMines.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(setCollMines);

            // Show These ONLY when Set Exposed Collecotors & Mines is on.
            var minDistance = new AlgorithmSetting("Acceptable Target Range", "the maximun numbers of tiles the collectors and drills can be far from red line", 6, SettingType.ActiveAndDead)
            {
                MinValue = 2,
                MaxValue = 10
            };

            minDistance.HideInUiWhen.Add(new SettingOption("Set Exposed Collecotors & Mines", 0));
            settings.DefineSetting(minDistance);

            var minimElixir = new AlgorithmSetting("Minimum Exposed Colloctors", "Minimum Elixir Colloctores found outside before attack", 3, SettingType.ActiveAndDead)
            {
                MinValue = 0,
                MaxValue = 7
            };

            minimElixir.HideInUiWhen.Add(new SettingOption("Set Exposed Collecotors & Mines", 0));
            settings.DefineSetting(minimElixir);

            var minimGold = new AlgorithmSetting("Minimum Exposed Mines", "Minimum Gold Mines found outside before attack", 3, SettingType.ActiveAndDead)
            {
                MinValue = 0,
                MaxValue = 7
            };

            minimGold.HideInUiWhen.Add(new SettingOption("Set Exposed Collecotors & Mines", 0));
            settings.DefineSetting(minimGold);


            var useSmartZapDrills = new AlgorithmSetting("Smart Zap Drills", "use lighting Drills with smart way to save lighting spells if no need to use (please disable default Lighting drills if you select this option)", 0, SettingType.ActiveAndDead);

            useSmartZapDrills.PossibleValues.Add(new SettingOption("Off", 0));
            useSmartZapDrills.PossibleValues.Add(new SettingOption("On", 1));
            settings.DefineSetting(useSmartZapDrills);

            // Show These ONLY when Smart Zap Drills is on.
            var startZapAfter = new AlgorithmSetting("Start Zap Drills After ?(sec)", "change when bot start to use smart zap , this time start from deployment is done with all troops", 30, SettingType.ActiveAndDead)
            {
                MinValue = 10,
                MaxValue = 60
            };

            startZapAfter.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(startZapAfter);

            var minDrillLvl = new AlgorithmSetting("Min Drill Level", "select minimum level of the drill to be zapped", 3, SettingType.ActiveAndDead)
            {
                MinValue = 1,
                MaxValue = 6
            };

            minDrillLvl.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(minDrillLvl);

            var minDEAmount = new AlgorithmSetting("Min Dark Elixir per Zap", "we will zap only drills that have more than this amount of DE.", 200, SettingType.ActiveAndDead)
            {
                MinValue = 100,
                MaxValue = 600
            };

            minDEAmount.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(minDEAmount);

            var useEQOnDrills = new AlgorithmSetting("Use EarthQuake spell on drills", "use EarthQuake spell to gain DE from drills ", 0, SettingType.ActiveAndDead);

            useEQOnDrills.PossibleValues.Add(new SettingOption("Off", 0));
            useEQOnDrills.PossibleValues.Add(new SettingOption("On", 1));
            useEQOnDrills.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(useEQOnDrills);

            var endBattleAfterZap = new AlgorithmSetting("End Battle after zap ?(sec)", "end battle after this time in sec after Smart Zap is done (0 is disabled)", 10, SettingType.ActiveAndDead)
            {
                MinValue = 0,
                MaxValue = 60
            };

            endBattleAfterZap.HideInUiWhen.Add(new SettingOption("Smart Zap Drills", 0));
            settings.DefineSetting(endBattleAfterZap);

            var deployHeroesAt = new AlgorithmSetting("Deploy Heroes At", "choose where to deploy Heroes", 0, SettingType.ActiveAndDead);

            deployHeroesAt.PossibleValues.Add(new SettingOption("Normal (at the end)", 0));
            deployHeroesAt.PossibleValues.Add(new SettingOption("TownHall Side", 1));
            deployHeroesAt.PossibleValues.Add(new SettingOption("DE storage Side", 1));
            settings.DefineSetting(deployHeroesAt);



            return(settings);
        }