Repräsentiert einen Raumfahrer mit den Eigenschaften Kommandoliste, nächstes Kommando und Gewicht
コード例 #1
0
        public float ComputeFitness(ArrayList genes)
        {
            float      fitness    = 0.0f;
            Raumfahrer pilot      = new Raumfahrer(genes);
            Raumschiff raumschiff = new Raumschiff(pilot, startHoehe, startTreibstoff, raumschiffGewicht, nutzeRaumfahrerGewicht);
            int        schub      = 0;

            while (raumschiff.Hoehe > 0)
            {
                schub = pilot.SteuereRaumschiff(raumschiff);
                raumschiff.SimuliereRunde();
                if (SimulationTurn != null)
                {
                    SimulationTurn(this, new MondlandungsSimulationEventArgs(raumschiff, schub));
                }
            }

            /*if (SimulationTurn != null)
             *  SimulationTurn(this, new MondlandungsSimulationEventArgs(raumschiff, schub));*/
            // Convert.ToInt32(Math.Sqrt((raumschiff.Hoehe * raumschiff.Hoehe))) +

            /*int toleranz = Convert.ToInt32(Math.Sqrt((raumschiff.Geschwindigkeit * raumschiff.Geschwindigkeit))) - 5;
             * if (toleranz < 0)
             *  toleranz = 0;*/

            //fitness = ((1000 + raumschiff.Geschwindigkeit) / 1000.0f * 0.9f) + (raumschiff.Treibstoff / (float) startTreibstoff * 0.1f);
            //fitness = 0.7f / (1.0f + toleranz/10) + (raumschiff.Treibstoff / (float)startTreibstoff * 0.3f);
            //fitness = 0.6f * Convert.ToInt32(Math.Pow(1.01, -toleranz)) + (raumschiff.Treibstoff / (float)startTreibstoff * 0.4f);
            fitness = 0.7f * Convert.ToSingle(Math.Pow(1.02f, raumschiff.Geschwindigkeit)) + (raumschiff.Treibstoff / (float)startTreibstoff * 0.3f);
            //fitness = 1 / (1.0f - raumschiff.Geschwindigkeit/10.0f);

            return(fitness);
        }
コード例 #2
0
 /// <summary>
 /// Konstruktor des Raumschiffs
 /// </summary>
 /// <param name="pilot">Pilot, der das Raumschiff steuern soll</param>
 /// <param name="startHoehe">Die Starthöhe des Raumschiffs</param>
 /// <param name="startTreibstoff">Der Starttreibstoff des Raumschiffs</param>
 /// <param name="startGewicht">Das Startgewicht des Raumschiffs</param>
 /// <param name="nutzeRaumfahrerGewicht">Gibt an, ob das Gewicht des Raumfahrers mit einberechnet werden soll</param>
 public Raumschiff(Raumfahrer pilot, int startHoehe, int startTreibstoff, int startGewicht, bool nutzeRaumfahrerGewicht)
 {
     this.pilot = pilot;
     this.hoehe = startHoehe;
     this.treibstoff = startTreibstoff;
     this.gewicht = startGewicht;
     this.geschwindigkeit = 0;
     this.nutzeRaumfahrerGewicht = nutzeRaumfahrerGewicht;
 }
コード例 #3
0
 /// <summary>
 /// Konstruktor des Raumschiffs
 /// </summary>
 /// <param name="pilot">Pilot, der das Raumschiff steuern soll</param>
 /// <param name="startHoehe">Die Starthöhe des Raumschiffs</param>
 /// <param name="startTreibstoff">Der Starttreibstoff des Raumschiffs</param>
 /// <param name="startGewicht">Das Startgewicht des Raumschiffs</param>
 /// <param name="nutzeRaumfahrerGewicht">Gibt an, ob das Gewicht des Raumfahrers mit einberechnet werden soll</param>
 public Raumschiff(Raumfahrer pilot, int startHoehe, int startTreibstoff, int startGewicht, bool nutzeRaumfahrerGewicht)
 {
     this.pilot                  = pilot;
     this.hoehe                  = startHoehe;
     this.treibstoff             = startTreibstoff;
     this.gewicht                = startGewicht;
     this.geschwindigkeit        = 0;
     this.nutzeRaumfahrerGewicht = nutzeRaumfahrerGewicht;
 }
コード例 #4
0
        // Methode nur für Unit Tests
        public float TestComputeFitness(ArrayList genes)
        {
            float      fitness = 0.0f;
            Raumfahrer pilot   = new Raumfahrer(genes);

            foreach (IntGene gene in genes)
            {
                fitness += gene;
            }
            return(fitness);
        }