/// <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; }