|
|
@ -42,6 +42,24 @@ void print_info(boost::spirit::info const& what) { |
|
|
|
boost::apply_visitor(walker, what.value); |
|
|
|
} |
|
|
|
|
|
|
|
void setProbability(const std::string& gridProperties, const std::vector<Probability> configProperties, const std::string& identifier, float& prop) { |
|
|
|
auto start_pos = gridProperties.find(identifier); |
|
|
|
std::string seperator = ";"; |
|
|
|
|
|
|
|
if (start_pos != std::string::npos) { |
|
|
|
auto end_pos = gridProperties.find('\n', start_pos); |
|
|
|
auto value = gridProperties.substr(start_pos + identifier.length() + seperator.size(), end_pos - start_pos - identifier.length()); |
|
|
|
prop = std::stod(value); |
|
|
|
} |
|
|
|
|
|
|
|
auto yaml_config_prop = std::find_if(configProperties.begin(), configProperties.end(), [&identifier](const Probability& obj) -> bool {return obj.probability_ == identifier;} ); |
|
|
|
|
|
|
|
if (yaml_config_prop != configProperties.end()) { |
|
|
|
prop = (*yaml_config_prop).value_; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char* argv[]) { |
|
|
|
popl::OptionParser optionParser("Allowed options"); |
|
|
|
|
|
|
@ -114,6 +132,7 @@ int main(int argc, char* argv[]) { |
|
|
|
std::map<coordinates, float> stateRewards; |
|
|
|
float faultyProbability = 0.1; |
|
|
|
float probIntended = 0.9; |
|
|
|
float probTurnIntended = 1; |
|
|
|
|
|
|
|
try { |
|
|
|
bool ok = phrase_parse(contentIter, contentLast, contentParser, qi::space, contentCells); |
|
|
@ -136,15 +155,13 @@ int main(int argc, char* argv[]) { |
|
|
|
stateRewards[std::make_pair(x,y)] = reward; |
|
|
|
} |
|
|
|
if (!properties.empty()) { |
|
|
|
auto faultProbabilityIdentifier = std::string("FaultProbability:"); |
|
|
|
auto start_pos = properties.find(faultProbabilityIdentifier); |
|
|
|
|
|
|
|
auto faultProbabilityIdentifier = std::string("FaultProbability"); |
|
|
|
auto probForwardIntendedIdentifier = std::string("ProbForwardIntended"); |
|
|
|
auto probTurnIntendedIdentifier = std::string("ProbTurnIntended"); |
|
|
|
|
|
|
|
if (start_pos != std::string::npos) { |
|
|
|
auto end_pos = properties.find('\n', start_pos); |
|
|
|
auto value = properties.substr(start_pos + faultProbabilityIdentifier.length(), end_pos - start_pos - faultProbabilityIdentifier.length()); |
|
|
|
faultyProbability = std::stod(value); |
|
|
|
} |
|
|
|
setProbability(properties, probabilities, faultProbabilityIdentifier, faultyProbability); |
|
|
|
setProbability(properties, probabilities, probForwardIntendedIdentifier, probIntended); |
|
|
|
setProbability(properties, probabilities, probTurnIntendedIdentifier, probTurnIntended); |
|
|
|
} |
|
|
|
if(ok) { |
|
|
|
Grid grid(contentCells, backgroundCells, gridOptions, stateRewards, probIntended, faultyProbability); |
|
|
|