Esempio n. 1
0
        public void TestMondlandungsSimulation()
        {
            ArrayList kommandos = new ArrayList(10);

            for (int i = 0; i < 10; i++)
            {
                kommandos.Add(new IntGene(1));
            }

            MondlandungsSimulation sim = new MondlandungsSimulation(100, 100, 1, true);

            Assert.AreEqual(10, sim.TestComputeFitness(kommandos));
        }
Esempio n. 2
0
        /// <summary>
        /// Reset the simulation results
        /// </summary>
        /// <param name="sender">Sender Object</param>
        /// <param name="e">Event Object</param>
        private void btn_Zuruecksetzten_Click(object sender, EventArgs e)
        {
            avgLengthList.Clear();
            avgVariationList.Clear();
            avgFitnessList.Clear();
            maxFitnessList.Clear();
            minFitnessList.Clear();
            GenSim  = null;
            MoonSim = null;
            turn    = 0;
            cmb_Selector.Enabled         = true;
            cmb_Recombinator.Enabled     = true;
            txt_ChromosomeLength.Enabled = true;
            txt_Weight.Enabled           = true;
            txt_Height.Enabled           = true;
            txt_Engine.Enabled           = true;
            txt_MutationsRate.Enabled    = true;
            txt_LossRate.Enabled         = true;
            txt_DuplicationsRate.Enabled = true;
            dgv_Population.Rows.Clear();
            btn_Play.Enabled       = false;
            lbl_SpeedValue.Text    = "0";
            lbl_HeightValue.Text   = "0";
            lbl_ThrustValue.Text   = "0";
            lbl_TankValue.Text     = "0";
            chk_AVGFitness.Checked = true;
            chk_maxFitness.Checked = false;
            chk_minFitness.Checked = false;
            chk_Length.Checked     = false;
            chk_Live.Checked       = false;
            zgc_Simulationsgraph.GraphPane.GraphObjList.Clear();
            zgc_Simulationsgraph.AxisChange();
            zgc_Simulationsgraph.Invalidate();
            drawClearBackground();
            GraphPane p = zgc_Simulationsgraph.GraphPane;

            zgc_Simulationsgraph.ZoomOutAll(p);
            p.YAxisList[1].Scale.Max     = 10;
            p.YAxisList[1].Scale.MaxAuto = true;
        }
Esempio n. 3
0
        /// <summary>
        /// Simulationsergebnisse zurücksetzen
        /// </summary>
        /// <param name="sender">aufrufendes Objekt</param>
        /// <param name="e">EreignisObjekt</param>
        private void btn_Zuruecksetzten_Click(object sender, EventArgs e)
        {
            avgLengthList.Clear();
            avgVariationList.Clear();
            avgFitnessList.Clear();
            maxFitnessList.Clear();
            minFitnessList.Clear();
            GenSim  = null;
            MondSim = null;
            turn    = 0;
            cmb_Selektor.Enabled         = true;
            cmb_Rekombinator.Enabled     = true;
            txt_Chromosomlaenge.Enabled  = true;
            txt_Gewicht.Enabled          = true;
            txt_Hoehe.Enabled            = true;
            txt_Treibstoff.Enabled       = true;
            txt_Mutationsrate.Enabled    = true;
            txt_Verlustrate.Enabled      = true;
            txt_Duplikationsrate.Enabled = true;
            dgv_Population.Rows.Clear();
            btn_Abspielen.Enabled       = false;
            lbl_AktGeschwindigkeit.Text = "0";
            lbl_AktHoehe.Text           = "0";
            lbl_AktSchub.Text           = "0";
            lbl_AktTank.Text            = "0";
            chk_AVGFitness.Checked      = true;
            chk_maxFitness.Checked      = false;
            chk_minFitness.Checked      = false;
            chk_Laenge.Checked          = false;
            chk_Live.Checked            = false;
            zgc_Simulationsgraph.GraphPane.GraphObjList.Clear();
            zgc_Simulationsgraph.AxisChange();
            zgc_Simulationsgraph.Invalidate();
            drawClearBackground();
            GraphPane p = zgc_Simulationsgraph.GraphPane;

            zgc_Simulationsgraph.ZoomOutAll(p);
            p.YAxisList[1].Scale.Max     = 10;
            p.YAxisList[1].Scale.MaxAuto = true;
        }
Esempio n. 4
0
 /// <summary>
 /// Simulationsergebnisse zurücksetzen
 /// </summary>
 /// <param name="sender">aufrufendes Objekt</param>
 /// <param name="e">EreignisObjekt</param>
 private void btn_Zuruecksetzten_Click(object sender, EventArgs e)
 {
     avgLengthList.Clear();
     avgVariationList.Clear();
     avgFitnessList.Clear();
     maxFitnessList.Clear();
     minFitnessList.Clear();
     GenSim = null;
     MondSim = null;
     turn = 0;
     cmb_Selektor.Enabled = true;
     cmb_Rekombinator.Enabled = true;
     txt_Chromosomlaenge.Enabled = true;
     txt_Gewicht.Enabled = true;
     txt_Hoehe.Enabled = true;
     txt_Treibstoff.Enabled = true;
     txt_Mutationsrate.Enabled = true;
     txt_Verlustrate.Enabled = true;
     txt_Duplikationsrate.Enabled = true;
     dgv_Population.Rows.Clear();
     btn_Abspielen.Enabled = false;
     lbl_AktGeschwindigkeit.Text = "0";
     lbl_AktHoehe.Text = "0";
     lbl_AktSchub.Text = "0";
     lbl_AktTank.Text = "0";
     chk_AVGFitness.Checked = true;
     chk_maxFitness.Checked = false;
     chk_minFitness.Checked = false;
     chk_Laenge.Checked = false;
     chk_Live.Checked = false;
     zgc_Simulationsgraph.GraphPane.GraphObjList.Clear();
     zgc_Simulationsgraph.AxisChange();
     zgc_Simulationsgraph.Invalidate();
     drawClearBackground();
     GraphPane p = zgc_Simulationsgraph.GraphPane;
     zgc_Simulationsgraph.ZoomOutAll(p);
     p.YAxisList[1].Scale.Max = 10;
     p.YAxisList[1].Scale.MaxAuto = true;
 }
Esempio n. 5
0
        /// <summary>
        /// Simulation starten
        /// </summary>
        /// <param name="sender">aufrufendes Objekt</param>
        /// <param name="e">EreignisObjekt</param>
        private void btn_Simuliere_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            btn_Simuliere.Enabled = false;
            btn_Zuruecksetzen.Enabled = false;
            btn_AutoSim.Enabled = false;
            btn_SimAbbrechen.Focus();
            //erster Durchlauf der Simulation
            if (GenSim == null)
            {
                btn_Abspielen.Enabled = true;
                txt_Chromosomlaenge.Enabled = false;
                cmb_Rekombinator.Enabled = false;
                cmb_Selektor.Enabled = false;
                txt_Gewicht.Enabled = false;
                txt_Hoehe.Enabled = false;
                txt_Treibstoff.Enabled = false;
                txt_Mutationsrate.Enabled = false;
                txt_Verlustrate.Enabled = false;
                txt_Duplikationsrate.Enabled = false;
                IntGene.MaxValue = Convert.ToInt32(txt_Treibstoff.Text);
                MondSim = new MondlandungsSimulation(Convert.ToInt32(txt_Hoehe.Text), Convert.ToInt32(txt_Treibstoff.Text), Convert.ToInt32(txt_Gewicht.Text), tsmi_RaumfahrerGewicht.Checked);
                GenSim = new GeneticSimulation<IntGene>(100, Convert.ToInt32(txt_Chromosomlaenge.Text), MondSim, recombinationProvider, selectionProvider);
                GenSim.SimulationTurn += OnSimulationTurn;
                GenSim.GeneMutationRate = Convert.ToDouble(txt_Mutationsrate.Text);
                GenSim.GeneDuplicationRate = Convert.ToDouble(txt_Duplikationsrate.Text);
                GenSim.GeneDropRate = Convert.ToDouble(txt_Verlustrate.Text);
            }
            //automatisierte Simulation bis Erreichen der Delta-Fitness
            if (sender == btn_AutoSim)
            {
                btn_SimAbbrechen.Focus();
                float fitnessGrenze = Convert.ToSingle(txt_Fitness.Text);
                float startFitness = GenSim.AverageFitness;
                while (fitnessGrenze + startFitness > GenSim.AverageFitness && !simulationAbbrechen)
                {
                    Application.DoEvents();
                    GenSim.RunSimulation();
                }
                simulationAbbrechen = false;
                btn_Simuliere.Enabled = true;
                btn_Zuruecksetzen.Enabled = true;
                btn_AutoSim.Enabled = true;
            }
            //einfache Simulation mit angegebener Rundenzahl
            else
                GenSim.RunSimulation(Convert.ToInt32(txt_Rundenazahl.Text));

            if (!closingApplication)
            {
                dgv_Population.Rows.Clear();

                dgv_Population.Rows.Add(GenSim.PoppulationSize);
                for (int i = 0; i < GenSim.PoppulationSize; i++)
                {
                    dgv_Population.Rows[i].Cells[0].Value = GenSim[i].GeneCount.ToString();
                    dgv_Population.Rows[i].Cells[1].Value = GenSim[i].ToString();
                    dgv_Population.Rows[i].Cells[2].Value = GenSim[i].Fitness.ToString();
                    dgv_Population.Rows[i].Tag = GenSim[i];
                }

                zgc_Simulationsgraph.AxisChange();
                zgc_Simulationsgraph.Invalidate();
                Cursor = Cursors.Default;
                btn_Simuliere.Enabled = true;
                btn_Zuruecksetzen.Enabled = true;
                btn_AutoSim.Enabled = true;
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Reset the simulation results
 /// </summary>
 /// <param name="sender">Sender Object</param>
 /// <param name="e">Event Object</param>
 private void btn_Zuruecksetzten_Click(object sender, EventArgs e)
 {
     avgLengthList.Clear();
     avgVariationList.Clear();
     avgFitnessList.Clear();
     maxFitnessList.Clear();
     minFitnessList.Clear();
     GenSim = null;
     MoonSim = null;
     turn = 0;
     cmb_Selector.Enabled = true;
     cmb_Recombinator.Enabled = true;
     txt_ChromosomeLength.Enabled = true;
     txt_Weight.Enabled = true;
     txt_Height.Enabled = true;
     txt_Engine.Enabled = true;
     txt_MutationsRate.Enabled = true;
     txt_LossRate.Enabled = true;
     txt_DuplicationsRate.Enabled = true;
     dgv_Population.Rows.Clear();
     btn_Play.Enabled = false;
     lbl_SpeedValue.Text = "0";
     lbl_HeightValue.Text = "0";
     lbl_ThrustValue.Text = "0";
     lbl_TankValue.Text = "0";
     chk_AVGFitness.Checked = true;
     chk_maxFitness.Checked = false;
     chk_minFitness.Checked = false;
     chk_Length.Checked = false;
     chk_Live.Checked = false;
     zgc_Simulationsgraph.GraphPane.GraphObjList.Clear();
     zgc_Simulationsgraph.AxisChange();
     zgc_Simulationsgraph.Invalidate();
     drawClearBackground();
     GraphPane p = zgc_Simulationsgraph.GraphPane;
     zgc_Simulationsgraph.ZoomOutAll(p);
     p.YAxisList[1].Scale.Max = 10;
     p.YAxisList[1].Scale.MaxAuto = true;
 }
Esempio n. 7
0
        /// <summary>
        /// Simulation start
        /// </summary>
        /// <param name="sender">Sender Object</param>
        /// <param name="e">Event Object</param>
        private void btn_Simuliere_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            btn_Simulate.Enabled = false;
            btn_Reset.Enabled    = false;
            btn_AutoSim.Enabled  = false;
            btn_SimAbort.Focus();
            //erster Durchlauf der Simulation
            if (GenSim == null)
            {
                btn_Play.Enabled             = true;
                txt_ChromosomeLength.Enabled = false;
                cmb_Recombinator.Enabled     = false;
                cmb_Selector.Enabled         = false;
                txt_Weight.Enabled           = false;
                txt_Height.Enabled           = false;
                txt_Engine.Enabled           = false;
                txt_MutationsRate.Enabled    = false;
                txt_LossRate.Enabled         = false;
                txt_DuplicationsRate.Enabled = false;
                IntGene.MaxValue             = Convert.ToInt32(txt_Engine.Text);
                MoonSim = new MondlandungsSimulation(Convert.ToInt32(txt_Height.Text), Convert.ToInt32(txt_Engine.Text), Convert.ToInt32(txt_Weight.Text), tsmi_SpacemanHeight.Checked);
                GenSim  = new GeneticSimulation <IntGene>(100, Convert.ToInt32(txt_ChromosomeLength.Text), MoonSim, recombinationProvider, selectionProvider);
                GenSim.SimulationTurn     += OnSimulationTurn;
                GenSim.GeneMutationRate    = Convert.ToDouble(txt_MutationsRate.Text);
                GenSim.GeneDuplicationRate = Convert.ToDouble(txt_DuplicationsRate.Text);
                GenSim.GeneDropRate        = Convert.ToDouble(txt_LossRate.Text);
            }
            //automatisierte Simulation bis Erreichen der Delta-Fitness
            if (sender == btn_AutoSim)
            {
                btn_SimAbort.Focus();
                float fitnessGrenze = Convert.ToSingle(txt_Fitness.Text);
                float startFitness  = GenSim.AverageFitness;
                while (fitnessGrenze + startFitness > GenSim.AverageFitness && !simulationAbort)
                {
                    Application.DoEvents();
                    GenSim.RunSimulation();
                }
                simulationAbort      = false;
                btn_Simulate.Enabled = true;
                btn_Reset.Enabled    = true;
                btn_AutoSim.Enabled  = true;
            }
            //einfache Simulation mit angegebener Rundenzahl
            else
            {
                GenSim.RunSimulation(Convert.ToInt32(txt_RoundNumber.Text));
            }

            if (!closingApplication)
            {
                dgv_Population.Rows.Clear();

                dgv_Population.Rows.Add(GenSim.PoppulationSize);
                for (int i = 0; i < GenSim.PoppulationSize; i++)
                {
                    dgv_Population.Rows[i].Cells[0].Value = GenSim[i].GeneCount.ToString();
                    dgv_Population.Rows[i].Cells[1].Value = GenSim[i].ToString();
                    dgv_Population.Rows[i].Cells[2].Value = GenSim[i].Fitness.ToString();
                    dgv_Population.Rows[i].Tag            = GenSim[i];
                }

                zgc_Simulationsgraph.AxisChange();
                zgc_Simulationsgraph.Invalidate();
                Cursor = Cursors.Default;
                btn_Simulate.Enabled = true;
                btn_Reset.Enabled    = true;
                btn_AutoSim.Enabled  = true;
            }
        }
        public void TestMondlandungsSimulation()
        {
            ArrayList kommandos = new ArrayList(10);
            for (int i = 0; i < 10; i++)
                kommandos.Add(new IntGene(1));

            MondlandungsSimulation sim = new MondlandungsSimulation(100, 100, 1, true);
            Assert.AreEqual(10, sim.TestComputeFitness(kommandos));
        }