void LiftedAlgsConvertor::doWMPTPExactZ(LvrParams* params) { vector<vector<int> > evidenceIntRep; lvrMln = new LvrMLN(); bool mlncontainsGrndClause=false; convertInputMLNToLifted(mln_,domain_,mlncontainsGrndClause); //process the evidence addEvidence(evidenceIntRep); //cout<<"Converted MLN"<<endl; //for(int i=0;i<lvrMln->clauses.size();i++) //lvrMln->clauses[i]->print(); //cout<<endl; vector<vector<int> > queriesIntRep(queries_.size()); vector<string> queryStrings; for(int i=0;i<queries_.size();i++) { for(int j=0;j<queries_[i]->getIntArrRep()->size();j++) { queriesIntRep[i].push_back((*queries_[i]->getIntArrRep())[j]); } string s=queries_[i]->getPredString(domain_); queryStrings.push_back(s); } //LFileDump::dumpQueriesToFile(queriesIntRep); if(queriesIntRep.size() > 0) { //initialize the query updater LvrQueryUpdater::createInstance(queriesIntRep,queryStrings, params->resultFile,&evidenceIntRep); } liftedAlgsHandler = new LiftedAlgsHandler(*lvrMln); liftedAlgsHandler->WMPTPZExact(params); }
void HxIteratePointMatchingUntilConvergence::addEvidenceForNodes( const McDArray<int>& nodesToAssign) { HxSpatialGraph* graph = hxconnection_cast<HxSpatialGraph>(portData); const EdgeVertexAttribute* evidenceAttrib = dynamic_cast<const EdgeVertexAttribute*>(graph->findAttribute( HxSpatialGraph::VERTEX, "UserDefinedMatchings")); McDArray<int> pairNodes(nodesToAssign.size()); pairNodes.fill(-1); for (int j = 0; j < nodesToAssign.size(); j++) { int nodeJLabel = evidenceAttrib->getIntDataAtIdx(nodesToAssign[j]); if (nodeJLabel == 0) { pairNodes[j] = -1; continue; } for (int i = 0; i < graph->getNumVertices(); i++) { if (i != nodesToAssign[j]) { int nodeILabel = evidenceAttrib->getIntDataAtIdx(i); if (nodeILabel == nodeJLabel) { pairNodes[j] = i; } } } } for (int j = 0; j < nodesToAssign.size(); j++) { addEvidence(nodesToAssign[j], pairNodes[j]); } }
void LiftedAlgsConvertor::doWMPTPApproxZ(LvrParams* params) { vector<vector<int> > evidenceIntRep; lvrMln = new LvrMLN(); bool mlncontainsGrndClause=false; convertInputMLNToLifted(mln_,domain_,mlncontainsGrndClause); //process the evidence addEvidence(evidenceIntRep); //cout<<"Converted MLN"<<endl; //for(int i=0;i<lvrMln->clauses.size();i++) //lvrMln->clauses[i]->print(); //cout<<endl; liftedAlgsHandler = new LiftedAlgsHandler(*lvrMln); liftedAlgsHandler->WMPTPZApprox(params); }
void generateEvidence() { // Create world evidence message wire_msgs::WorldEvidence world_evidence; // Set header world_evidence.header.stamp = ros::Time::now(); world_evidence.header.frame_id = "/map"; // Add evidence addEvidence(world_evidence, 2, 2.2, 3, "mug", "red"); // Publish results world_evidence_publisher_.publish(world_evidence); ROS_INFO("Published world evidence with size %d", world_evidence.object_evidence.size()); }
void LiftedAlgsConvertor::doConversion(vector<vector<int> >& queriesIntRep, vector<vector<int> > & evidenceIntRep, vector<string>& queryStrings,bool removeSelfJoins) { lvrMln = new LvrMLN(); bool mlncontainsGrndClause=false; convertInputMLNToLifted(mln_,domain_,mlncontainsGrndClause); //process the evidence addEvidence(evidenceIntRep); //LFileDump::dumpEvidenceToFile(evidenceIntRep); if(evidenceIntRep.size() > 0) { cout<<"Normalizing evidence..."<<endl; lvrMln->preprocessEvidence(evidenceIntRep); //for(int i=0;i<lvrMln->clauses.size();i++) //lvrMln->clauses[i]->print(); //cout<<endl; } else if(mlncontainsGrndClause) { //the input mln has a "+" term, needs to be normalized LNormalizer ln(*lvrMln); ln.normalizeClauses(lvrMln->clauses); for(unsigned int i=0;i<lvrMln->clauses.size();i++) { for(unsigned int j=0;j<lvrMln->clauses[i]->atoms.size();j++) { lvrMln->clauses[i]->atoms[j]->symbol->parentId = lvrMln->clauses[i]->atoms[j]->symbol->id; } } } //cout<<"Converted MLN"<<endl; //for(int i=0;i<lvrMln->clauses.size();i++) //lvrMln->clauses[i]->print(); //cout<<endl; queriesIntRep.resize(queries_.size()); for(int i=0;i<queries_.size();i++) { for(int j=0;j<queries_[i]->getIntArrRep()->size();j++) { queriesIntRep[i].push_back((*queries_[i]->getIntArrRep())[j]); } string s=queries_[i]->getPredString(domain_); queryStrings.push_back(s); } //LFileDump::dumpQueriesToFile(queriesIntRep); if(removeSelfJoins) { bool isSelfJoined = false; for(int i=0;i<lvrMln->clauses.size();i++) { if(lvrMln->clauses[i]->isSelfJoined()) { isSelfJoined = true; break; } } if(isSelfJoined) { cout<<"Preprocessing normalized MLN..."<<endl; processSelfJoins(); } } liftedAlgsHandler = new LiftedAlgsHandler(*lvrMln); //LFileDump::dumpMLNToFile(lvrMln); cout<<"done writing dump files ("<<MLNDUMPFILENAME<<","<<SYMBOLSDUMPFILENAME<<","<< QUERIESDUMPFILENAME<<","<<EVIDENCEDUMPFILENAME<<")"<<endl; //for(int i=0;i<lvrMln->clauses.size();i++) //lvrMln->clauses[i]->print(); }