Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Globals | Related Pages

dsdpprintout.c

00001 #include "dsdp5.h"
00007 static int dsdpprintlevel=0;
00008 static int dsdpprintlevel2=0;
00009 
00010 #undef __FUNCT__  
00011 #define __FUNCT__ "DSDPPrintStats"
00012 int DSDPPrintStatsFile(DSDP dsdp, void *dummy){
00013   
00014   double ppobj,ddobj,pstp,dstp,mu,res,pinfeas,pnorm;
00015   int iter,info;
00016   int printlevel=dsdpprintlevel2;
00017   DSDPTerminationReason reason;
00018 
00019   if(printlevel<=0) return(0);
00020   if(!dsdpoutputfile) return(0);
00021   
00022   info = DSDPStopReason(dsdp,&reason);DSDPCHKERR(info);
00023   info = DSDPGetIts(dsdp,&iter);DSDPCHKERR(info);
00024   
00025   if( (reason!=CONTINUE_ITERATING) || ((iter % printlevel)==0)){
00026     info = DSDPGetDDObjective(dsdp,&ddobj); DSDPCHKERR(info);
00027     info = DSDPGetPPObjective(dsdp,&ppobj); DSDPCHKERR(info);
00028     info = DSDPGetR(dsdp,&res); DSDPCHKERR(info);
00029     info = DSDPGetPInfeasibility(dsdp,&pinfeas); DSDPCHKERR(info);
00030     info = DSDPGetStepLengths(dsdp,&pstp,&dstp); DSDPCHKERR(info);
00031     info = DSDPGetBarrierParameter(dsdp,&mu); DSDPCHKERR(info);
00032     info = DSDPGetPnorm(dsdp,&pnorm); DSDPCHKERR(info);
00033     if (reason==CONTINUE_ITERATING && iter>100 && iter%10!=0) return 0;
00034 
00035     if (iter==0){
00036       fprintf(dsdpoutputfile,"Iter   PP Objective      DD Objective    PInfeas  DInfeas     Mu     StepLength   Pnrm\n");
00037       fprintf(dsdpoutputfile,"--------------------------------------------------------------------------------------\n");
00038     }
00039     fprintf(dsdpoutputfile,"%-3d %16.8e  %16.8e %9.1e %9.1e %9.1e",iter,ppobj,ddobj,pinfeas,res,mu);
00040     fprintf(dsdpoutputfile,"  %4.2f  %4.2f",pstp,dstp);
00041     if (pnorm>1.0e3){
00042       fprintf(dsdpoutputfile,"  %1.0e \n",pnorm);
00043     } else {
00044       fprintf(dsdpoutputfile,"  %5.2f \n",pnorm);
00045     }
00046     
00047   }
00048   return 0;
00049 }
00050 
00051 #undef __FUNCT__  
00052 #define __FUNCT__ "DSDPSetStandardMonitor"
00053 int DSDPSetFileMonitor(DSDP dsdp, int printlevel){
00054   int info;
00055   dsdpprintlevel2=printlevel;
00056   info=DSDPSetMonitor(dsdp,DSDPPrintStatsFile,0); DSDPCHKERR(info);
00057   return (0);
00058 }
00059 
00069 #undef __FUNCT__  
00070 #define __FUNCT__ "DSDPPrintStats"
00071 int DSDPPrintStats(DSDP dsdp, void *dummy){
00072   
00073   double ppobj,ddobj,pstp,dstp,mu,res,pinfeas,pnorm;
00074   int iter,info;
00075   int printlevel=dsdpprintlevel;
00076   DSDPTerminationReason reason;
00077 
00078   if(printlevel<=0) return(0);
00079 
00080   info = DSDPStopReason(dsdp,&reason);DSDPCHKERR(info);
00081   info = DSDPGetIts(dsdp,&iter);DSDPCHKERR(info);
00082 
00083   if( (reason!=CONTINUE_ITERATING) || ((iter % printlevel)==0)){
00084     info = DSDPGetDDObjective(dsdp,&ddobj); DSDPCHKERR(info);
00085     info = DSDPGetPPObjective(dsdp,&ppobj); DSDPCHKERR(info);
00086     info = DSDPGetR(dsdp,&res); DSDPCHKERR(info);
00087     info = DSDPGetPInfeasibility(dsdp,&pinfeas); DSDPCHKERR(info);
00088     info = DSDPGetStepLengths(dsdp,&pstp,&dstp); DSDPCHKERR(info);
00089     info = DSDPGetBarrierParameter(dsdp,&mu); DSDPCHKERR(info);
00090     info = DSDPGetPnorm(dsdp,&pnorm); DSDPCHKERR(info);
00091     if (0 && reason==CONTINUE_ITERATING && iter>100 && iter%10!=0) return 0;
00092 
00093     if (iter==0){
00094       printf("Iter   PP Objective      DD Objective    PInfeas   DInfeas     Nu     StepLength   Pnrm\n")
00095         ;
00096       printf("---------------------------------------------------------------------------------------\n")
00097         ;
00098     }
00099     printf("%-3d %16.8e  %16.8e %9.1e %9.1e %9.1e",iter,ppobj,ddobj,pinfeas,res,mu);
00100     printf("  %4.2f  %4.2f",pstp,dstp);
00101     if (pnorm>1.0e3){
00102       printf("  %1.0e \n",pnorm);
00103     } else {
00104       printf("  %5.2f \n",pnorm);
00105     }
00106     fflush(NULL);
00107   }
00108   return 0;
00109 }
00110 
00151 #undef __FUNCT__  
00152 #define __FUNCT__ "DSDPSetStandardMonitor"
00153 int DSDPSetStandardMonitor(DSDP dsdp, int k){
00154   int info;
00155   info=DSDPSetMonitor(dsdp,DSDPPrintStats,0); DSDPCHKERR(info);
00156   dsdpprintlevel=k;
00157   return (0);
00158 }
00159 

Generated on Sat Oct 15 11:05:39 2005 for DSDP by  doxygen 1.4.2