Esempio n. 1
0
int
main(int argc, char ** argv)
{
  INIT_AGENTS;
  double new_price = 0;
  ulong t;
  for(t = 0; t < number_trials; ++t)
  {
    ulong i; 
    Agent * agent;
    for(agent = agents, i = number_local_agents; i--; ++agent)
      agent->refresh(agent);

    double min_whole_ask, max_whole_bid;
    get_extreme_value(&min_whole_ask, &max_whole_bid, agents, number_local_agents);

    if(myid == 0)
      if(max_whole_bid > min_whole_ask)
      {
        new_price = (min_whole_ask + max_whole_bid) / 2;
        printf("%ld %lf\n", t, new_price);
      }

    MPI_Bcast(&new_price, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);

    for(; new_price; new_price = 0)
      for(agent = agents, i = number_local_agents; i--; ++agent)
        agent->set(agent, new_price);
  }

  MPI_Finalize();
  return 0;
}
int
main(int argc, char ** argv)
{
  int myid, numprocs;
  
  int n1, n2;
  n1 = atoi(argv[1]);
  n2 = atoi(argv[2]);
  
  if (n1 > 0){ ALL_N_AGENTS=n1; }
  if (n2 > 0){ N_TRIAL=n2; }
  Agent * agents = init(&argc, argv, &myid, &numprocs);

  if(myid == 0){
   printf("%d %d %d\n", ALL_N_AGENTS, N_AGENTS, N_TRIAL);
  }
  
  double new_price = 0;
  int t;
  for(t = 0; t < N_TRIAL; ++t)  {
    int i; 
    Agent * agent;
    
    for(agent = agents, i = N_AGENTS; i--; ++agent)
      agent->refresh(agent);

    double g_min_ask, g_max_bid;
    get_extreme_value(&g_min_ask, &g_max_bid, agents);

    if(myid == 0)
      if(g_max_bid > g_min_ask)
      {
        new_price = (g_min_ask + g_max_bid) / 2;
        printf("%d %lf\n", t, new_price);
//        fflush(stdout);
      }

    MPI_Bcast(&new_price, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);

    for(;new_price; new_price = 0)
      for(agent = agents, i = N_AGENTS; i--; ++agent)
        agent->set(agent, new_price);
  }

  MPI_Finalize();
  return 0;
}