⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stats_obj.c

📁 CA仿真模型中SLEUTH模型
💻 C
📖 第 1 页 / 共 5 页
字号:
  }  fclose (fp);#elsevoid  stats_ConcatenateAvgFiles (int current_run){  char func[] = "stats_ConcatenateAvgFiles";  char line[MAX_LINE_LEN];  char source_file[MAX_FILENAME_LEN];  char destination_file[MAX_FILENAME_LEN];  char command[2 * MAX_FILENAME_LEN + 20];  FILE *fp;  FILE *source_fp;  int line_count;  sprintf (destination_file, "%savg.log", scen_GetOutputDir ());  sprintf (source_file, "%savg_pe_%u.log", scen_GetOutputDir (), 0);  FILE_OPEN (fp, destination_file, "a");  sprintf (source_file, "%savg_pe_%u.log", scen_GetOutputDir (), current_run);  FILE_OPEN (source_fp, source_file, "r");  line_count = 0;  while (fgets (line, MAX_LINE_LEN, source_fp) != NULL)  {    line_count++;    if (line_count <= 1)      continue;    fputs (line, fp);  }  fclose (source_fp);  fclose (fp);  sprintf (command, "rm %s", source_file);#if 1  system (command);#endif#endif}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/void  stats_Update (int num_growth_pix){  char func[] = "stats_Update";  char filename[MAX_FILENAME_LEN];  int total_pixels;  int road_pixel_count;  int excluded_pixel_count;  total_pixels = mem_GetTotalPixels ();  road_pixel_count = igrid_GetIGridRoadPixelCount (proc_GetCurrentYear ());  excluded_pixel_count = igrid_GetIGridExcludedPixelCount ();  stats_ComputeThisYearStats ();  stats_SetNumGrowthPixels (num_growth_pix);  stats_CalGrowthRate ();  stats_CalPercentUrban (total_pixels, road_pixel_count, excluded_pixel_count);  if (igrid_TestForUrbanYear (proc_GetCurrentYear ()))  {    stats_CalLeesalee ();    sprintf (filename, "%sgrow_%u_%u.log",    scen_GetOutputDir (), proc_GetCurrentRun (), proc_GetCurrentYear ());    stats_Save (filename);  }  if (proc_GetProcessingType () == PREDICTING)  {    sprintf (filename, "%sgrow_%u_%u.log", scen_GetOutputDir (),             proc_GetCurrentRun (), proc_GetCurrentYear ());    stats_Save (filename);  }}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/void  stats_Init (){  static BOOLEAN first_call = TRUE;  stats_ClearStatsValArrays ();  if (first_call)  {    stats_ComputeBaseStats ();    first_call = FALSE;  }}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_CalStdDev (int index){#define SD(val) pow(((val)*(val)/total_monte_carlo),0.5)  int total_monte_carlo;  total_monte_carlo = scen_GetMonteCarloIterations ();  std_dev[index].sng = SD (record.this_year.sng - average[index].sng);  std_dev[index].sdg = SD (record.this_year.sdg - average[index].sdg);  std_dev[index].sdc = SD (record.this_year.sdc - average[index].sdc);  std_dev[index].og = SD (record.this_year.og - average[index].og);  std_dev[index].rt = SD (record.this_year.rt - average[index].rt);  std_dev[index].pop = SD (record.this_year.pop - average[index].pop);  std_dev[index].area = SD (record.this_year.area - average[index].area);  std_dev[index].edges = SD (record.this_year.edges - average[index].edges);  std_dev[index].clusters =    SD (record.this_year.clusters - average[index].clusters);  std_dev[index].xmean = SD (record.this_year.xmean - average[index].xmean);  std_dev[index].ymean = SD (record.this_year.ymean - average[index].ymean);  std_dev[index].rad = SD (record.this_year.rad - average[index].rad);  std_dev[index].slope = SD (record.this_year.slope - average[index].slope);  std_dev[index].mean_cluster_size =    SD (record.this_year.mean_cluster_size - average[index].mean_cluster_size);  std_dev[index].diffusion =    SD (record.this_year.diffusion - average[index].diffusion);  std_dev[index].spread = SD (record.this_year.spread - average[index].spread);  std_dev[index].breed = SD (record.this_year.breed - average[index].breed);  std_dev[index].slope_resistance =    SD (record.this_year.slope_resistance - average[index].slope_resistance);  std_dev[index].road_gravity =    SD (record.this_year.road_gravity - average[index].road_gravity);  std_dev[index].percent_urban =    SD (record.this_year.percent_urban - average[index].percent_urban);  std_dev[index].percent_road =    SD (record.this_year.percent_road - average[index].percent_road);  std_dev[index].growth_rate =    SD (record.this_year.growth_rate - average[index].growth_rate);  std_dev[index].leesalee =    SD (record.this_year.leesalee - average[index].leesalee);  std_dev[index].num_growth_pix =    SD (record.this_year.num_growth_pix - average[index].num_growth_pix);}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_CalAverages (int index){  int total_monte_carlo;  total_monte_carlo = scen_GetMonteCarloIterations ();  average[index].sng = running_total[index].sng / total_monte_carlo;  average[index].sdg = running_total[index].sdg / total_monte_carlo;  average[index].sdc = running_total[index].sdc / total_monte_carlo;  average[index].og = running_total[index].og / total_monte_carlo;  average[index].rt = running_total[index].rt / total_monte_carlo;  average[index].pop = running_total[index].pop / total_monte_carlo;  average[index].area = running_total[index].area / total_monte_carlo;  average[index].edges = running_total[index].edges / total_monte_carlo;  average[index].clusters = running_total[index].clusters / total_monte_carlo;  average[index].xmean = running_total[index].xmean / total_monte_carlo;  average[index].ymean = running_total[index].ymean / total_monte_carlo;  average[index].rad = running_total[index].rad / total_monte_carlo;  average[index].slope = running_total[index].slope / total_monte_carlo;  average[index].mean_cluster_size =    running_total[index].mean_cluster_size / total_monte_carlo;  average[index].diffusion =    running_total[index].diffusion / total_monte_carlo;  average[index].spread = running_total[index].spread / total_monte_carlo;  average[index].breed = running_total[index].breed / total_monte_carlo;  average[index].slope_resistance =    running_total[index].slope_resistance / total_monte_carlo;  average[index].road_gravity =    running_total[index].road_gravity / total_monte_carlo;  average[index].percent_urban =    running_total[index].percent_urban / total_monte_carlo;  average[index].percent_road =    running_total[index].percent_road / total_monte_carlo;  average[index].growth_rate =    running_total[index].growth_rate / total_monte_carlo;  average[index].leesalee = running_total[index].leesalee / total_monte_carlo;  average[index].num_growth_pix =    running_total[index].num_growth_pix / total_monte_carlo;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_UpdateRunningTotal (int index){#ifndef lint  char func[] = "stats_UpdateRunningTotal";#endif  running_total[index].sng += record.this_year.sng;  running_total[index].sdg += record.this_year.sdg;  running_total[index].sdc += record.this_year.sdc;  running_total[index].og += record.this_year.og;  running_total[index].rt += record.this_year.rt;  running_total[index].pop += record.this_year.pop;  running_total[index].area += record.this_year.area;  running_total[index].edges += record.this_year.edges;  running_total[index].clusters += record.this_year.clusters;  running_total[index].xmean += record.this_year.xmean;  running_total[index].ymean += record.this_year.ymean;  running_total[index].rad += record.this_year.rad;  running_total[index].slope += record.this_year.slope;  running_total[index].mean_cluster_size += record.this_year.mean_cluster_size;  running_total[index].diffusion += record.this_year.diffusion;  running_total[index].spread += record.this_year.spread;  running_total[index].breed += record.this_year.breed;  running_total[index].slope_resistance += record.this_year.slope_resistance;  running_total[index].road_gravity += record.this_year.road_gravity;  running_total[index].percent_urban += record.this_year.percent_urban;  running_total[index].percent_road += record.this_year.percent_road;  running_total[index].growth_rate += record.this_year.growth_rate;  running_total[index].leesalee += record.this_year.leesalee;  running_total[index].num_growth_pix += record.this_year.num_growth_pix;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_ClearStatsValArrays (){  char func[] = "stats_ClearStatsValArrays";  int i;  for (i = 0; i < MAX_URBAN_YEARS; i++)  {    memset ((void *) (&running_total[i]), 0, sizeof (stats_val_t));    memset ((void *) (&average[i]), 0, sizeof (stats_val_t));    memset ((void *) (&std_dev[i]), 0, sizeof (stats_val_t));  }  memset ((void *) (&regression), 0, sizeof (stats_info));}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/double  stats_GetLeesalee (){  return record.this_year.leesalee;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_CalLeesalee (){  char func[] = "stats_CalLeesalee";  GRID_P z_ptr;  GRID_P urban_ptr;  z_ptr = pgrid_GetZPtr ();  urban_ptr = igrid_GetUrbanGridPtrByYear (__FILE__, func,                                       __LINE__, proc_GetCurrentYear ());  record.this_year.leesalee = 1.0;  if (proc_GetProcessingType () != PREDICTING)  {    stats_compute_leesalee (z_ptr,                           /* IN     */                            urban_ptr,                       /* IN     */                            &record.this_year.leesalee);   /* OUT    */  }  urban_ptr = igrid_GridRelease (__FILE__, func, __LINE__, urban_ptr);}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_SetNumGrowthPixels (int val){  record.this_year.num_growth_pix = val;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  stats_GetNumGrowthPixels (){  return record.this_year.num_growth_pix;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/void  stats_SetPercentUrban (int val){  record.this_year.percent_urban = val;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_CalPercentUrban (int total_pixels, int road_pixels, int excld_pixels){  record.this_year.percent_urban =    (double) (100.0 * (record.this_year.pop + road_pixels) /              (total_pixels - road_pixels - excld_pixels));}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/double  stats_GetPercentUrban (){  return record.this_year.percent_urban;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/static void  stats_CalGrowthRate (){  record.this_year.growth_rate =    record.this_year.num_growth_pix / record.this_year.pop * 100.0;}/*************************************************************************************************************************************************************** FUNCTION NAME: ** PURPOSE:       ** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:****

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -