📄 cqtcontrol.cpp
字号:
void CQTControl::removeAgentListener(CSemiMDPListener *listener)
{
std::list<CSemiMDPListener *>::iterator it;
std::list<bool>::iterator it2 = selectedListeners->begin();
int i = 0;
for (it = agentListenerList->begin(); it != agentListenerList->end(); it++, i++, it2++)
{
if (*it == listener)
{
agentListeners->removeItem(i);
agentListenerList->erase(it);
selectedListeners->erase(it2);
}
}
}*/
void CQTControl::controllerChanged(int index)
{
std::list<CAgentController *>::iterator it;
int i = 0;
CAgentController *controller = NULL;
if (index == 0)
{
if (testSuite)
{
controller = testSuite->getController();
}
}
else
{
index --;
for (it = agentControllerList->begin(); it != agentControllerList->end(), i < index; it++, i++)
{
}
controller = *it;
}
startSimulationMutex->lock();
agent->setController(controller);
startSimulationMutex->unlock();
}
/*
void CQTControl::listenersChanged(void)//QListBoxItem * currentItem)
{
std::list<CSemiMDPListener *>::iterator it;
std::list<bool>::iterator itSel;
int i = 0;
startSimulationMutex->lock();
for (itSel = selectedListeners->begin(),it = agentListenerList->begin(); it != agentListenerList->end(); it++, i++, itSel++)
{
if (agentListeners->item(i)->selected() != (*itSel))
{
(*itSel) = agentListeners->item(i)->selected();
if (*itSel)
{
agent->addSemiMDPListener(*it);
}
else
{
agent->removeSemiMDPListener(*it);
}
}
}
startSimulationMutex->unlock();
}*/
void CQTControl::setTestSuite(CTestSuite *testSuite)
{
this->testSuite = testSuite;
if (parameterCalculator)
{
delete parameterCalculator;
}
testSuiteName->setText(testSuite->getTestSuiteName().c_str());
if (testCollection)
{
char parameterFileName[100];
char evaluateOutput[100];
char learnDataDirectory[250];
sprintf(parameterFileName, "%s\\%s_params.txt", testCollection->testSuiteDirectory, testSuite->getTestSuiteName().c_str());
sprintf(evaluateOutput, "%s\\%s_eval.txt", testCollection->testSuiteDirectory, testSuite->getTestSuiteName().c_str());
sprintf(learnDataDirectory, "%s\\LearnData\\", testCollection->testSuiteDirectory);
parameterCalculator = new CTestSuiteParameterCalculator(testSuiteEvaluator, testSuite);
/* if (parameterCalculator->getNumEvaluatedParameters() > 0)
{
testSuite->setParameters(parameterCalculator->getBestCalculatedParameters());
}
*/
}
if (agentControllers->currentItem() == 0)
{
agent->setController(testSuite->getController());
}
setParameters(testSuite);
}
CTestSuite *CQTControl::getTestSuite()
{
return testSuite;
}
void CQTControl::setParameters(CParameters *parameters)
{
QString line;
testSuite->setParameters(parameters);
parametersEdit->clear();
/*for (int i = 0; i < testSuite->getNumParameters(); i++)
{
parametersEdit->insert(QString(testSuite->getParameterName(i).c_str()) + QString(": ") + QString::number(testSuite->getParameterFromIndex(i)) + "\n");
}
if (parameterCalculator)
{
rlt_real value = parameterCalculator->getParametersValue(parameters);
char str_val[20];
sprintf(str_val, "%f", value);
testSuiteValue->setText(QString::number(value));
learnDataFilenameEdit->setText(QString(parameterCalculator->getDataFileName(parameters).c_str()));
}*/
}
void CQTControl::chooseNewTestSuiteClicked(void)
{
if (testCollection)
{
int result = testSuiteChooser->exec();
if (result == QDialog::Accepted)
{
CTestSuite *testSuite = testSuiteChooser->getChoosedTestSuite();
if (testSuite)
{
setTestSuite(testSuite);
}
}
}
}
void CQTControl::nextParameters(void)
{
if (parameterCalculator)
{
/*int index = parameterCalculator->getParametersIndex(testSuite) + 1; if (index < parameterCalculator->getNumEvaluatedParameters())
{
setParameters(parameterCalculator->getParametersFromIndex(index));
}*/
}
}
void CQTControl::previousParameters(void)
{
if (parameterCalculator)
{
/*int index = parameterCalculator->getParametersIndex(testSuite) - 1;
if (index >= 0)
{
setParameters(parameterCalculator->getParametersFromIndex(index));
}*/
}
}
void CQTControl::resetLearnDataClicked(void)
{
if (testSuite)
{
testSuite->resetLearnedData();
}
}
void CQTControl::saveLearnDataClicked(void)
{
QString filename = learnDataFilenameEdit->text();
FILE *learnDataFile = fopen(filename, "r");
if (learnDataFile)
{
int answer = QMessageBox::question(this, "File already Exists", "Are you sure you want to overwrite the file?", QMessageBox::Yes,
QMessageBox::No);
if (answer == QMessageBox::No)
{
return;
}
}
fclose(learnDataFile);
learnDataFile = fopen(filename, "w");
if (learnDataFile)
{
testSuite->saveLearnedData(learnDataFile);
}
else
{
QMessageBox::warning(this, "Error", "Couldn't write File.", QMessageBox::Ok, QMessageBox::NoButton);
}
fclose(learnDataFile);
}
void CQTControl::loadLearnDataClicked(void)
{
QString filename = learnDataFilenameEdit->text();
FILE *learnDataFile = fopen(filename, "r");
if (learnDataFile)
{
testSuite->loadLearnedData(learnDataFile);
fclose(learnDataFile);
}
else
{
QMessageBox::warning(this, "Error", "Couldn't open File.", QMessageBox::Ok, QMessageBox::NoButton);
}
}
void CQTControl::startLearningClicked(void)
{
if (threadMode == LEARN)
{
startSimulationMutex->lock();
threadMode = 0;
startSimulationMutex->unlock();
}
else
{
startSimulationMutex->lock();
threadMode = LEARN;
startSimulationCondition->wakeAll();
startSimulationMutex->unlock();
}
}
void CQTControl::browseButtonClicked(void)
{
QString s = QFileDialog::getOpenFileName(
"/",
"All Files (*.*)",
this,
"open file dialog",
"Choose a file" );
learnDataFilenameEdit->setText(s);
}
void CQTControl::newParametersButtonClicked(void)
{
if (parameterCalculator)
{
QString parameterText = parametersEdit->text();
string parameterStr(parameterText.ascii());
stringstream stream(parameterStr);
char paramName[250];
rlt_real paramValue;
while(!stream.eof())
{
stream >> paramName >> paramValue;
if (strlen(paramName) > 2)
{
paramName[strlen(paramName) - 1] = '\0';
if (!stream.bad() && testSuite->getParameterIndex(paramName) >= 0)
{
testSuite->setParameter(paramName, paramValue);
}
}
}
/* if (parameterCalculator->getParametersIndex(testSuite) >= 0)
{
QMessageBox::warning(this, "Warning", "Parameters already exist.", QMessageBox::Ok, QMessageBox::NoButton);
}*/
setParameters(testSuite);
}
}
void CQTControl::getBestParametersButtonClicked(void)
{
if (parameterCalculator)
{
// testSuite->setParameters(parameterCalculator->getBestCalculatedParameters());
setParameters(testSuite);
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -