コード例 #1
0
        void storebest()
        {//todo: przenieś fval do struktur danych, potem linq.max
            int   i;
            float val = -1;

            for (i = 0; i < classicPopulation.Individuals.Length; i++)
            {
                if (this.fval[i] > val)
                {
                    val = this.fval[i];
                    this.bestIndividual = classicPopulation.Individuals[i];
                }
            }
            //todo: pomysł nowotniaka, stop gdy funkcja przystosowania przestanie się poprawiać, bestval
        }
コード例 #2
0
 //todo: zdecyduj się, parametry czy nie
 void update(ClassicIndividual bestIndividual)
 {
     for (int i = 0; i < quantumPopulation.Individuals.Length; i++)
     {
         for (int j = 0; j < quantumPopulation.Individuals[i].Chromosome.Length; j++)
         {
             double sum     = 0;
             int    bestamp = Bin2dec(CopySlice(bestIndividual.Chromosome, j, 2));
             for (int amp = 0; amp < quantumPopulation.Individuals[i].Chromosome[j].Qubits.Length; amp++)
             {
                 if (amp != bestamp)
                 {
                     //todo: no to już poszalałem
                     sum += Math.Pow(quantumPopulation.Individuals[i].Chromosome[j].Qubits[amp] *= 0.99, 2);
                 }
             }
             quantumPopulation.Individuals[i].Chromosome[j].Qubits[bestamp] = Math.Sqrt(1 - sum);
         }
     }
 }