Eclipse SUMO - Simulation of Urban MObility
MSSOTLPolicy5DStimulus.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2013-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
16 // The class for Swarm-based low-level policy
17 /****************************************************************************/
18 
19 #include "MSSOTLPolicy5DStimulus.h"
20 
22  const std::map<std::string, std::string>& parameters) :
23  MSSOTLPolicyDesirability(keyPrefix, parameters) {
24 
25  stimCoxDVal = 1;
26  stimOffsetInDVal = 1;
30  stimDivInDVal = 1;
31  stimDivOutDVal = 1;
34  stimCoxExpInDVal = 0;
38 }
39 
40 double MSSOTLPolicy5DStimulus::computeDesirability(double vehInMeasure, double vehOutMeasure, double vehInDispersionMeasure, double vehOutDispersionMeasure) {
41  DBG(
42  std::ostringstream str;
43  str << "cox=" << getStimCox() << ", cox_exp_in=" << getStimCoxExpIn() << ", cox_exp_out=" << getStimCoxExpOut()
44  << ", off_in=" << getStimOffsetIn() << ", off_out=" << getStimOffsetOut() << ", div_in=" << getStimDivisorIn() << ", div_out=" << getStimDivisorOut(); WRITE_MESSAGE(str.str());)
45 
46  // it seems to be not enough, a strange segmentation fault appears...
47  // if((getStimCoxExpIn()!=0.0 && getStimDivisorIn()==0.0)||(getStimCoxExpOut()!=0.0 && getStimDivisorOut()==0.0)){
48  if (getStimDivisorIn() == 0 || getStimDivisorOut() == 0) {
49  std::ostringstream errorMessage;
50  errorMessage << "INCORRECT VALUES" << "\nStimCoxExpIn="
51  << getStimCoxExpIn() << ", StimDivisorIn=" << getStimDivisorIn()
52  << ", StimCoxExpOut=" << getStimCoxExpOut()
53  << ", StimDivisorOut=" << getStimDivisorOut();
54  WRITE_ERROR(errorMessage.str());
55  assert(-1);
56  return -1;
57  } else {
58  double stimulus = getStimCox()
59  * exp(
61  * pow(vehInMeasure - getStimOffsetIn(), 2)
64  * pow(vehOutMeasure - getStimOffsetOut(), 2)
67  * pow(vehInDispersionMeasure - getStimOffsetDispersionIn(), 2)
70  * pow(vehOutDispersionMeasure - getStimOffsetDispersionOut(), 2)
72 
73  );
74  return stimulus;
75  }
76 }
77 
78 double MSSOTLPolicy5DStimulus::computeDesirability(double vehInMeasure, double vehOutMeasure) {
79 
80  return computeDesirability(vehInMeasure, vehOutMeasure, 0, 0);
81 }
83  std::ostringstream _str;
84  _str << " stimCox " << getStimCox()
85  << " StimOffsetIn " << getStimOffsetIn()
86  << " StimOffsetOut " << getStimOffsetOut()
87  << " StimDivisorIn " << getStimDivisorIn()
88  << " StimDivisorOut " << getStimDivisorOut()
89  << " StimCoxExpIn " << getStimCoxExpIn()
90  << " StimCoxExpOut " << getStimCoxExpOut()
91  << " .";
92  return _str.str();
93 }
MSSOTLPolicy5DStimulus::computeDesirability
virtual double computeDesirability(double vehInMeasure, double vehOutMeasure)
Computes stimulus function stimulus = cox * exp(-pow(pheroIn - offsetIn, 2)/divisor -pow(pheroOut - o...
Definition: MSSOTLPolicy5DStimulus.cpp:78
MSSOTLPolicy5DStimulus::getStimDivisorIn
double getStimDivisorIn()
Definition: MSSOTLPolicy5DStimulus.h:91
DBG
#define DBG(X)
Definition: SwarmDebug.h:27
MSSOTLPolicy5DStimulus::getStimDivisorDispersionOut
double getStimDivisorDispersionOut()
Definition: MSSOTLPolicy5DStimulus.h:117
MSSOTLPolicy5DStimulus::getStimDivisorOut
double getStimDivisorOut()
Definition: MSSOTLPolicy5DStimulus.h:100
MSSOTLPolicy5DStimulus::stimCoxExpDispersionOutDVal
double stimCoxExpDispersionOutDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus.h
MSSOTLPolicy5DStimulus::stimDivDispersionOutDVal
double stimDivDispersionOutDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::stimCoxDVal
double stimCoxDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::getStimOffsetIn
double getStimOffsetIn()
Definition: MSSOTLPolicy5DStimulus.h:61
MSSOTLPolicy5DStimulus::stimOffsetInDVal
double stimOffsetInDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::getStimCoxExpIn
double getStimCoxExpIn()
Definition: MSSOTLPolicy5DStimulus.h:125
MSSOTLPolicy5DStimulus::getStimOffsetDispersionIn
double getStimOffsetDispersionIn()
Definition: MSSOTLPolicy5DStimulus.h:77
MSSOTLPolicy5DStimulus::getStimCoxExpDispersionIn
double getStimCoxExpDispersionIn()
Definition: MSSOTLPolicy5DStimulus.h:140
MSSOTLPolicy5DStimulus::stimOffsetOutDVal
double stimOffsetOutDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::getMessage
std::string getMessage()
Definition: MSSOTLPolicy5DStimulus.cpp:82
MSSOTLPolicy5DStimulus::getStimCoxExpDispersionOut
double getStimCoxExpDispersionOut()
Definition: MSSOTLPolicy5DStimulus.h:147
MSSOTLPolicy5DStimulus::getStimOffsetDispersionOut
double getStimOffsetDispersionOut()
Definition: MSSOTLPolicy5DStimulus.h:84
MSSOTLPolicy5DStimulus::getStimOffsetOut
double getStimOffsetOut()
Definition: MSSOTLPolicy5DStimulus.h:68
MSSOTLPolicy5DStimulus::stimDivOutDVal
double stimDivOutDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::getStimCox
double getStimCox()
Definition: MSSOTLPolicy5DStimulus.h:54
MSSOTLPolicy5DStimulus::stimDivDispersionInDVal
double stimDivDispersionInDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::stimDivInDVal
double stimDivInDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::stimCoxExpDispersionInDVal
double stimCoxExpDispersionInDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::getStimDivisorDispersionIn
double getStimDivisorDispersionIn()
Definition: MSSOTLPolicy5DStimulus.h:109
MSSOTLPolicy5DStimulus::getStimCoxExpOut
double getStimCoxExpOut()
Definition: MSSOTLPolicy5DStimulus.h:132
MSSOTLPolicy5DStimulus::stimCoxExpOutDVal
double stimCoxExpOutDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::MSSOTLPolicy5DStimulus
MSSOTLPolicy5DStimulus(std::string keyPrefix, const std::map< std::string, std::string > &parameters)
Definition: MSSOTLPolicy5DStimulus.cpp:21
MSSOTLPolicy5DStimulus::stimCoxExpInDVal
double stimCoxExpInDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicyDesirability
This class determines the desirability algorithm of a MSSOTLPolicy when used in combination with a hi...
Definition: MSSOTLPolicyDesirability.h:36
WRITE_ERROR
#define WRITE_ERROR(msg)
Definition: MsgHandler.h:245
WRITE_MESSAGE
#define WRITE_MESSAGE(msg)
Definition: MsgHandler.h:240
MSSOTLPolicy5DStimulus::stimOffsetDispersionInDVal
double stimOffsetDispersionInDVal
Definition: MSSOTLPolicy5DStimulus.h:45
MSSOTLPolicy5DStimulus::stimOffsetDispersionOutDVal
double stimOffsetDispersionOutDVal
Definition: MSSOTLPolicy5DStimulus.h:45