/**
   * To test the shortest path finding.
   */
  void foo ( void )
  {

    std::cout << std::endl;
    std::vector<osmium::unsigned_object_id_type> pathD = hasDijkstraPath ( 2969934868, 1348670117 );
    std::cout << std::endl;
    std::copy ( pathD.begin(), pathD.end(),
                std::ostream_iterator<osmium::unsigned_object_id_type> ( std::cout, "  -D-> " ) );

    std::vector<osmium::unsigned_object_id_type> pathBF = hasBellmanFordPath ( 2969934868, 1348670117 );
    std::cout << std::endl;
    std::copy ( pathBF.begin(), pathBF.end(),
                std::ostream_iterator<osmium::unsigned_object_id_type> ( std::cout, " -BF-> " ) );

    std::cout << std::endl;
    pathD = hasDijkstraPath ( 2969934868, 1402222861 );
    std::copy ( pathD.begin(), pathD.end(),
                std::ostream_iterator<osmium::unsigned_object_id_type> ( std::cout, "  -D-> " ) );

    std::cout << std::endl;
    pathBF = hasBellmanFordPath ( 2969934868, 1402222861 );
    std::cout << std::endl;
    std::copy ( pathBF.begin(), pathBF.end(),
                std::ostream_iterator<osmium::unsigned_object_id_type> ( std::cout, " -BF-> " ) );

  }
Ejemplo n.º 2
0
void justine::sampleclient::MyShmClient::start ( boost::asio::io_service& io_service, const char * port )
{

#ifdef DEBUG
  foo();
#endif

  boost::asio::ip::tcp::resolver resolver ( io_service );
  boost::asio::ip::tcp::resolver::query query ( boost::asio::ip::tcp::v4(), "localhost", port );
  boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve ( query );

  boost::asio::ip::tcp::socket socket ( io_service );
  boost::asio::connect ( socket, iterator );

  int id = init ( socket );

  pos ( socket, id );

  unsigned int g {0u};
  unsigned int f {0u};
  unsigned int t {0u};
  unsigned int s {0u};

  std::vector<Gangster> gngstrs;

  for ( ;; )
    {
      std::this_thread::sleep_for ( std::chrono::milliseconds ( 200 ) );

      car ( socket, id, &f, &t, &s );

      gngstrs = gangsters ( socket, id, t );

      if ( gngstrs.size() > 0 )
        g = gngstrs[0].to;
      else
        g = 0;
      if ( g > 0 )
        {

          std::vector<osmium::unsigned_object_id_type> path = hasDijkstraPath ( t, g );

          if ( path.size() > 1 )
            {

              std::copy ( path.begin(), path.end(),
                          std::ostream_iterator<osmium::unsigned_object_id_type> ( std::cout, " -> " ) );

              route ( socket, id, path );
            }
        }
    }
}
void justine::sampleclient::MyShmClient::start10 ( boost::asio::io_service& io_service, const char * port )
{

#ifdef DEBUG
  foo();
#endif

  boost::asio::ip::tcp::resolver resolver ( io_service );
  boost::asio::ip::tcp::resolver::query query ( boost::asio::ip::tcp::v4(), "localhost", port );
  boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve ( query );

  boost::asio::ip::tcp::socket socket ( io_service );
  boost::asio::connect ( socket, iterator );

  std::vector<Cop> cops = initcops ( socket );

  bool pursuit {false};
  unsigned int g {0u};
  unsigned int f {0u};
  unsigned int t {0u};
  unsigned int s {0u};

  std::vector<Gangster> gngstrs;

  for ( ;; )
    {
      std::this_thread::sleep_for ( std::chrono::milliseconds ( 200 ) );

      for ( auto cop:cops )
        {
          car ( socket, cop, &f, &t, &s );
          if ( true )
		  {
          gngstrs = gangsters ( socket, cop, t );

          if ( gngstrs.size() > 0 )
            g = gngstrs[0].to;
          else
            g = 0;

          if ( g > 0 )
            {
                if(dst(f, gngstrs[0].to) == 0)
		  continue;
		std::vector<osmium::unsigned_object_id_type> path = hasDijkstraPathMy ( t, gngstrs );
		if ( path.size() > 1 && pursuit==false )
		{
                  route ( socket, cop, path );
                  pursuit = true;
                }
            }
        }
        if(pursuit)
		{
		  std::vector<osmium::unsigned_object_id_type> pathPur = hasDijkstraPath ( t, gngstrs[0].to );
		  if ( distanceMy(pathPur) < 150 || distanceMy(pathPur) > 1000 ) 
		  {
		      route ( socket, cop, pathPur );
		  } 
		  else
		  {
		      std::vector<osmium::unsigned_object_id_type> pathPur2 = hasDijkstraPath ( t, gngstrs[0].from );
			  if ( pathPur2.size() > 0 && distanceMy(pathPur2) < distanceMy(pathPur) )
			  {
		          route ( socket, cop, pathPur2 );
			  }
		  }
	}
	if ( t == g )
	  pursuit = false;
       }
    }
}
Ejemplo n.º 4
0
void justine::sampleclient::MyShmClient::start10 ( boost::asio::io_service& io_service, const char * port )
{

#ifdef DEBUG
  foo();
#endif

  boost::asio::ip::tcp::resolver resolver ( io_service );
  boost::asio::ip::tcp::resolver::query query ( boost::asio::ip::tcp::v4(), "localhost", port );
  boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve ( query );

  boost::asio::ip::tcp::socket socket ( io_service );
  boost::asio::connect ( socket, iterator );

  std::vector<Cop> cops = initcops ( socket );

  unsigned int g {0u};
  unsigned int f {0u};
  unsigned int t {0u};
  unsigned int s {0u};

  std::vector<Gangster> gngstrs;
  
  int groupNum = 5, gngIt = 0;
  unsigned copGroups[groupNum];

    for ( ;; )
    {
      std::this_thread::sleep_for ( std::chrono::milliseconds ( 200 ) );

      for (size_t copIt = 0; copIt < cops.size(); ++copIt)
      {
          car ( socket, cops[copIt], &f, &t, &s );
          if(copIt < groupNum)
          {
              gngstrs = gangsters ( socket, cops[copIt], t );
              if(gngstrs.size() > 0)
		copGroups[copIt] = gngstrs[0].to;
          }
          if(copIt != 0)
          {
              for(int j = 0; j < copIt; ++j)
              {
                  if(copGroups[j] == copGroups[copIt])
                  {
                      ++gngIt;
                      copGroups[copIt] = gngstrs[gngIt].to;
                  }
              } 
          }
          if(copGroups[copIt % groupNum] > 0)
	  {

              std::vector<osmium::unsigned_object_id_type> path = hasDijkstraPath ( t, copGroups[copIt % groupNum] );

              if ( path.size() > 1 )
                {

                  std::copy ( path.begin(), path.end(),
                              std::ostream_iterator<osmium::unsigned_object_id_type> ( std::cout, " -> " ) );

                  route ( socket, cops[copIt], path );
                }
            }
        }
    }
}