Пример #1
0
double spatialFunc(Point *p1, Point *p2,
		Candidate *c1, Candidate *c2, ASPath path) {
	double w;
	double routelen, directlen;

	routelen = ASPathGetCost(path);
	directlen = dist(&c1->loc, &c2->loc);
	if(routelen < directlen) {
		return transProb(p1, p2, directlen);
	}

	/* WARNING: Here I use a approximation(use Euclidean distance from
	 * candidate point to node rather than the path distance) */
	w = routelen
		- dist(&c1->loc, &c1->prevNode->loc)
		- dist(&c2->loc, &c2->nextNode->loc);

	if(w <= 0) { return -20; }
	else { return transProb(p1, p2, w); }
}
Пример #2
0
void Hmm::loadProbs(string name)
{
  string s = name+".trans";
  ifstream transProb(s.c_str());
  string initState;
  transProb >> initState;
  _initState = _str2id.getId(initState);
  _transition.load(transProb, _str2id);

  s = name+".emit";
  ifstream emitProb(s.c_str());
  _emission.load(emitProb, _str2id);
}
Пример #3
0
void Hmm::saveProbs(string name)
{
  if (name=="") {
    cerr << "transition probabilities:" << endl;
    _transition.save(cerr, _str2id);
    cerr << "---------------------------------" << endl;
    cerr << "emission probabilities:" << endl;
    _emission.save(cerr, _str2id);
    cerr << "---------------------------------" << endl;
  }
  else {
    string s = name+".trans";
    ofstream transProb(s.c_str());
    transProb << _str2id.getStr(_initState) << endl;
    _transition.save(transProb, _str2id);

    s = name+".emit";
    ofstream emitProb(s.c_str());
    _emission.save(emitProb, _str2id);
  }
}