Example #1
0
        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);
        }
Example #2
0
 public override int progressCB(callbackcode caller)
 {
     //Handle caller code here
     return(0);
 }