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 /****************************************************************************/
15 // The class for Swarm-based low-level policy
16 /****************************************************************************/
17 
18 #include "MSSOTLPolicy5DStimulus.h"
19 
21  const std::map<std::string, std::string>& parameters) :
22  MSSOTLPolicyDesirability(keyPrefix, parameters) {
23 
24  stimCoxDVal = 1;
25  stimOffsetInDVal = 1;
29  stimDivInDVal = 1;
30  stimDivOutDVal = 1;
33  stimCoxExpInDVal = 0;
37 }
38 
39 double MSSOTLPolicy5DStimulus::computeDesirability(double vehInMeasure, double vehOutMeasure, double vehInDispersionMeasure, double vehOutDispersionMeasure) {
40  DBG(
41  std::ostringstream str;
42  str << "cox=" << getStimCox() << ", cox_exp_in=" << getStimCoxExpIn() << ", cox_exp_out=" << getStimCoxExpOut()
43  << ", off_in=" << getStimOffsetIn() << ", off_out=" << getStimOffsetOut() << ", div_in=" << getStimDivisorIn() << ", div_out=" << getStimDivisorOut(); WRITE_MESSAGE(str.str());)
44 
45  // it seems to be not enough, a strange segmentation fault appears...
46  // if((getStimCoxExpIn()!=0.0 && getStimDivisorIn()==0.0)||(getStimCoxExpOut()!=0.0 && getStimDivisorOut()==0.0)){
47  if (getStimDivisorIn() == 0 || getStimDivisorOut() == 0) {
48  std::ostringstream errorMessage;
49  errorMessage << "INCORRECT VALUES" << "\nStimCoxExpIn="
50  << getStimCoxExpIn() << ", StimDivisorIn=" << getStimDivisorIn()
51  << ", StimCoxExpOut=" << getStimCoxExpOut()
52  << ", StimDivisorOut=" << getStimDivisorOut();
53  WRITE_ERROR(errorMessage.str());
54  assert(-1);
55  return -1;
56  } else {
57  double stimulus = getStimCox()
58  * exp(
60  * pow(vehInMeasure - getStimOffsetIn(), 2)
63  * pow(vehOutMeasure - getStimOffsetOut(), 2)
66  * pow(vehInDispersionMeasure - getStimOffsetDispersionIn(), 2)
69  * pow(vehOutDispersionMeasure - getStimOffsetDispersionOut(), 2)
71 
72  );
73  return stimulus;
74  }
75 }
76 
77 double MSSOTLPolicy5DStimulus::computeDesirability(double vehInMeasure, double vehOutMeasure) {
78 
79  return computeDesirability(vehInMeasure, vehOutMeasure, 0, 0);
80 }
82  std::ostringstream _str;
83  _str << " stimCox " << getStimCox()
84  << " StimOffsetIn " << getStimOffsetIn()
85  << " StimOffsetOut " << getStimOffsetOut()
86  << " StimDivisorIn " << getStimDivisorIn()
87  << " StimDivisorOut " << getStimDivisorOut()
88  << " StimCoxExpIn " << getStimCoxExpIn()
89  << " StimCoxExpOut " << getStimCoxExpOut()
90  << " .";
91  return _str.str();
92 }
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:77
MSSOTLPolicy5DStimulus::getStimDivisorIn
double getStimDivisorIn()
Definition: MSSOTLPolicy5DStimulus.h:90
DBG
#define DBG(X)
Definition: SwarmDebug.h:26
MSSOTLPolicy5DStimulus::getStimDivisorDispersionOut
double getStimDivisorDispersionOut()
Definition: MSSOTLPolicy5DStimulus.h:116
MSSOTLPolicy5DStimulus::getStimDivisorOut
double getStimDivisorOut()
Definition: MSSOTLPolicy5DStimulus.h:99
MSSOTLPolicy5DStimulus::stimCoxExpDispersionOutDVal
double stimCoxExpDispersionOutDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus.h
MSSOTLPolicy5DStimulus::stimDivDispersionOutDVal
double stimDivDispersionOutDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::stimCoxDVal
double stimCoxDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::getStimOffsetIn
double getStimOffsetIn()
Definition: MSSOTLPolicy5DStimulus.h:60
MSSOTLPolicy5DStimulus::stimOffsetInDVal
double stimOffsetInDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::getStimCoxExpIn
double getStimCoxExpIn()
Definition: MSSOTLPolicy5DStimulus.h:124
MSSOTLPolicy5DStimulus::getStimOffsetDispersionIn
double getStimOffsetDispersionIn()
Definition: MSSOTLPolicy5DStimulus.h:76
MSSOTLPolicy5DStimulus::getStimCoxExpDispersionIn
double getStimCoxExpDispersionIn()
Definition: MSSOTLPolicy5DStimulus.h:139
MSSOTLPolicy5DStimulus::stimOffsetOutDVal
double stimOffsetOutDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::getMessage
std::string getMessage()
Definition: MSSOTLPolicy5DStimulus.cpp:81
MSSOTLPolicy5DStimulus::getStimCoxExpDispersionOut
double getStimCoxExpDispersionOut()
Definition: MSSOTLPolicy5DStimulus.h:146
MSSOTLPolicy5DStimulus::getStimOffsetDispersionOut
double getStimOffsetDispersionOut()
Definition: MSSOTLPolicy5DStimulus.h:83
MSSOTLPolicy5DStimulus::getStimOffsetOut
double getStimOffsetOut()
Definition: MSSOTLPolicy5DStimulus.h:67
MSSOTLPolicy5DStimulus::stimDivOutDVal
double stimDivOutDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::getStimCox
double getStimCox()
Definition: MSSOTLPolicy5DStimulus.h:53
MSSOTLPolicy5DStimulus::stimDivDispersionInDVal
double stimDivDispersionInDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::stimDivInDVal
double stimDivInDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::stimCoxExpDispersionInDVal
double stimCoxExpDispersionInDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::getStimDivisorDispersionIn
double getStimDivisorDispersionIn()
Definition: MSSOTLPolicy5DStimulus.h:108
MSSOTLPolicy5DStimulus::getStimCoxExpOut
double getStimCoxExpOut()
Definition: MSSOTLPolicy5DStimulus.h:131
MSSOTLPolicy5DStimulus::stimCoxExpOutDVal
double stimCoxExpOutDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::MSSOTLPolicy5DStimulus
MSSOTLPolicy5DStimulus(std::string keyPrefix, const std::map< std::string, std::string > &parameters)
Definition: MSSOTLPolicy5DStimulus.cpp:20
MSSOTLPolicy5DStimulus::stimCoxExpInDVal
double stimCoxExpInDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicyDesirability
This class determines the desirability algorithm of a MSSOTLPolicy when used in combination with a hi...
Definition: MSSOTLPolicyDesirability.h:35
WRITE_ERROR
#define WRITE_ERROR(msg)
Definition: MsgHandler.h:283
WRITE_MESSAGE
#define WRITE_MESSAGE(msg)
Definition: MsgHandler.h:277
MSSOTLPolicy5DStimulus::stimOffsetDispersionInDVal
double stimOffsetDispersionInDVal
Definition: MSSOTLPolicy5DStimulus.h:44
MSSOTLPolicy5DStimulus::stimOffsetDispersionOutDVal
double stimOffsetDispersionOutDVal
Definition: MSSOTLPolicy5DStimulus.h:44