private void CalculateCornerPoints(List <MultiResult> result, out double minCost, out double maxCost, out int maxSoftConsViol, out int minSoftConsViol, out int CostBound, out int SoftobjBound) { _model.FixPenaltyToZero(true); if (EpsilonRelaxing == EpsilonOnQuality) { CalcLexMinCostMaxSoft(out minCost, out maxSoftConsViol, out CostBound); CalcLexMaxCostMinSoftcons(out maxCost, out minSoftConsViol, out SoftobjBound); } else //epsilontightening { CalcLexMaxCostMinSoftcons(out maxCost, out minSoftConsViol, out SoftobjBound); CalcLexMinCostMaxSoft(out minCost, out maxSoftConsViol, out CostBound); } Console.WriteLine($"\nBounds:\nCost: {CostBound}\nSoftObj: {SoftobjBound}\n"); Console.WriteLine($"Lexicographical solutions:"); var pareto = GetParetoPoints(result); DisplaySolutions(pareto); DisplayRoomProfiles(pareto); DisplayTimeSlots(pareto); DisplayChanges(pareto); _model.FixPenaltyToZero(false); }