LCOV - code coverage report
Current view: top level - src/microsim/traffic_lights - MSSOTLPhasePolicy.cpp (source / functions) Hit Total Coverage
Test: lcov.info Lines: 24 31 77.4 %
Date: 2024-05-19 15:37:39 Functions: 4 5 80.0 %

          Line data    Source code
       1             : /****************************************************************************/
       2             : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3             : // Copyright (C) 2010-2024 German Aerospace Center (DLR) and others.
       4             : // This program and the accompanying materials are made available under the
       5             : // terms of the Eclipse Public License 2.0 which is available at
       6             : // https://www.eclipse.org/legal/epl-2.0/
       7             : // This Source Code may also be made available under the following Secondary
       8             : // Licenses when the conditions for such availability set forth in the Eclipse
       9             : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10             : // or later which is available at
      11             : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12             : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13             : /****************************************************************************/
      14             : /// @file    MSSOTLPhasePolicy.cpp
      15             : /// @author  Gianfilippo Slager
      16             : /// @author  Federico Caselli
      17             : /// @date    Feb 2010
      18             : ///
      19             : // The class for SOTL Phase logics
      20             : /****************************************************************************/
      21             : 
      22             : #include "MSSOTLPhasePolicy.h"
      23             : #include <cmath>
      24             : #include "utils/common/RandHelper.h"
      25             : 
      26             : 
      27          32 : MSSOTLPhasePolicy::MSSOTLPhasePolicy(const Parameterised::Map& parameters) :
      28          64 :     MSSOTLPolicy("Phase", parameters) {
      29          32 :     init();
      30          32 : }
      31             : 
      32           0 : MSSOTLPhasePolicy::MSSOTLPhasePolicy(MSSOTLPolicyDesirability* desirabilityAlgorithm) :
      33           0 :     MSSOTLPolicy("Phase", desirabilityAlgorithm) {
      34           0 :     getDesirabilityAlgorithm()->setKeyPrefix("PHASE");
      35           0 :     init();
      36           0 : }
      37             : 
      38          32 : MSSOTLPhasePolicy::MSSOTLPhasePolicy(MSSOTLPolicyDesirability* desirabilityAlgorithm,
      39          32 :                                      const Parameterised::Map& parameters) :
      40          64 :     MSSOTLPolicy("Phase", desirabilityAlgorithm, parameters) {
      41          32 :     getDesirabilityAlgorithm()->setKeyPrefix("PHASE");
      42          32 :     init();
      43          32 : }
      44             : 
      45       29716 : bool MSSOTLPhasePolicy::canRelease(SUMOTime elapsed, bool thresholdPassed, bool pushButtonPressed,
      46             :                                    const MSPhaseDefinition* stage, int vehicleCount) {
      47             : //  DBG(
      48       29716 :     std::ostringstream str;
      49       89148 :     str << "MSSOTLPhasePolicy::canRelease threshold " << thresholdPassed << " vehicle " << vehicleCount << " elapsed " << elapsed << " min " << stage->minDuration;
      50       29716 :     WRITE_MESSAGE(str.str());
      51             : //          );
      52       29716 :     if (elapsed >= stage->minDuration) {
      53       16604 :         if (pushButtonLogic(elapsed, pushButtonPressed, stage)) {
      54             :             return true;
      55             :         }
      56       16604 :         if (thresholdPassed) {
      57             :             return thresholdPassed;
      58       15412 :         } else if (m_useVehicleTypesWeights) {
      59           0 :             if (sigmoidLogic(elapsed, stage, vehicleCount)) {
      60           0 :                 return true;
      61             :             }
      62             :         }
      63             :     }
      64             :     return false;
      65       29716 : }
      66             : 
      67          64 : void MSSOTLPhasePolicy::init() {
      68          64 :     PushButtonLogic::init("MSSOTLPhasePolicy", this);
      69          64 :     SigmoidLogic::init("MSSOTLPhasePolicy", this);
      70         192 :     m_useVehicleTypesWeights = getParameter("USE_VEHICLE_TYPES_WEIGHTS", "0") == "1";
      71          64 : }

Generated by: LCOV version 1.14