public override int callback(callbackcode caller, double[] douinf, int[] intinf, long[] lintinf) { double opttime = 0.0; int itrn; double pobj, dobj, stime; switch (caller) { case callbackcode.begin_intpnt: Console.WriteLine("Starting interior-point optimizer"); break; case callbackcode.intpnt: itrn = intinf[(int)iinfitem.intpnt_iter]; pobj = douinf[(int)dinfitem.intpnt_primal_obj]; dobj = douinf[(int)dinfitem.intpnt_dual_obj]; stime = douinf[(int)dinfitem.intpnt_time]; opttime = douinf[(int)dinfitem.optimizer_time]; Console.WriteLine("Iterations: {0,-3}", itrn); Console.WriteLine(" Elapsed: Time: {0,6:F2}({1:F2})", opttime, stime); Console.WriteLine(" Primal obj.: {0,-18:E6} Dual obj.: {1,018:E6}e", pobj, dobj); break; case callbackcode.end_intpnt: Console.WriteLine("Interior-point optimizer finished."); break; case callbackcode.begin_primal_simplex: Console.WriteLine("Primal simplex optimizer started."); break; case callbackcode.update_primal_simplex: itrn = intinf[(int)iinfitem.sim_primal_iter]; pobj = douinf[(int)dinfitem.sim_obj]; stime = douinf[(int)dinfitem.sim_time]; opttime = douinf[(int)dinfitem.optimizer_time]; Console.WriteLine("Iterations: {0,-3}}", itrn); Console.WriteLine(" Elapsed time: {0,6:F2}({1:F2})", opttime, stime); Console.WriteLine(" Obj.: {0,-18:E6}", pobj); break; case callbackcode.end_primal_simplex: Console.WriteLine("Primal simplex optimizer finished."); break; case callbackcode.begin_dual_simplex: Console.WriteLine("Dual simplex optimizer started."); break; case callbackcode.update_dual_simplex: itrn = intinf[(int)iinfitem.sim_dual_iter]; pobj = douinf[(int)dinfitem.sim_obj]; stime = douinf[(int)dinfitem.sim_time]; opttime = douinf[(int)dinfitem.optimizer_time]; Console.WriteLine("Iterations: {0,-3}}", itrn); Console.WriteLine(" Elapsed time: {0,6:F2}({1:F2})", opttime, stime); Console.WriteLine(" Obj.: {0,-18:E6}", pobj); break; case callbackcode.end_dual_simplex: Console.WriteLine("Dual simplex optimizer finished."); break; case callbackcode.begin_bi: Console.WriteLine("Basis identification started."); break; case callbackcode.end_bi: Console.WriteLine("Basis identification finished."); break; default: break; } if (opttime >= maxtime) { // mosek is spending too much time. Terminate it. return(1); } return(0); }
public override int progressCB(callbackcode caller) { //Handle caller code here return(0); }