diff --git a/IO/IniFileParser.cpp b/IO/IniFileParser.cpp index 8ec1785a50fc8a147f4599153fd52318d89fba3e..79c90b0201fbc2b3b34838f06e42dcad4dad4fde 100644 --- a/IO/IniFileParser.cpp +++ b/IO/IniFileParser.cpp @@ -1613,35 +1613,35 @@ bool IniFileParser::ParseStrategyNodeToObject(const TiXmlNode& strategyNode) if(!ParseFfOpts(strategyNode)) { return false; }; - _config->set_dirSubLocal(dynamic_cast<DirectionSubLocalFloorfield*>(_exit_strategy.get())); + _config->set_dirStrategy(dynamic_cast<DirectionSubLocalFloorfield*>(_exit_strategy.get())); break; case 8: _exit_strategy = std::shared_ptr<DirectionStrategy>(new DirectionLocalFloorfield()); if(!ParseFfOpts(strategyNode)) { return false; }; - _config->set_dirLocal(dynamic_cast<DirectionLocalFloorfield*>(_exit_strategy.get())); + _config->set_dirStrategy(dynamic_cast<DirectionLocalFloorfield*>(_exit_strategy.get())); break; case 9: _exit_strategy = std::shared_ptr<DirectionStrategy>(new DirectionSubLocalFloorfield()); if(!ParseFfOpts(strategyNode)) { return false; }; - _config->set_dirSubLocal(dynamic_cast<DirectionSubLocalFloorfield*>(_exit_strategy.get())); + _config->set_dirStrategy(dynamic_cast<DirectionSubLocalFloorfield*>(_exit_strategy.get())); break; case 10: _exit_strategy = std::shared_ptr<DirectionStrategy>(new DirectionSubLocalFloorfieldTrips()); if(!ParseFfOpts(strategyNode)) { return false; }; - _config->set_dirSubLocalTrips(dynamic_cast<DirectionSubLocalFloorfieldTrips*>(_exit_strategy.get())); + _config->set_dirStrategy(dynamic_cast<DirectionSubLocalFloorfieldTrips*>(_exit_strategy.get())); break; case 11: _exit_strategy = std::shared_ptr<DirectionStrategy>(new DirectionSubLocalFloorfieldTripsVoronoi()); if(!ParseFfOpts(strategyNode)) { return false; }; - _config->set_dirSubLocalTripsVoronoi(dynamic_cast<DirectionSubLocalFloorfieldTripsVoronoi*>(_exit_strategy.get())); + _config->set_dirStrategy(dynamic_cast<DirectionSubLocalFloorfieldTripsVoronoi*>(_exit_strategy.get())); break; default: diff --git a/general/Configuration.h b/general/Configuration.h index 8a035321e5eb2dd6a2cdd6de3ece4349e9b3ab92..20e10dbab01a7c36ffb2bca03d3d00937b6f9038 100644 --- a/general/Configuration.h +++ b/general/Configuration.h @@ -44,10 +44,7 @@ //This class provides a data container for all configuration parameters. class AgentsParameters; -class DirectionSubLocalFloorfield; -class DirectionLocalFloorfield; -class DirectionSubLocalFloorfieldTrips; -class DirectionSubLocalFloorfieldTripsVoronoi; +class DirectionStrategy; #ifdef _JPS_AS_A_SERVICE @@ -125,9 +122,9 @@ public: _write_VTK_files = false; _exit_strat = 9; _write_VTK_files_direction = false; - _dirSubLocal = nullptr; - _dirLocal = nullptr; - +// _dirSubLocal = nullptr; +// _dirLocal = nullptr; + _dirStrategy = nullptr; //for random numbers _rdGenerator=RandomNumberGenerator(); @@ -290,19 +287,21 @@ public: int get_exit_strat() const {return _exit_strat;} - void set_dirSubLocal(DirectionSubLocalFloorfield* dir) {_dirSubLocal = dir;} - - void set_dirLocal(DirectionLocalFloorfield* dir) {_dirLocal = dir;} - - void set_dirSubLocalTrips(DirectionSubLocalFloorfieldTrips* dir) {_dirSubLocalTrips = dir;} - - void set_dirSubLocalTripsVoronoi(DirectionSubLocalFloorfieldTripsVoronoi* dir) {_dirSubLocalTripsVoronoi = dir;} - - DirectionSubLocalFloorfield* get_dirSubLocal() const {return _dirSubLocal;} - DirectionLocalFloorfield* get_dirLocal() const {return _dirLocal;} + void set_dirStrategy(DirectionStrategy* dir){_dirStrategy = dir;} + DirectionStrategy* get_dirStrategy(){return _dirStrategy;} +// void set_dirSubLocal(DirectionSubLocalFloorfield* dir) {_dirSubLocal = dir;} +// +// void set_dirLocal(DirectionLocalFloorfield* dir) {_dirLocal = dir;} +// +// void set_dirSubLocalTrips(DirectionSubLocalFloorfieldTrips* dir) {_dirSubLocalTrips = dir;} +// +// void set_dirSubLocalTripsVoronoi(DirectionSubLocalFloorfieldTripsVoronoi* dir) {_dirSubLocalTripsVoronoi = dir;} - DirectionSubLocalFloorfieldTrips* get_dirSubLocalTrips() const {return _dirSubLocalTrips;} - DirectionSubLocalFloorfieldTripsVoronoi* get_dirSubLocalTripsVoronoi() const {return _dirSubLocalTripsVoronoi;} +// DirectionSubLocalFloorfield* get_dirSubLocal() const {return _dirSubLocal;} +// DirectionLocalFloorfield* get_dirLocal() const {return _dirLocal;} +// +// DirectionSubLocalFloorfieldTrips* get_dirSubLocalTrips() const {return _dirSubLocalTrips;} +// DirectionSubLocalFloorfieldTripsVoronoi* get_dirSubLocalTripsVoronoi() const {return _dirSubLocalTripsVoronoi;} const std::string& GetHostname() const { return _hostname; }; @@ -423,10 +422,12 @@ private: int _exit_strat; - DirectionSubLocalFloorfield* _dirSubLocal; - DirectionLocalFloorfield* _dirLocal; - DirectionSubLocalFloorfieldTrips* _dirSubLocalTrips; - DirectionSubLocalFloorfieldTripsVoronoi* _dirSubLocalTripsVoronoi; +// DirectionSubLocalFloorfield* _dirSubLocal; +// DirectionLocalFloorfield* _dirLocal; +// DirectionSubLocalFloorfieldTrips* _dirSubLocalTrips; +// DirectionSubLocalFloorfieldTripsVoronoi* _dirSubLocalTripsVoronoi; + + DirectionStrategy* _dirStrategy; std::string _hostname; std::string _trajectoriesFile; diff --git a/geometry/WaitingArea.cpp b/geometry/WaitingArea.cpp index d0418545aa26c8776886c9f328798d91b3747ea6..aad266c4435190b67f534a02ac404120a43f0f0b 100644 --- a/geometry/WaitingArea.cpp +++ b/geometry/WaitingArea.cpp @@ -133,7 +133,7 @@ void WaitingArea::removePed(int ped) void WaitingArea::startTimer(double time) { startTime = time; - std::cout << "Timer started at " << startTime << std::endl; +// std::cout << "Timer started at " << startTime << std::endl; } bool WaitingArea::isWaiting(double time, const Building* building) @@ -152,16 +152,16 @@ bool WaitingArea::isWaiting(double time, const Building* building) } if ((startTime > 0. ) && (time > startTime + waitingTime) && (trans->IsOpen())){ - std::cout << "Waiting ended" << std::endl; +// std::cout << "Waiting ended" << std::endl; return false; } if ((waitingTime < 0. ) && (trans->IsOpen())){ - std::cout << "Waiting ended" << std::endl; +// std::cout << "Waiting ended" << std::endl; return false; } - std::cout << "Waiting ..." << std::endl; +// std::cout << "Waiting ..." << std::endl; return true; } diff --git a/routing/DirectionStrategy.cpp b/routing/DirectionStrategy.cpp index 5f9a970b9f5f38c6d4f8a7b19f22218714f8b720..75eb85cc3227cbcd6bbd0d22d808d338f166c6e6 100644 --- a/routing/DirectionStrategy.cpp +++ b/routing/DirectionStrategy.cpp @@ -50,6 +50,16 @@ DirectionStrategy::DirectionStrategy() DirectionStrategy::~DirectionStrategy() { } + +double DirectionStrategy::GetDistance2Wall(Pedestrian* ped) const +{ + return -1.; +} +double DirectionStrategy::GetDistance2Target(Pedestrian* ped, int UID) +{ + return -1.; +} + /// 1 Point DirectionMiddlePoint::GetTarget(Room* room, Pedestrian* ped) const { @@ -724,14 +734,12 @@ Point DirectionSubLocalFloorfieldTripsVoronoi::GetTarget(Room* room, Pedestrian* Point p = p1 + p2 + p3; -// UnivFFviaFM* floorfield = _locffviafm.at(ped->GetSubRoomUID()); -// floorfield->getDirectionToUID(ped->GetExitIndex(), ped->GetPos(),p); -// return (p + ped->GetPos()); return p; } else { Point p; UnivFFviaFM* floorfield = _locffviafm.at(ped->GetSubRoomUID()); floorfield->getDirectionToUID(ped->GetExitIndex(), ped->GetPos(),p); + return (p + ped->GetPos()); } diff --git a/routing/DirectionStrategy.h b/routing/DirectionStrategy.h index 9bd031a2af5f103628b79cee88058cf4636fb422..55e27578841381fa1d36a3c8741f21e1a1d91828 100644 --- a/routing/DirectionStrategy.h +++ b/routing/DirectionStrategy.h @@ -49,6 +49,9 @@ public: virtual Point GetTarget(Room* room, Pedestrian* ped) const = 0; + virtual double GetDistance2Wall(Pedestrian* ped) const; + virtual double GetDistance2Target(Pedestrian* ped, int UID); + }; class DirectionMiddlePoint : public DirectionStrategy { diff --git a/routing/ff_router/ffRouter.cpp b/routing/ff_router/ffRouter.cpp index 067c28f0dc292027030ce172b290e751a89b247b..7eccb01a12ab8da9dc7a856c18328940008546ca 100644 --- a/routing/ff_router/ffRouter.cpp +++ b/routing/ff_router/ffRouter.cpp @@ -529,9 +529,9 @@ int FFRouter::FindExit(Pedestrian* p) //double locDistToDoor = _locffviafm[p->GetRoomID()]->getCostToDestination(doorUID, p->GetPos(), _mode); double locDistToDoor = 0.; if (_targetWithinSubroom) { - locDistToDoor = _config->get_dirSubLocal()->GetDistance2Target(p, doorUID); + locDistToDoor = _config->get_dirStrategy()->GetDistance2Target(p, doorUID); } else { - locDistToDoor = _config->get_dirLocal()->GetDistance2Target(p, doorUID); + locDistToDoor = _config->get_dirStrategy()->GetDistance2Target(p, doorUID); } if (locDistToDoor < -J_EPS) { //for old ff: //this can happen, if the point is not reachable and therefore has init val -7 diff --git a/routing/ff_router_trips/UnivFFviaFMTrips.cpp b/routing/ff_router_trips/UnivFFviaFMTrips.cpp index 3374e9c84e20d09a5c717caebd140ab052d7100b..f28c7c13dc956f3e3830a0c2d0aa3dbbe5cb6ccb 100644 --- a/routing/ff_router_trips/UnivFFviaFMTrips.cpp +++ b/routing/ff_router_trips/UnivFFviaFMTrips.cpp @@ -129,9 +129,9 @@ UnivFFviaFMTrips::UnivFFviaFMTrips(Room* roomArg, Configuration* const confArg, // } // } - for (auto& door : tmpDoors){ - std::cout << "uid: " << door.first << " door: " << door.second.toString() << std::endl; - } +// for (auto& door : tmpDoors){ +// std::cout << "uid: " << door.first << " door: " << door.second.toString() << std::endl; +// } //find insidePoint and save it, together with UID Point normalVec = anyDoor.NormalVec(); diff --git a/routing/ff_router_trips/ffRouterTrips.cpp b/routing/ff_router_trips/ffRouterTrips.cpp index 78bd43010bb81a62ae6a8e315878f3f953681287..64c9a2c4dd77fcb2418bb13fde2e851212cff0b6 100644 --- a/routing/ff_router_trips/ffRouterTrips.cpp +++ b/routing/ff_router_trips/ffRouterTrips.cpp @@ -105,9 +105,7 @@ bool FFRouterTrips::Init(Building* building) goalIDs.clear(); //get global field to manage goals (which are not in a subroom) _globalFF = new FloorfieldViaFMTrips(building, 0.25, 0.25, 0.0, false, true); - std::cout << std::endl; for (auto &itrGoal : building->GetAllGoals()) { - std::cout << "Goal ID: " << itrGoal.second->GetId() << std::endl; if(WaitingArea* wa = dynamic_cast<WaitingArea*>(itrGoal.second)) { _globalFF->createMapEntryInLineToGoalID(itrGoal.first, true); }else{ @@ -117,9 +115,6 @@ bool FFRouterTrips::Init(Building* building) } _goalToLineUIDmap = _globalFF->getGoalToLineUIDmap(); - for (auto& tmp : _goalToLineUIDmap) { - std::cout << "Goal: " << tmp.first << " Crossing: " << tmp.second << std::endl; - } _goalToLineUIDmap2 = _globalFF->getGoalToLineUIDmap2(); _goalToLineUIDmap3 = _globalFF->getGoalToLineUIDmap3(); @@ -358,9 +353,9 @@ bool FFRouterTrips::Init(Building* building) // } // matrixfile.close(); - for (auto dist : _distMatrix){ - std::cout << dist.first.first << "->" << dist.first.second << ": " << dist.second << std::endl; - } +// for (auto dist : _distMatrix){ +// std::cout << dist.first.first << "->" << dist.first.second << ": " << dist.second << std::endl; +// } Log->Write("INFO: \tFF Router Init done."); return true; @@ -472,16 +467,10 @@ bool FFRouterTrips::ReInit() int FFRouterTrips::FindExit(Pedestrian* ped) { - std::cout << std::endl; - std::cout << "Ped[" << ped->GetID() << "] in (" << ped->GetRoomID() << ", " << ped->GetSubRoomID() - << "/" << ped->GetSubRoomUID() << "): " << std::endl; - std::cout << "FinalDestination: " << ped->GetFinalDestination() << std::endl; -// std::cout << "ExitLine: " << ped->GetExitLine() << std::endl; - std::cout << "ExitIndex: " << ped->GetExitIndex() << std::endl << std::endl; - - for (auto& goal : _goalToLineUIDmap){ - std::cout << goal.first << " -> " << goal.second << std::endl; - } + +// for (auto& goal : _goalToLineUIDmap){ +// std::cout << goal.first << " -> " << goal.second << std::endl; +// } SubRoom* subroom = _building->GetSubRoomByUID(ped->GetSubRoomUID()); Goal* goal = _building->GetFinalGoal(ped->GetFinalDestination()); @@ -491,8 +480,6 @@ int FFRouterTrips::FindExit(Pedestrian* ped) // Check if current position is already waiting area // yes: set next goal and return findExit(p) if (goal->IsInsideGoal(ped->GetPos())){ - std::cout << "Ped and Goal in same subroom: " << subroom->IsInSubRoom(goal->GetCentroid()) << std::endl; - std::cout << "Ped Final Destination before: " << ped->GetFinalDestination() << std::endl; if(WaitingArea* wa = dynamic_cast<WaitingArea*>(goal)) { //take the current time from the pedestrian double t = Pedestrian::GetGlobalTime(); @@ -503,27 +490,14 @@ int FFRouterTrips::FindExit(Pedestrian* ped) ped->SetFinalDestination(wa->GetNextGoal()); } } - std::cout << "Ped Final Destination after: " << ped->GetFinalDestination() << std::endl; - ret = FindExit1(ped); - }else{ - ret = FindExit1(ped); } - - std::cout << "Ped[" << ped->GetID() << "] in (" << ped->GetRoomID() << ", " << ped->GetSubRoomID() - << "/" << ped->GetSubRoomUID() << "): " << std::endl; - std::cout << "FinalDestination: " << ped->GetFinalDestination() << std::endl; -// std::cout << "ExitLine: " << ped->GetExitLine() << std::endl; - std::cout << "ExitIndex: " << ped->GetExitIndex() << std::endl; - std::cout << "====================================================" << std::endl; - - return ret; + return FindExit1(ped); } int FFRouterTrips::FindExit1(Pedestrian* p) { - std::cout << "------ FindExit1 ------" << std::endl; if (_mode == quickest) { if (p->GetGlobalTime() > _recalc_interval && _building->GetRoom(p->GetRoomID())->GetSubRoom(p->GetSubRoomID())->IsInSubRoom(p) @@ -631,7 +605,7 @@ int FFRouterTrips::FindExit1(Pedestrian* p) // locDistToDoor = _config->get_dirLocal()->GetDistance2Target(p, doorUID); // } // - locDistToDoor = _config->get_dirSubLocalTrips()->GetDistance2Target(p, doorUID); + locDistToDoor = _config->get_dirStrategy()->GetDistance2Target(p, doorUID); if (locDistToDoor < -J_EPS) { //for old ff: //this can happen, if the point is not reachable and therefore has init val -7 @@ -678,7 +652,6 @@ int FFRouterTrips::FindExit1(Pedestrian* p) p->SetExitLine(_CroTrByUID.at(bestDoor)); } - std::cout << "-----------------------" << std::endl << std::endl; return bestDoor; //-1 if no way was found, doorUID of best, if path found }