[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag WFLagGenomeMan
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2006-08-08 09:38:00
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv22226/b7_Scripts/WalkForwardTesting/WalkForwardLag Modified Files: WFLagGenomeManagerWithWeights.cs WFLagGenomeManager.cs Log Message: Adapted to the new IGenomeManager interface: - properties MinValueForGenes and MaxValueForGenes have been replaced by GetMinValueForGenes(int genePosition) and GetMaxValueForGenes(int genePosition) methods. - property CurrentGeneticOptimizer has been deleted from the interface. Index: WFLagGenomeManagerWithWeights.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagGenomeManagerWithWeights.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** WFLagGenomeManagerWithWeights.cs 30 Jul 2006 12:59:07 -0000 1.1 --- WFLagGenomeManagerWithWeights.cs 8 Aug 2006 09:37:57 -0000 1.2 *************** *** 41,57 **** } ! public int MinValueForGenes ! { ! get { return -this.numberOfEligibleTickersForDrivingWeightedPositions; } ! } ! public int MaxValueForGenes ! { ! get { return this.numberOfEligibleTickersForDrivingWeightedPositions - 1; } ! } ! public GeneticOptimizer CurrentGeneticOptimizer ! { ! get{ return this.currentGeneticOptimizer; } ! set{ this.currentGeneticOptimizer = value; } ! } /// <summary> --- 41,57 ---- } ! // public int MinValueForGenes ! // { ! // get { return -this.numberOfEligibleTickersForDrivingWeightedPositions; } ! // } ! // public int MaxValueForGenes ! // { ! // get { return this.numberOfEligibleTickersForDrivingWeightedPositions - 1; } ! // } ! // public GeneticOptimizer CurrentGeneticOptimizer ! // { ! // get{ return this.currentGeneticOptimizer; } ! // set{ this.currentGeneticOptimizer = value; } ! // } /// <summary> *************** *** 92,99 **** --- 92,116 ---- this.minimumPositionWeight = 0.2; // TO DO this value should become a constructor parameter + GenomeManagement.SetRandomGenerator( + QuantProject.ADT.ConstantsProvider.SeedForRandomGenerator + + this.firstOptimizationDate.DayOfYear ); + this.wFLagCandidates = new WFLagCandidates( this.eligibleTickersForDrivingWeightedPositions , this.firstOptimizationDate , this.lastOptimizationDate ); } + public int GetMinValueForGenes( int genePosition ) + { + int minValueForGene = 0; + if ( genePosition % 2 == 0 ) + // gene refers to a weight, not to a ticker + minValueForGene = -this.numberOfEligibleTickersForDrivingWeightedPositions; + return minValueForGene; + } + public int GetMaxValueForGenes( int genePosition ) + { + return this.numberOfEligibleTickersForDrivingWeightedPositions - 1; + } + #region GetFitnessValue private string[] getTickers( WeightedPositions weightedPositions ) *************** *** 299,305 **** private double getAdditionalWeight( int weightRelatedGeneValue ) { ! double midrangeValue = ( this.MinValueForGenes + this.MaxValueForGenes ) / 2; double singleWeightFreeRange = 1 - this.minimumPositionWeight; ! double scaleRange = Convert.ToDouble( this.MaxValueForGenes - this.MinValueForGenes ); double nonScaledAdditionalWeight = Convert.ToDouble( weightRelatedGeneValue ) - midrangeValue; --- 316,324 ---- private double getAdditionalWeight( int weightRelatedGeneValue ) { ! double midrangeValue = ( ! this.GetMinValueForGenes( 0 ) + this.GetMaxValueForGenes( 0 ) ) / 2; double singleWeightFreeRange = 1 - this.minimumPositionWeight; ! double scaleRange = Convert.ToDouble( ! this.GetMinValueForGenes( 0 ) - this.GetMaxValueForGenes( 0 ) ); double nonScaledAdditionalWeight = Convert.ToDouble( weightRelatedGeneValue ) - midrangeValue; *************** *** 444,462 **** #endregion #region GetNewGeneValue ! private int getMinGeneValue( int i ) ! { ! int minGeneValue = 0; ! if ( i % 2 == 0 ) ! minGeneValue = this.MinValueForGenes; ! return minGeneValue; ! } ! private int getMaxGeneValue( int i ) ! { ! return this.MaxValueForGenes; ! } ! public int GetNewGeneValue( Genome genome , int i ) { ! int minGeneValue = this.getMinGeneValue( i ); ! int maxGeneValue = this.getMaxGeneValue( i ); int returnValue = GenomeManagement.RandomGenerator.Next( --- 463,481 ---- #endregion #region GetNewGeneValue ! // private int getMinGeneValue( int genePosition ) ! // { ! // int minGeneValue = 0; ! // if ( genePosition % 2 == 0 ) ! // minGeneValue = -this.numberOfEligibleTickersForDrivingWeightedPositions; ! // return minGeneValue; ! // } ! // private int getMaxGeneValue( int i ) ! // { ! // return this.MaxValueForGenes; ! // } ! public int GetNewGeneValue( Genome genome , int genePosition ) { ! int minGeneValue = this.GetMinValueForGenes( genePosition ); ! int maxGeneValue = this.GetMaxValueForGenes( genePosition ); int returnValue = GenomeManagement.RandomGenerator.Next( Index: WFLagGenomeManager.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagGenomeManager.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WFLagGenomeManager.cs 14 May 2006 21:16:51 -0000 1.2 --- WFLagGenomeManager.cs 8 Aug 2006 09:37:57 -0000 1.3 *************** *** 47,52 **** private int numberOfEligibleTickers; - private GeneticOptimizer currentGeneticOptimizer; - private WFLagCandidates wFLagCandidates; --- 47,50 ---- *************** *** 58,74 **** } } ! public int MinValueForGenes ! { ! get { return -this.numberOfEligibleTickers; } ! } ! public int MaxValueForGenes ! { ! get { return this.numberOfEligibleTickers - 1; } ! } ! public GeneticOptimizer CurrentGeneticOptimizer ! { ! get{ return this.currentGeneticOptimizer; } ! set{ this.currentGeneticOptimizer = value; } ! } public WFLagGenomeManager( --- 56,64 ---- } } ! // public GeneticOptimizer CurrentGeneticOptimizer ! // { ! // get{ return this.currentGeneticOptimizer; } ! // set{ this.currentGeneticOptimizer = value; } ! // } public WFLagGenomeManager( *************** *** 87,91 **** this.numberOfEligibleTickers = eligibleTickers.Rows.Count; ! GenomeManagement.SetRandomGenerator(QuantProject.ADT.ConstantsProvider.SeedForRandomGenerator); this.wFLagCandidates = new WFLagCandidates( this.eligibleTickers , --- 77,83 ---- this.numberOfEligibleTickers = eligibleTickers.Rows.Count; ! GenomeManagement.SetRandomGenerator( ! QuantProject.ADT.ConstantsProvider.SeedForRandomGenerator + ! firstQuoteDate.Date.DayOfYear ); this.wFLagCandidates = new WFLagCandidates( this.eligibleTickers , *************** *** 93,96 **** --- 85,96 ---- } + public int GetMinValueForGenes( int genePosition ) + { + return -this.numberOfEligibleTickers; + } + public int GetMaxValueForGenes( int genePosition ) + { + return this.numberOfEligibleTickers - 1; + } public static string GetTicker( string signedTicker ) *************** *** 267,275 **** // in this implementation only one gene is mutated // the new value has to be different from all the other genes of the genome - int newValueForGene = GenomeManagement.RandomGenerator.Next( - genome.MinValueForGenes , - genome.MaxValueForGenes + 1 ); int genePositionToBeMutated = GenomeManagement.RandomGenerator.Next( genome.Size ); while( GenomeManipulator.IsTickerContainedInGenome( newValueForGene , genome ) ) --- 267,275 ---- // in this implementation only one gene is mutated // the new value has to be different from all the other genes of the genome int genePositionToBeMutated = GenomeManagement.RandomGenerator.Next( genome.Size ); + int newValueForGene = GenomeManagement.RandomGenerator.Next( + genome.GetMinValueForGenes( genePositionToBeMutated ) , + genome.GetMaxValueForGenes( genePositionToBeMutated ) + 1 ); while( GenomeManipulator.IsTickerContainedInGenome( newValueForGene , genome ) ) *************** *** 279,284 **** { newValueForGene = GenomeManagement.RandomGenerator.Next( ! genome.MinValueForGenes , ! genome.MaxValueForGenes + 1 ); } GenomeManagement.MutateOneGene( genome , mutationRate , --- 279,284 ---- { newValueForGene = GenomeManagement.RandomGenerator.Next( ! genome.GetMinValueForGenes( genePositionToBeMutated ) , ! genome.GetMaxValueForGenes( genePositionToBeMutated ) + 1 ); } GenomeManagement.MutateOneGene( genome , mutationRate , *************** *** 350,355 **** // the others already stored in the given genome int returnValue = ! GenomeManagement.RandomGenerator.Next(genome.MinValueForGenes, ! genome.MaxValueForGenes + 1); while( GenomeManipulator.IsTickerContainedInGenome(returnValue, genome) ) --- 350,356 ---- // the others already stored in the given genome int returnValue = ! GenomeManagement.RandomGenerator.Next( ! genome.GetMinValueForGenes( i ) , ! genome.GetMaxValueForGenes( i ) + 1); while( GenomeManipulator.IsTickerContainedInGenome(returnValue, genome) ) *************** *** 357,362 **** // short one for the same ticker { ! returnValue = GenomeManagement.RandomGenerator.Next(genome.MinValueForGenes, ! genome.MaxValueForGenes + 1); } return returnValue; --- 358,364 ---- // short one for the same ticker { ! returnValue = GenomeManagement.RandomGenerator.Next( ! genome.GetMinValueForGenes( i ) , ! genome.GetMaxValueForGenes( i ) + 1 ); } return returnValue; |