private void AssignNextToCurrentIfBecameBetter() { if (_next.FitnessFuntionValue > _current.FitnessFuntionValue && IsValidDescendant(_next)) { _current = _next; ++_successAmount; } }
public void AssignDescendant(DescendantFirst descendant) { var thisParticipant = Scheduler.Participants[descendant.ParticipantId]; var thisRealization = Scheduler.Realizations[descendant.RealizationId]; thisRealization.EnrolledParticipantAmount += 1; //thisParticipant.declarations.Add(thisRealization.courseTypeId, thisRealization.realizationId); thisParticipant.Declarations[thisRealization.CourseTypeId] = thisRealization.RealizationId; }
public void IsValidDescendantTest() { { // Arrange var current = new DescendantFirst(3, 3); var next = new DescendantFirst(3, 3); // Act // Assert } }
private void TryGeneratingBetterDescendant() { for (var i = 0; i < _mIteration; i++) { _current = new DescendantFirst(RandomInitializer.Rand.Next(Scheduler.ParticipantsAmount), RandomInitializer.Rand.Next(Scheduler.RealizationsAmount)); _current.CalculateFitnessFunction(); if (!IsValidDescendant(_current)) { _current = null; } } }
public bool IsValidDescendant(DescendantFirst descendant) { var thisParticipant = Scheduler.Participants[descendant.ParticipantId]; var thisRealization = Scheduler.Realizations[descendant.RealizationId]; if ((!thisParticipant.Declarations.ContainsKey(thisRealization.CourseTypeId)))//Course has already been chosen { return(false); } if (thisParticipant.Declarations[thisRealization.CourseTypeId] != -1) { return(false); } if ((thisRealization.MaxParticipantAmount - thisRealization.EnrolledParticipantAmount <= 0)) { return(false); } // no available seats for realization return(true); }
private void GenerateNextDescendant(int newParticipantId, int newRealizationId) { _next = new DescendantFirst(newParticipantId, newRealizationId); _next.CalculateFitnessFunction(); }