Beispiel #1
0
        private BasketListGenome GetBasketGenomeWithFitness(BasketDTO CurrBasket, string p_strUserName, float[] Wights)
        {
            BasketListGenome BasketGenomObject = new BasketListGenome(CurrBasket, (FROM_PRODUCTS / 2));

            if (p_strUserName != null)
            {
                BasketGenomObject.UserName = p_strUserName;
            }

            this.CalcFitness(BasketGenomObject, Wights);

            return(BasketGenomObject);
        }
Beispiel #2
0
        private BasketListGenome CalcFitness(BasketListGenome BasketGenomObject, float[] Wights)
        {
            // init the matrix
            float[][] Matrix = new float[BasketGenomObject.BasketObject.basketItems.Count][];


            for (int i = 0; i < Matrix.Length; i++)
            {
                Matrix[i] = new float[enumFitnessSize];
            }

            BasketGenomObject.MakeBasketMatrix(ref Matrix);
            float[] Params = BasketGenomObject.GetBasketNormalizedParams(Matrix);

            float Grade = BasketGenomObject.FitnessFunction(Params, Wights);

            return(BasketGenomObject);
        }
Beispiel #3
0
        private Population GenerateNewPopulation(string p_strUserName, float[] Wights, List <BasketDTO> listBaskets)
        {
            List <BasketListGenome> Generation = new List <BasketListGenome>();

            foreach (BasketDTO CurrBasket in listBaskets)
            {
                BasketListGenome BasketGenomObject = this.GetBasketGenomeWithFitness(CurrBasket, p_strUserName, Wights);
                Generation.Add(BasketGenomObject);
            }

            Population.IdialBaskets = null;

            return(new Population(
                       Generation,
                       NUMBER_OF_BASKETS,
                       FROM_PRODUCTS / 2,
                       NUMBER_OF_BASKETS,
                       NUMBER_OF_BASKETS,
                       MUTATION_PRECENT,
                       MIN_FITNESS,
                       MAX_FITNESS,
                       Wights));
        }