33 CEP::CEP(
VEHPHEMLightJSON::VEH*
Vehicle, std::vector<std::string>& headerLineFCvalues, std::vector<std::vector<double> >& matrixFCvalues, std::vector<std::string>& headerLinePollutants, std::vector<std::vector<double> >& matrixPollutants, std::vector<double>& idlingFCvalues, std::vector<double>& idlingPollutants) {
80 std::vector<std::string> FCvaluesIdentifier;
81 std::vector<std::vector<double> > FCvaluesMeasures;
82 std::vector<std::vector<double> > normalizedFCvaluesMeasures;
83 for (
int i = 0; i < (int)headerLineFCvalues.size(); i++) {
84 FCvaluesIdentifier.push_back(headerLineFCvalues[i]);
85 FCvaluesMeasures.push_back(std::vector<double>());
86 normalizedFCvaluesMeasures.push_back(std::vector<double>());
90 std::vector<std::string> pollutantIdentifier;
91 std::vector<std::vector<double> > pollutantMeasures;
92 std::vector<std::vector<double> > normalizedPollutantMeasures;
93 for (
int i = 0; i < (int)headerLinePollutants.size(); i++) {
94 pollutantIdentifier.push_back(headerLinePollutants[i]);
95 pollutantMeasures.push_back(std::vector<double>());
96 normalizedPollutantMeasures.push_back(std::vector<double>());
101 for (
int i = 0; i < (int)
Vehicle->getTransmissionData()->getTransm()[
"Speed"].size(); i++) {
116 int headerFCCount = (int)headerLineFCvalues.size();
117 for (
int i = 0; i < (int)matrixFCvalues.size(); i++) {
118 for (
int j = 0; j < (int)matrixFCvalues[i].size(); j++) {
119 if ((
int)matrixFCvalues[i].size() != headerFCCount + 1) {
128 FCvaluesMeasures[j - 1].push_back(matrixFCvalues[i][j] *
getRatedPower());
129 normalizedFCvaluesMeasures[j - 1].push_back(matrixFCvalues[i][j]);
138 for (
int i = 0; i < (int)headerLineFCvalues.size(); i++) {
139 _cepCurveFCvalues.insert(std::make_pair(FCvaluesIdentifier[i], FCvaluesMeasures[i]));
145 double pollutantMultiplyer = 1;
162 int headerCount = (int)headerLinePollutants.size();
163 for (
int i = 0; i < (int)matrixPollutants.size(); i++) {
164 for (
int j = 0; j < (int)matrixPollutants[i].size(); j++) {
165 if ((
int)matrixPollutants[i].size() != headerCount + 1) {
174 pollutantMeasures[j - 1].push_back(matrixPollutants[i][j] * pollutantMultiplyer);
175 normalizedPollutantMeasures[j - 1].push_back(matrixPollutants[i][j]);
183 for (
int i = 0; i < (int)headerLinePollutants.size(); i++) {
186 _idlingValuesPollutants.insert(std::make_pair(pollutantIdentifier[i], idlingPollutants[i] * pollutantMultiplyer));
189 _FleetMix = std::map<std::string, double>();
500 if (value <= pattern.front()) {
506 if (value >= pattern.back()) {
507 lowerIndex = (int)pattern.size() - 1;
508 upperIndex = (int)pattern.size() - 1;
513 int middleIndex = ((int)pattern.size() - 1) / 2;
514 upperIndex = (int)pattern.size() - 1;
517 while (upperIndex - lowerIndex > 1) {
518 if (pattern[middleIndex] == value) {
519 lowerIndex = middleIndex;
520 upperIndex = middleIndex;
523 else if (pattern[middleIndex] < value) {
524 lowerIndex = middleIndex;
525 middleIndex = (upperIndex - lowerIndex) / 2 + lowerIndex;
528 upperIndex = middleIndex;
529 middleIndex = (upperIndex - lowerIndex) / 2 + lowerIndex;
533 if (pattern[lowerIndex] <= value && value < pattern[upperIndex]) {