public HillClimbingAlgorithm(string name, IStopCriteria <T> stopCriteria, Mover mover,
                              ILogger <HillClimbingAlgorithm <T> > logger, SolutionSaver analyzer = null) :
     base(name, logger)
 {
     StopCriteria = stopCriteria;
     Mover        = mover;
     _saver       = analyzer;
 }
Exemple #2
0
 public TabuSearch(INeighbourFinder neighbourFinder, ITabuList tabuList, ILongTermMemory longTermMemory, ICostFinder costFinder, IAspirationCriteria aspirationCriteria, IStopCriteria stopCriteria, IStopCriteria noChange, IStopCriteria costLessThan)
 {
     this.neighbourFinder    = neighbourFinder;
     this.tabuList           = tabuList;
     this.longTermMemory     = longTermMemory;
     this.costFinder         = costFinder;
     this.aspirationCriteria = aspirationCriteria;
     this.stopCriteria       = stopCriteria;
     this.noChange           = noChange;
     this.costLessThan       = costLessThan;
 }
Exemple #3
0
        private IStopCriteria Compose(IStopCriteria criteria1, IStopCriteria criteria2)
        {
            switch (CurrentOperator)
            {
            case CriteriaOperatorTypes.And:
                return(new AndStopCriteria(criteria1, criteria2));

            case CriteriaOperatorTypes.Or:
                return(new OrStopCriteria(criteria1, criteria2));

            default:
                throw new InvalidOperationException();
            }
        }
Exemple #4
0
        public StopCriteriaBuilder And(Func <StopCriteriaBuilder, StopCriteriaBuilder> nested)
        {
            if (CurrentOperator != CriteriaOperatorTypes.None || Criteria == null)
            {
                throw new InvalidOperationException();
            }

            var build       = StopCriteriaBuilder.StopWhen();
            var nestedBuild = nested(build);

            CurrentOperator = CriteriaOperatorTypes.And;
            Criteria        = Compose(Criteria, nestedBuild.Criteria);
            CurrentOperator = CriteriaOperatorTypes.None;
            return(this);
        }
Exemple #5
0
        public StopCriteriaBuilder When(IStopCriteria criteria)
        {
            if (criteria == null)
            {
                throw new ArgumentNullException(nameof(criteria));
            }

            if (CurrentOperator == CriteriaOperatorTypes.None && Criteria != null)
            {
                throw new InvalidOperationException();
            }

            if (CurrentOperator == CriteriaOperatorTypes.None)
            {
                Criteria = criteria;
                return(this);
            }

            Criteria        = Compose(Criteria, criteria);
            CurrentOperator = CriteriaOperatorTypes.None;
            return(this);
        }
Exemple #6
0
 public OrStopCriteria(IStopCriteria criteria1, IStopCriteria criteria2)
 {
     Criteria1 = criteria1;
     Criteria2 = criteria2;
 }