/// <summary> /// Method for value comparison of maxCoefficients /// </summary> /// <returns> /// 0: if they are equal /// 1: if first > second /// -1: if second > first /// </returns> /// <exception cref="NullReferenceException"></exception> public static int Compare(MaxCoefficient first, MaxCoefficient second) { if (ReferenceEquals(first, null)) if (ReferenceEquals(second, null)) return 0; else throw new NullReferenceException(); return first.CompareTo(second); }
/// <summary> /// Method for value comparison of maxCoefficient and fraction /// </summary> /// <returns> /// 0: if they are equal /// 1: if fraction > maxCoefficient /// -1: if maxCoefficient > fraction /// </returns> /// <exception cref="NullReferenceException"></exception> public static int Compare(Fraction fraction, MaxCoefficient maxCoefficient) { return (maxCoefficient.CompareTo(fraction) * -1); }
/// <summary> /// Method for value comparison of maxCoefficient and fraction /// </summary> /// <returns> /// 0: if they are equal /// 1: if maxCoefficient > fraction /// -1: if fraction > maxCoefficient /// </returns> /// <exception cref="NullReferenceException"></exception> public static int Compare(MaxCoefficient maxCoefficient, Fraction fraction) { return maxCoefficient.CompareTo(fraction); }
/// <summary> /// Method for value comparison of maxCoefficient and number /// </summary> /// <returns> /// 0: if they are equal /// 1: if number > maxCoefficient /// -1: if maxCoefficient > number /// </returns> /// <exception cref="NullReferenceException"></exception> public static int Compare(int number, MaxCoefficient maxCoefficient) { return (maxCoefficient.CompareTo(number) * -1); }
/// <summary> /// Method for value comparison of maxCoefficient and number /// </summary> /// <returns> /// 0: if they are equal /// 1: if maxCoefficient > number /// -1: if number > maxCoefficient /// </returns> /// <exception cref="NullReferenceException"></exception> public static int Compare(MaxCoefficient maxCoefficient, int number) { return maxCoefficient.CompareTo(number); }
/// <summary> /// Returns index of solving cell(or -1 if table has no positive rating) /// </summary> /// <param name="table">Table with calculated ratings</param> /// <param name="solvingRowIndex">Index of solving row</param> private int GetSolvingCellIndex(SimplexTable table, int solvingRowIndex) { if (solvingRowIndex < 0) return -1; var minRatioIndex = -1; var minRatio = new MaxCoefficient(); for (var i = 0; i < table.Variables.Count; i++) { var matrixElement = table.GetMatrixElement(solvingRowIndex, i); if (matrixElement >= 0) continue; var rating = table.Ratings[i]; var currRatio = new MaxCoefficient(rating); currRatio.Multiply(1 / matrixElement); if (currRatio.CompareTo(minRatio) != -1 && minRatioIndex != -1) continue; minRatioIndex = i; minRatio = currRatio; } return minRatioIndex; }