Exemple #1
0
        private void GetGraphPath(PathRegion pathRegion, int pEnd, int pStart)
        {
            List <Point3D> testFirstManipulator           = new List <Point3D>();
            int            countGraphVerticesBeforeAdding = _graphVertices.Count;

            rbLog.AppendText("Добавляем вершины в граф..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            for (int i = 0; i < _iterations; i++)
            {
                Point3D currentPoint = new Point3D(TrueRandom.GetRandomInt(pathRegion.minX, pathRegion.maxX), TrueRandom.GetRandomInt(pathRegion.minY, pathRegion.maxY),
                                                   TrueRandom.GetRandomInt(pathRegion.minZ, pathRegion.maxZ));
                testFirstManipulator.Add(currentPoint);
                _graphVertices.Add(new GraphVertex(countGraphVerticesBeforeAdding + i, currentPoint, true));
            }
            rbLog.AppendText("Удаление некорректных вершин..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            rbLog.AppendText("Расширяем матрицу весов..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            IsCorrectVertex(ref _graphVertices, _safeDistance, pEnd, pStart);
            _adjencyMatrixManipulator = ResizeAdjencyMatrixManipulator(_adjencyMatrixManipulator, _graphVertices.Count - _adjencyMatrixManipulator.GetLength(0));
            int countLastAdjencyMatrix = _adjencyMatrixManipulator.GetLength(0);

            for (int i = countGraphVerticesBeforeAdding; i < _adjencyMatrixManipulator.GetLength(0); i++)
            {
                _graphVertices[i].Number = i;
            }
            rbLog.AppendText("Соединяем новые вершины..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            TryToConnect(_graphVertices, _distanceBetweenPoints, _adjencyMatrixManipulator, AlgoritmTryType.CleanDataWork);
        }
Exemple #2
0
        private void GetGraphPath(int pEnd, int pStart, PathRegion pathRegion)
        {
            List <Point3D> testFirstManipulator = new List <Point3D>();

            rbLog.AppendText("Добавляем вершины..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            for (int i = 0; i < _iterations; i++)
            {
                Point3D currentPoint = new Point3D(TrueRandom.GetRandomInt(pathRegion.minX, pathRegion.maxX), TrueRandom.GetRandomInt(pathRegion.minY, pathRegion.maxY),
                                                   TrueRandom.GetRandomInt(pathRegion.minZ, pathRegion.maxZ));
                testFirstManipulator.Add(currentPoint);
                _graphVertices.Add(new GraphVertex(i, currentPoint, true));
            }
            rbLog.AppendText("Удаление некорректных вершин..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            IsCorrectVertex(ref _graphVertices, _safeDistance, pEnd, pStart);
            _adjencyMatrixManipulator = new int[_graphVertices.Count, _graphVertices.Count];
            for (int i = 0; i < _graphVertices.Count; i++)
            {
                _graphVertices[i].Number = i;
            }
            rbLog.AppendText("Составление матрицы смежности..\n");
            rbLog.ScrollToCaret();
            rbLog.Refresh();
            TryToConnect(_graphVertices, _distanceBetweenPoints, _adjencyMatrixManipulator, AlgoritmTryType.CleanDataWork);
        }
Exemple #3
0
        public Neuron()
        {
            this.Synapses = new List <Synapse>();

            //Initialize Synaptic Weights Randomly, on [0,1.0]
            TrueRandom n = new TrueRandom();

            this.Bias = n.RandomValue;
        }
Exemple #4
0
        private IEnumerable <ScheduleView> GenerateOddTeamRoundRobin(List <string> teamNames)
        {
            var seasonInfo = _rosterService.GetSeasonInfoView().Result;

            var views = new List <ScheduleView>();

            var startDate = seasonInfo.SeasonInfo.SeasonStartDate;

            for (var week = 0; week < teamNames.Count; week++)
            {
                var date          = startDate.AddDays(7 * week);
                var weeklyMatches = new List <ScheduleView>();
                if (teamNames.Count == 5)
                {
                    weeklyMatches.AddRange(CreateFor5TeamWeek(week, teamNames, date));
                }
                else if (teamNames.Count == 7)
                {
                    weeklyMatches.AddRange(CreateFor7TeamWeek(week, teamNames, date));
                }

                foreach (var match in weeklyMatches)
                {
                    var swap = TrueRandom.TrueRandomGenerator();
                    if (!swap)
                    {
                        var temp = match.HomeTeam;
                        match.HomeTeam = match.AwayTeam;
                        match.AwayTeam = temp;
                    }
                }
                views.AddRange(weeklyMatches);
            }

            return(views);
        }
Exemple #5
0
        /// <summary>
        /// Get random float between min and max
        /// </summary>
        /// <param name="trueRandom">ToDo</param>
        /// <param name="min">Min</param>
        /// <param name="max">Max</param>
        /// <returns>Float</returns>
        public static float GetRandomFloat(bool trueRandom, float min, float max)
        {
            float formula = (max - min) + min;

            return(trueRandom ? (float)TrueRandom.NextDouble() * formula : (float)FakeRandom.NextDouble() * formula);
        }
Exemple #6
0
 /// <summary>
 /// Get random int
 /// </summary>
 /// <param name="trueRandom">ToDo</param>
 /// <param name="max">Maximum</param>
 /// <returns>Int</returns>
 public static int GetRandomInt(bool trueRandom, int max)
 {
     return(trueRandom ? TrueRandom.Next(max) : FakeRandom.Next(max));
 }
        public Synapse()
        {
            TrueRandom n = new TrueRandom();

            this.Weight = n.RandomValue;
        }
Exemple #8
0
        private IEnumerable <ScheduleView> GenerateRoundRobin(List <string> teamNames, string divisionName)
        {
            var seasonInfo = _rosterService.GetSeasonInfoView().Result;

            var views = new List <ScheduleView>();

            if (teamNames.Count % 2 == 1)
            {
                return(GenerateOddTeamRoundRobin(teamNames));
            }

            var teamSize = teamNames.Count;

            var weeks    = Math.Min(teamSize - 1, 7);
            var halfSize = teamSize / 2;
            var teams    = new List <string>();

            teams.AddRange(teamNames);
            teams.RemoveAt(0);

            teamSize--;

            var startDate = seasonInfo.SeasonInfo.SeasonStartDate;

            for (var week = 0; week < weeks; week++)
            {
                var date       = startDate.AddDays(7 * week);
                var teamIndex  = week % teamSize;
                var firstTeam  = teams[teamIndex];
                var secondTeam = teamNames[0];

                views.Add(new ScheduleView
                {
                    ScheduleId    = Guid.NewGuid(),
                    HomeTeam      = firstTeam,
                    AwayTeam      = secondTeam,
                    HomeTeamScore = 0,
                    AwayTeamScore = 0,
                    WeekOf        = date
                });

                for (var index = 1; index < halfSize; index++)
                {
                    firstTeam  = teams[(week + index) % teamSize];
                    secondTeam = teams[(week + teamSize - index) % teamSize];

                    var swap = TrueRandom.TrueRandomGenerator();

                    if (!swap)
                    {
                        var temp = firstTeam;
                        firstTeam  = secondTeam;
                        secondTeam = temp;
                    }

                    views.Add(new ScheduleView
                    {
                        ScheduleId    = Guid.NewGuid(),
                        HomeTeam      = firstTeam,
                        AwayTeam      = secondTeam,
                        HomeTeamScore = 0,
                        AwayTeamScore = 0,
                        WeekOf        = date
                    });
                }
            }

            if (weeks < 4)
            {
                var tempViews = new List <ScheduleView>(views);
                foreach (var view in views)
                {
                    var round2 = new ScheduleView
                    {
                        ScheduleId    = Guid.NewGuid(),
                        HomeTeam      = view.AwayTeam,
                        AwayTeam      = view.HomeTeam,
                        HomeTeamScore = 0,
                        AwayTeamScore = 0,
                        WeekOf        = view.WeekOf.AddDays(21)
                    };
                    tempViews.Add(round2);
                }

                views = tempViews;
            }

            return(views);
        }