Ejemplo n.º 1
0
        private List <AbstractRobot> GenerateOffsprings(List <AbstractRobot> oldPopulation)
        {
            List <AbstractRobot> newPopulation = new List <AbstractRobot>();

            AbstractRobot prototype = oldPopulation[0];

            for (int ii = 0; ii < oldPopulation.Count; ii++)
            {
                if (newPopulation.Count >= MAX_CHILD_COUNT)
                {
                    break;
                }

                for (int jj = 1; jj < oldPopulation.Count; jj++)
                {
                    if (newPopulation.Count >= MAX_CHILD_COUNT)
                    {
                        break;
                    }
                    AbstractRobot child = prototype.Clone();
                    child.Genotype = MakeCrossover(oldPopulation[ii], oldPopulation[jj]);
                    Mutation.Mutate(child);
                    newPopulation.Add(child);
                }
            }


            return(newPopulation);
        }
Ejemplo n.º 2
0
        private AbstractRobot RobotModelPodleDodoavatele(long SupplierId)
        {
            AbstractRobot vysledek = null;

            switch (SupplierId)
            {
            case 1:
                vysledek = new LynxModel();
                break;

            default: throw new ArgumentException(nameof(SupplierId));
            }
            return(vysledek);
        }
Ejemplo n.º 3
0
        private Genome MakeCrossover(AbstractRobot robot1, AbstractRobot robot2)
        {
            float[] genome1 = robot1.Genotype.GetWeights();
            float[] genome2 = robot2.Genotype.GetWeights();

            float[] newGenome = new float[genome1.Length];

            for (int ii = 0; ii < genome1.Length; ii++)
            {
                newGenome[ii] = ((Random.NextDouble() > 0.5) ? genome1[ii] : genome2[ii]);
            }
            Genome result = new Genome(newGenome);

            return(result);
        }
Ejemplo n.º 4
0
        public RobotKolekce FlotilaDatabaze(bool IsActive = true)
        {
            List <AbstractRobot> vyslednaFlotila = new List <AbstractRobot>();

            using (AlitaDatabase db = VytvorInstanci())
            {
                SetOnline(db);
                var        obsah = db.Agv.Include(x => x.Device).Include(x => x.Platform).Where(x => x.Device.IsActive == IsActive);
                List <Agv> agvs  = obsah.ToList();
                agvs.ForEach(delegate(Agv agv)
                {
                    Device zarizeni     = agv.Device;
                    long supplierId     = zarizeni.Supplier_FK ?? 0;
                    AbstractRobot robot = RobotModelPodleDodoavatele(supplierId);
                    AbstractZarizeni.DeviceToZarizeni(robot, zarizeni);
                    robot.Platform = AbstractRobot.GetPlatformType(agv.Platform);
                    robot.Hostname = agv.NameOnServer;
                    vyslednaFlotila.Add(robot);
                });
                SetOffline(db);
            }
            return(new RobotKolekce(vyslednaFlotila));
        }
Ejemplo n.º 5
0
        public override void Mutate(AbstractRobot robot)
        {
            Genome genes = robot.Genotype;

            PerformBitFlip(genes);
        }
Ejemplo n.º 6
0
 public abstract void Mutate(AbstractRobot robot);