Opened 10 years ago

Closed 9 years ago

#922 closed enhancement (done)

Refactor cloning

Reported by: swagner Owned by: swagner
Priority: low Milestone: HeuristicLab 3.3.2
Component: General Version: 3.3.2
Keywords: Cc:

Description (last modified by swagner)

If a class contains initialization code in the default parameterless constructor, this code usually does not have to be executed when creating a clone. Therefore using the default constructor for creating clones is not a good solution. There should be a specific constructor for this purpose.

Additionally it should also be checked, if every storable class provides a storable constructor.

Change History (67)

comment:1 Changed 10 years ago by swagner

  • Priority changed from major to critical

comment:2 Changed 9 years ago by swagner

  • Priority changed from critical to minor

comment:3 Changed 9 years ago by gkronber

  • Owner changed from swagner to gkronber
  • Status changed from new to accepted

comment:5 Changed 9 years ago by swagner

Added typed Clone method in Cloner in r4657.

comment:6 Changed 9 years ago by mkommend

  • Version changed from 3.3 to branch

Added StorableConstructorTest and StorableClassAttribute.IsStorableClass in r4658.

comment:7 Changed 9 years ago by mkommend

Added CloningConstructorTest in r4660.

comment:8 Changed 9 years ago by mkommend

Added check for existence of the clone method in CloningConstructorTest in r4661.

comment:9 Changed 9 years ago by abeham

r4662

  • Refactored HeuristicLab.Data
  • Refactored HeuristicLab.Operators

comment:10 Changed 9 years ago by abeham

r4663

  • Refactored HeuristicLab.Encodings.BinaryVectorEncoding

comment:11 Changed 9 years ago by abeham

r4664

  • Refactored HeuristicLab.Encodings.IntegerVectorEncoding

comment:12 Changed 9 years ago by mkommend

Refactored Optimization in r4665.

comment:13 Changed 9 years ago by mkommend

Refactored Algorithms.DataAnalysis in r4666.

comment:14 Changed 9 years ago by abeham

r4667

  • Refactored HeuristicLab.Encodings.PermutationEncoding

comment:15 Changed 9 years ago by swagner

r4668

  • HeuristicLab.Common done
  • HeuristicLab.Collections done
  • HeuristicLab.Core done

comment:16 Changed 9 years ago by mkommend

Refactored Algorithms.* and fixed BoolValue in r4669.

comment:17 Changed 9 years ago by mkommend

Refactored Selection and fixed some errors and warnings in r4670.

comment:18 Changed 9 years ago by abeham

r4672

  • Refactored HeuristicLab.Encodings.RealVectorEncoding

comment:19 Changed 9 years ago by swagner

r4671

  • HeuristicLab.Parameters done
  • simplification of cloning code in HeuristicLab.Core

comment:20 Changed 9 years ago by mkommend

Refactored Operators.* in r4673.

comment:21 Changed 9 years ago by gkronber

r4674:

  • Refactored cloning in SymbolicExpressionTreeEncoding

comment:22 Changed 9 years ago by swagner

r4675:

  • HeuristicLab.SequentialEngine done
  • HeuristicLab.Random done

comment:23 Changed 9 years ago by mkommend

Refactored ArtificialAntProblem in r4676.

Last edited 9 years ago by mkommend (previous) (diff)

comment:24 Changed 9 years ago by abeham

r4677

  • Refactored HeuristicLab.Analysis

comment:25 Changed 9 years ago by gkronber

r4678:

  • refactored cloning in DataAnalysis plugins.

comment:26 Changed 9 years ago by swagner

r4679:

  • HeuristicLab.Optimization.Operators done

comment:27 Changed 9 years ago by abeham

r4680

  • Refactored HeuristicLab.Problems.Knapsack

comment:28 Changed 9 years ago by gkronber

r4681:

  • refactored cloning in HeuristicLab.Problems.OneMax

comment:29 Changed 9 years ago by mkommend

Refactored ExternalEvaluation.* and fixed some errors and warnings in r4681.

Last edited 9 years ago by abeham (previous) (diff)

comment:30 Changed 9 years ago by abeham

r4683

  • Refactored HeuristicLab.Problems.TravelingSalesman

comment:31 Changed 9 years ago by mkommend

Fixed warninings and errors in r4684.

comment:32 Changed 9 years ago by abeham

r4685

  • Refactored HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Tests

comment:33 Changed 9 years ago by abeham

r4686

  • Refactored Prins encoding in HeuristicLab.Problems.VehicleRouting
Last edited 9 years ago by abeham (previous) (diff)

comment:34 Changed 9 years ago by mkommend

Refactored VRP Encodings.General and Zhu in r4687.

comment:35 Changed 9 years ago by swagner

r4688:

  • HeuristicLab.Problems.TestFunctions done

comment:36 Changed 9 years ago by abeham

r4689

  • Refactored GVR encoding in HeuristicLab.Problems.VehicleRouting

comment:37 Changed 9 years ago by gkronber

r4690:

  • refactored cloning in HeuristicLab.Problems.VehicleRouting.

comment:38 Changed 9 years ago by mkommend

Worked on VRP project in r4691.

comment:39 Changed 9 years ago by gkronber

r4692:

  • Refactored cloning in HeuristicLab.Problems.VehicleRouting.

comment:40 Changed 9 years ago by mkommend

Fixed last errors in r4693.

comment:41 Changed 9 years ago by abeham

r4696

  • Fixed most of the errors that surfaced in the test cases
  • Removed storable attribute from SymbolicExpressionTreeStringFormatter
  • Modified StorableConstructorTest that the StorableConstructor may also be public (such as in BoolValue)

comment:42 Changed 9 years ago by abeham

r4697

  • Removed and sorted usings

comment:43 Changed 9 years ago by mkommend

Corrected some cloning errors in the Core plugin with r4711.

comment:44 Changed 9 years ago by abeham

r4712

  • initialized list of variable names in storable constructor of variable symbol

comment:45 Changed 9 years ago by abeham

r4713

  • fixed a cloning bug in Engine and Scope

comment:46 Changed 9 years ago by abeham

r4714

  • fixed some bugs in the MinAverageMaxValueAnalyzer

comment:47 Changed 9 years ago by mkommend

Fixed some cloning bugs and removed unnecessary default ctors with r4718.

comment:48 Changed 9 years ago by swagner

Minor code restructuring in r4719.

comment:49 Changed 9 years ago by swagner

Merged cloning refactoring branch back into trunk in r4722.

comment:50 Changed 9 years ago by swagner

Removed cloning refactoring branch again in r4723.

comment:51 Changed 9 years ago by swagner

Fixed cloning bugs in r4725.

comment:52 Changed 9 years ago by swagner

  • Owner changed from gkronber to swagner
  • Status changed from accepted to reviewing
  • Version changed from branch to 3.3.1

comment:53 Changed 9 years ago by abeham

Encountered and fixed a bug in r4737

comment:54 follow-up: Changed 9 years ago by abeham

I tested the trunk (several algorithms on several problems, changing the operator graph, creating an experiment) with the changes from the cloning branch and encountered one more bug:

  • I got a "sequence contains no element" exception when creating a new GA / Artificial Ant configuration and running it (running the sample works)

comment:55 in reply to: ↑ 54 Changed 9 years ago by gkronber

Replying to abeham:

I tested the trunk (several algorithms on several problems, changing the operator graph, creating an experiment) with the changes from the cloning branch and encountered one more bug:

  • I got a "sequence contains no element" exception when creating a new GA / Artificial Ant configuration and running it (running the sample works)

I'm going to fix this asap.

comment:56 Changed 9 years ago by gkronber

Fixed a problem with ADFs in symbolic expression grammars with r4742.

comment:57 Changed 9 years ago by epitzer

Correct cloning of ProgrammableOperator and ensure static initialization in storable constructor (r4762)

comment:58 Changed 9 years ago by epitzer

Prevent cloning empty compiler errors (r4764)

comment:59 Changed 9 years ago by abeham

r4763

  • Corrected event pattern in the projects that I converted to the new cloning pattern

comment:60 Changed 9 years ago by swagner

  • Milestone changed from HeuristicLab x.x.x to HeuristicLab 3.3.2

comment:61 Changed 9 years ago by swagner

  • Status changed from reviewing to assigned

Storable constructors are missing in the HeuristicLab.Persistence plugin.

comment:62 Changed 9 years ago by swagner

  • Status changed from assigned to accepted

comment:63 Changed 9 years ago by swagner

  • Description modified (diff)

comment:64 Changed 9 years ago by swagner

Added storable constructors in the HeuristicLab.Persistence plugin in r4806.

comment:65 Changed 9 years ago by swagner

  • Status changed from accepted to reviewing

comment:66 Changed 9 years ago by swagner

  • Status changed from reviewing to readytorelease

comment:67 Changed 9 years ago by swagner

  • Resolution set to done
  • Status changed from readytorelease to closed
  • Version changed from 3.3.1 to 3.3.2
Note: See TracTickets for help on using tickets.