コード例 #1
0
        public void ProcessChromosome(Single[] fromZeroToOneArray)
        {
            int idx = 0;
            int day, slot;

            matrix.ResetUnforcedAllocationStates();
            enumerator.Reset();
            while (enumerator.GetNext(out day, out slot))
            {
                if (!matrix[day, slot].Forced)
                {
                    Single gene = fromZeroToOneArray[idx++];
                    if (!matrix[day, slot].Processed)
                    {
                        int?chosenItem = matrix[day, slot].Process(gene);
                        foreach (var r in rules)
                        {
                            r.EnforceConstraint(matrix, day, slot);
                        }
                    }
                }
            }
#if DEBUG
            //Test whether just the right number of genes have been provided (and used)
            if (idx != fromZeroToOneArray.Length)
            {
                throw new InvalidOperationException("Chromosome too long");
            }
#endif
        }