예제 #1
0
        internal static Tuple2 <Chromosome> CrossOverChromosomes(Chromosome a, Chromosome b)
        {
            Debug.Assert(a.NetworkType == b.NetworkType);
            Debug.Assert(a.OrderInMixture == b.OrderInMixture);

            Func <Gene, Gene, Tuple2 <Gene> > crossGenes = (x, y) => {
                Debug.Assert(x.Name == y.Name);
                return(QuqeUtil.WithProb(0.5) ? Tuple2.Create(x, y) : Tuple2.Create(y, x));
            };

            return(CrossOver(a.Genes, b.Genes, crossGenes, genes => new Chromosome(a.NetworkType, genes, a.OrderInMixture)));
        }
예제 #2
0
파일: RNN.cs 프로젝트: wintonpc/Quqe
 public static Vec MakeRandomWeights(int size)
 {
     return(QuqeUtil.MakeRandomVector(size, -1, 1));
 }
예제 #3
0
 static Gene MutateGene(Gene g, Run run)
 {
     return(new Gene(g.Name, QuqeUtil.WithProb(run.ProtoRun.MutationRate) ? RandomGeneValue(g.GetProto(run)) : g.Value));
 }