private void UpdateGrammerConstraintsForClonedSymbol(ISymbol symbol, Cloner cloner)
 {
     foreach (var s in symbol.Flatten().Where(x => !(x is GroupSymbol)))
     {
         if (!cloner.ClonedObjectRegistered(s))
         {
             throw new InvalidOperationException();
         }
         var clone = cloner.Clone(s);
         Content.SetSubtreeCount(clone, Content.GetMinimumSubtreeCount(s), Content.GetMaximumSubtreeCount(s));
         foreach (var childSymbol in Content.GetAllowedChildSymbols(s))
         {
             var newChildSymbol = childSymbol;
             if (cloner.ClonedObjectRegistered(childSymbol))
             {
                 newChildSymbol = cloner.Clone(childSymbol);
             }
             Content.AddAllowedChildSymbol(clone, newChildSymbol);
         }
         for (int i = 0; i < Content.GetMaximumSubtreeCount(s); i++)
         {
             foreach (var childSymbol in Content.GetAllowedChildSymbols(s, i))
             {
                 var newChildSymbol = childSymbol;
                 if (cloner.ClonedObjectRegistered(childSymbol))
                 {
                     newChildSymbol = cloner.Clone(childSymbol);
                 }
                 Content.AddAllowedChildSymbol(clone, newChildSymbol, i);
             }
         }
     }
 }
    protected PermutationEncoding(PermutationEncoding original, Cloner cloner)
      : base(original, cloner) {
      this.readOnly = original.readOnly;

      if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
        this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
      else
        this.ProblemInstance = original.ProblemInstance;
    }
 public override IDeepCloneable Clone(Cloner cloner)
 {
     foreach (ISymbol symbol in base.Symbols)
     {
         if (!cloner.ClonedObjectRegistered(symbol))
         {
             cloner.RegisterClonedObject(symbol, symbol);
         }
     }
     return(new SymbolicExpressionTreeGrammar(this, cloner));
 }
Пример #4
0
 protected TourEncoding(TourEncoding original, Cloner cloner)
     : base(original, cloner)
 {
     this.Tours = (ItemList <Tour>)cloner.Clone(original.Tours);
     if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
     {
         this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
     }
     else
     {
         this.ProblemInstance = original.ProblemInstance;
     }
 }
        protected PermutationEncoding(PermutationEncoding original, Cloner cloner)
            : base(original, cloner)
        {
            this.readOnly = original.readOnly;

            if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
            {
                this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
            }
            else
            {
                this.ProblemInstance = original.ProblemInstance;
            }
        }
Пример #6
0
        private VRPSolution(VRPSolution original, Cloner cloner)
            : base(original, cloner)
        {
            this.solution = (IVRPEncoding)cloner.Clone(original.solution);
            this.quality  = (DoubleValue)cloner.Clone(original.quality);

            if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
            {
                this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
            }
            else
            {
                this.ProblemInstance = original.ProblemInstance;
            }

            this.Initialize();
        }
 private void UpdateGrammerConstraintsForClonedSymbol(ISymbol symbol, Cloner cloner) {
   foreach (var s in symbol.Flatten().Where(x => !(x is GroupSymbol))) {
     if (!cloner.ClonedObjectRegistered(s)) throw new InvalidOperationException();
     var clone = cloner.Clone(s);
     Content.SetSubtreeCount(clone, Content.GetMinimumSubtreeCount(s), Content.GetMaximumSubtreeCount(s));
     foreach (var childSymbol in Content.GetAllowedChildSymbols(s)) {
       var newChildSymbol = childSymbol;
       if (cloner.ClonedObjectRegistered(childSymbol)) newChildSymbol = cloner.Clone(childSymbol);
       Content.AddAllowedChildSymbol(clone, newChildSymbol);
     }
     for (int i = 0; i < Content.GetMaximumSubtreeCount(s); i++) {
       foreach (var childSymbol in Content.GetAllowedChildSymbols(s, i)) {
         var newChildSymbol = childSymbol;
         if (cloner.ClonedObjectRegistered(childSymbol)) newChildSymbol = cloner.Clone(childSymbol);
         Content.AddAllowedChildSymbol(clone, newChildSymbol, i);
       }
     }
   }
 }
 public override IDeepCloneable Clone(Cloner cloner) {
   foreach (ISymbol symbol in base.Symbols)
     if (!cloner.ClonedObjectRegistered(symbol))
       cloner.RegisterClonedObject(symbol, symbol);
   return new SymbolicExpressionTreeGrammar(this, cloner);
 }
Пример #9
0
 protected TourEncoding(TourEncoding original, Cloner cloner)
   : base(original, cloner) {
   this.Tours = (ItemList<Tour>)cloner.Clone(original.Tours);
   if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
     this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
   else
     this.ProblemInstance = original.ProblemInstance;
 }
Пример #10
0
    private VRPSolution(VRPSolution original, Cloner cloner)
      : base(original, cloner) {
      this.solution = (IVRPEncoding)cloner.Clone(original.solution);
      this.quality = (DoubleValue)cloner.Clone(original.quality);

      if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
        this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
      else
        this.ProblemInstance = original.ProblemInstance;

      this.Initialize();
    }