void TatortTendencyParser::readDataFromFile() {


	_userRatings.clear();
	_episodeRatings.clear();
	_detectiveRatings.clear();

	Logger::getInstance()->log("reading map 'userRatings' from file ...", LOG_DEBUG);
	readMapFromFile(&_userRatings, _userRatingsFilename);
	Logger::getInstance()->log("reading map 'episodeRatings' from file ...", LOG_DEBUG);
	readMapFromFile(&_episodeRatings, _episodeRatingsFilename);
	Logger::getInstance()->log("reading map 'detectiveRatings' from file ...", LOG_DEBUG);
	readMapFromFile(&_detectiveRatings, _detectiveRatingsFilename);
	Logger::getInstance()->log("reading maps from file done!", LOG_DEBUG);

}
示例#2
0
void GameState::serverLoop(bool generateMap, size_t player, std::string username) {

	readyClients = 1;
	totalClients = stillConnected = player;

	if (generateMap)
		map = generator->generate(32, 25, 2);
	else
		readMapFromFile();

	mapData = map->printTiles();

	auto pos = findFreePosition();

	compressedMap = "";
	for (int i = 0; i < map->getHeight(); i++)
	{
		std::string line = "";
		for (int j = 0; j < map->getWidth(); j++)
		{
			line += std::to_string( (unsigned int)mapData[i][j] );
		}
		compressedMap += line;
	}

	nameList = new std::set<std::string>();
	endpoint = new ip::tcp::endpoint(ip::tcp::v4(), GameState::tcpPort);
	acceptor = new ip::tcp::acceptor(service, *endpoint);
	socket = new ip::tcp::socket(service);
	sessions = new std::vector<std::shared_ptr<ServerSession>>();
	entities = new std::vector<std::shared_ptr<Entity>>();
	entities->resize(player*3);
	
	{
		auto position = findFreePosition();
		reserveMap(position.x, position.y);
		character = std::make_shared<Entity>(position.x, position.y, this, true, 0);
		(*entities)[0] = character;
	}

	for (auto i = player; i < player * 3; i++)
	{
		auto position = findFreePosition();
		reserveMap(position.x, position.y);
		(*entities)[i] = std::make_shared<Entity>(position.x, position.y, this, false, i);
	}

	sessions->push_back(nullptr);
	registerName(username);

	vacantPlayers = player - 1;
	if (vacantPlayers == 0)
		inGame = true;

	accept();

	service.run();
	std::cout << "Finished server thread" << std::endl;
}
示例#3
0
void GameState::serverLoop(bool generateMap, size_t player, std::string username) {
	yourID = 0;
	readyClients = 1;
	totalClients = stillConnected = player;

	if (generateMap)
		map = generator->generate(32, 25, 2);
	else
		readMapFromFile();

	mapData = map->printTiles();

	auto pos = findFreePosition();

	compressMap();

	nameList = new std::set<std::string>();
	endpoint = new ip::tcp::endpoint(ip::tcp::v4(), GameState::tcpPort);
	acceptor = new ip::tcp::acceptor(service, *endpoint);
	socket = new ip::tcp::socket(service);
	sessions = new std::vector<std::shared_ptr<ServerSession>>();
	entities = new std::vector<std::shared_ptr<Entity>>();
	entities->resize( Universal::ENTITY_COUNT );
	
	{
		auto position = findFreePosition();
		reserveMap(position.x, position.y);
		character = std::make_shared<Entity>(position.x, position.y, this, true, 0);
		(*entities)[0] = character;
	}

	for (auto i = player; i < Universal::ENTITY_COUNT; i++)
	{
		auto position = findFreePosition();
		reserveMap(position.x, position.y);
		(*entities)[i] = std::make_shared<Entity>(position.x, position.y, this, false, i);
	}

	sessions->push_back(nullptr);
	registerName(username);

	vacantPlayers = player - 1;
	if (vacantPlayers == 0)
		inGame = true;

	accept();

	service.run();
}
示例#4
0
void GameEngine::creatMap()
{
    coord.X = 250;
    coord.Y = 300;

    allocateVertexesHexhagonesHarbors();

    readMapFromFile();

    calcCoords();

    setHexagonsTypes();

    setHexagonDices();

    setHarborsTypes();
}
ProbabilisticModelPtr TrainVariableLengthInhomogeneousMarkovChain::create(
                ProbabilisticModelParameters & parameters, double & loglikelihood,
                int & sample_size) const {
        ProbabilisticModelParameterValuePtr alphabetpar =
                        parameters.getMandatoryParameterValue("alphabet");
        ProbabilisticModelParameterValuePtr trainingsetpar =
                        parameters.getMandatoryParameterValue("training_set");
        ProbabilisticModelParameterValuePtr cutpar =
                        parameters.getMandatoryParameterValue("cut");
        ProbabilisticModelParameterValuePtr lengthpar =
                        parameters.getMandatoryParameterValue("length");
        ProbabilisticModelParameterValuePtr phasedpar =
                        parameters.getMandatoryParameterValue("phased");
        ProbabilisticModelParameterValuePtr maxorderpar =
                        parameters.getMandatoryParameterValue("maxorder");
        ProbabilisticModelParameterValuePtr weightspar =
                        parameters.getMandatoryParameterValue("weights");

        if ((alphabetpar == NULL) || (trainingsetpar == NULL)
            || (lengthpar == NULL) || (cutpar == NULL) || (phasedpar == NULL)) {
                std::cerr << help() << std::endl;
                exit(-1);
        }
        std::map <std::string, double> weights;
        if(weightspar != NULL) {
          readMapFromFile(weights, weightspar->getString());
        }


        AlphabetPtr alphabet = AlphabetPtr(new Alphabet());
        alphabet->initializeFromVector(alphabetpar ->getStringVector());
        SequenceEntryList sample_set;
        readSequencesFromFile(sample_set, alphabet, trainingsetpar->getString());
	double cut = cutpar->getDouble();
        int length = lengthpar->getInt();
        std::vector<ContextTreePtr> positional_distribution;
        int phased = phasedpar->getInt();
        positional_distribution.resize(length);
        sample_size = 0;
	int order = maxorderpar->getInt();
        for (int i = 0; i < length; i++) {
	  SequenceEntryList positionalSample;
	  for(int j = 0; j < (int)sample_set.size(); j++)
	  {
	    int nseq = 0;
	    std::string name = sample_set[j]->getName();
	    while(true)
	    {
	      int start = (length) * nseq - order + i;
	      if(start < 0) {
		nseq++;
		continue;
	      }
	      int end = (length) * nseq + i;
	      if(end >= (int)(sample_set[j]->getSequence()).size())
		break;
	      Sequence s;
	      for(int k = start; k <= end; k++)
		s.push_back((sample_set[j]->getSequence())[k]);
	      SequenceEntryPtr entry = SequenceEntryPtr (new SequenceEntry(alphabet));
	      entry->setSequence(s);
	      entry->setName(name);
	      positionalSample.push_back(entry);
	      nseq++;
	    }
	  }






#if 0
                int o = i;
                for (int j = 0; j < (int) sample_set.size(); j++) {
                        if(!phased) {
                          Sequence s;
                          s.resize(o + 1);
                          int l = 0;
                          int m = i - o;
                          if (m < 0)
                            m = 0;

                          while ((m < (int) (sample_set[j]->getSequence()).size()) && (l <= o)) {
                            s[l] = (sample_set[j]->getSequence())[m];
                            l++;
                            m++;
                          }
                          SequenceEntryPtr entry = SequenceEntryPtr (new SequenceEntry(alphabet));
                          entry->setSequence(s);
                          positionalSample.push_back(entry);
                        } else {
                          o = int(log( (double) (sample_set[j]->getSequence()).size()));
                          int m = i - o;
                          if(m < 0) { m = 0; o = o -i;}
                          int last_m = m;
                          while((m < (int) (sample_set[j]->getSequence()).size())) {
                            Sequence s;
                            s.resize(o+1);
                            int l = 0;
                            while ((m < (int) (sample_set[j]->getSequence()).size()) && (l <= o)) {
                              s[l] = (sample_set[j]->getSequence())[m];
                              l++;
                              m++;
                            }
                            m = last_m + length;
                            last_m = m;
                            SequenceEntryPtr entry = SequenceEntryPtr (new SequenceEntry(alphabet));
                            entry->setSequence(s);
                            positionalSample.push_back(entry);
                          }
                        }
                }
#endif
		ContextTreePtr tree = ContextTreePtr(new ContextTree(alphabet));
		tree->initializeCounter(positionalSample, order, 1, weights);
		tree->pruneTreeSmallSampleSize(400);
		tree->pruneTree(cut);
		tree->normalize();
		positional_distribution[i] = tree;
	}
	InhomogeneousMarkovChainPtr model = InhomogeneousMarkovChainPtr(new InhomogeneousMarkovChain());
        model->setPositionSpecificDistribution(positional_distribution);
        model->setAlphabet(alphabet);
        model->phased(phased);
        loglikelihood = 0.0;

        for (int j = 0; j < (int) sample_set.size(); j++) {
          sample_size += (sample_set[j]->getSequence()).size();
          loglikelihood += model->evaluate((sample_set[j]->getSequence()), 0, (sample_set[j]->getSequence()).size()
                                           - 1);
        }
        return model;

}