| |||||||||||||
10 best solutions with the MIP solution enumerator Description We take the power generation problem stored in hpw15.mps which seeks to
optimise the operating pattern of a group of electricity generators. We
run the MIP solution enumerator on the problem using the default setup
obtaining the best 10 solutions. The best 10 solutions are stored to a
MIP solution pool. The solutions' objectives and solution values are
printed to screen.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
Data Files MipSolEnum.cs /*********************************************************************** Xpress Optimizer Examples ========================= file MipSolEnum.cs `````````````````` Find the 10 best solutions with the MIP solution enumerator We take the power generation problem stored in hpw15.mps which seeks to optimise the operating pattern of a group of electricity generators. We run the MIP solution enumerator on the problem using the default setup obtaining the best 10 solutions. The best 10 solutions are stored to a MIP solution pool. The solutions' objectives and solution values are printed to screen. (c) 2008-2024 Fair Isaac Corporation ***********************************************************************/ using System; using System.IO; using Optimizer; namespace XPRSExamples { class MipSolEnum { public static void Main(string[] args) { XPRS.Init(); XPRSprob prob = new XPRSprob(); prob.AddMsgHandlerCallback(Console.Out); XPRSmipsolpool msp = new XPRSmipsolpool(); XPRSmipsolenum mse = new XPRSmipsolenum(); prob.MPSFormat = -1; prob.ReadProb("hpw15"); int nCols = prob.Cols; /* Avoid duplicated solutions from heuristics. */ msp.DuplicateSolutionsPolicy = 3; /* Disable dual reductions to prevent dominated solutions from */ /* being presolved away. */ prob.MIPDualReductions = 2; /* Run the enumeration */ int nMaxSols = 10; mse.Minim(prob, msp, XPRSdefaultMipSolEnumHandler.GetDefaultHandlerCallback(), null, ref nMaxSols); /* Print out the solutions found */ int nSols = mse.Solutions; for (int i = 1; i <= nSols; i++) { int[] iSolutionId = new int[1]; double dObj; int nSols2, nReturnedSolIds, solutionIdStatus; mse.GetSolList((int)XPRSattribute.Mse_Metric_MipObject, i, i, iSolutionId, out nReturnedSolIds, out nSols2); mse.GetSolMetric(iSolutionId[0], out solutionIdStatus, (int)XPRSattribute.Mse_Metric_MipObject, out dObj); Console.WriteLine("--------\n" + i + " = " + dObj); for (int j = 0; j < nCols; j++) { double[] dSol = new double[1]; int nValuesReturned; msp.GetSol(iSolutionId[0], out solutionIdStatus, dSol, j, j, out nValuesReturned); Console.WriteLine(j + " = " + dSol[0]); } } XPRS.Free(); } } } | |||||||||||||
© Copyright 2024 Fair Isaac Corporation. |