/// <summary>
 /// Creates the Set for constraint with full discrete set.
 /// </summary>
 /// <param name="constraint">The constraint.</param>
 /// <param name="size">The size.</param>
 public static void createConstraintSet_FullDiscreteSets(TransferConstraint constraint, int sizeOfFullDiscreteSet)
 {
     // create Set for constraint with full discrete set
     constraint.DiscreteSet = new Set(GenerationAlgorithmDSAUtil.createSequenceOfNumber(sizeOfFullDiscreteSet), MODULO_DEFAULT);
     // create minimization solutionFactor for appropriate discrete set
     // according the amount of passenger on transfer
     constraint.DiscreteSet.createMinimizationFactor(constraint.Transfer.Passengers);
 }
        /// <summary>
        /// Creates the Set for constraint.
        /// Calculate with frequency of within Modulo Model.
        /// Maximal transfer time is then same for all transfers.
        /// </summary>
        /// <param name="constraint">The constraint.</param>
        /// <param name="size">The size of set.</param>
        public static void createConstraintSet_SameTransferTime(TransferConstraint constraint, int size)
        {
            List <Set> newSets = new List <Set>();
            // get minimal period
            int period = Math.Min((int)constraint.TrainLine1.Period, (int)constraint.TrainLine2.Period);
            // calculate frequency
            int frequency = MODULO_DEFAULT / period;

            // create as many seqence as they are within modulo
            for (int i = 0; i < MODULO_DEFAULT / period; i++)
            {
                // create discrete set {60*i .. 60*i + size -1}
                Set newSet = new Set(GenerationAlgorithmDSAUtil.createSequenceOfNumber(i * period, i * period + size - 1), MODULO_DEFAULT);
                // create minimization solutionFactor for appropriate discrete set
                // according the amount of passenger on transfer
                newSet.createMinimizationFactor(constraint.Transfer.Passengers);
                // add newSet
                newSets.Add(newSet);
            }

            Set     finalSet = null;
            Boolean first    = true;

            // union sets
            foreach (Set set in newSets)
            {
                // if first, just set as a final
                if (first)
                {
                    finalSet = set;
                    first    = false;
                }
                // otherwise unions with next one
                else
                {
                    finalSet.UnionWith(set);
                }
            }
            // finally initialize Set for Constraint
            constraint.DiscreteSet = finalSet;
        }