00001 #include "gui.h"
00002
00006 void Simulation::iteration_button_clicked() {
00007
00008 DBG();
00009
00010
00011 this->guiMutex->lock();
00012
00013 this->stopLearningThread();
00014
00015
00016 if (this->lg->viLearnWithNN->isChecked()) {
00017
00018
00019 this->pkt->setNetworkParameters(
00020 this->lg->netMaxEpochs->value(),
00021 this->lg->netIterationsBetweenReport->value(),
00022 this->lg->netDesiredError->text().toDouble(),
00023 this->lg->netEta->text().toDouble(),
00024 this->lg->netAutoAdjustError->isChecked(),
00025 this->lg->netActivationStepnessHidden->text().toDouble(),
00026 this->lg->netActivationStepnessOutput->text().toDouble(),
00027 this->lg->netHiddenActivationFunction->currentItem(),
00028 this->lg->netOutputActivationFunction->currentItem()
00029 );
00030
00031 pkt->setModusFromExtern('b');
00032
00033
00034 } else {
00035 pkt->setModusFromExtern('i');
00036 }
00037
00038
00039 if (!this->pkt->running()) this->pkt->start();
00040
00041
00042 this->guiMutex->unlock();
00043 }
00044
00048 void Simulation::learn_button_clicked()
00049 {
00050 DBG();
00051
00052
00053 this->guiMutex->lock();
00054
00055
00056 speed = this->lg->viSpeedSlider->maxValue() - this->lg->viSpeedSlider->value();
00057 pkt->setSpeed (speed);
00058
00059 this->stopLearningThread();
00060
00061
00062 if (this->lg->viLearnWithNN->isChecked()) {
00063
00064
00065 this->pkt->setNetworkParameters(
00066 this->lg->netMaxEpochs->value(),
00067 this->lg->netIterationsBetweenReport->value(),
00068 this->lg->netDesiredError->text().toDouble(),
00069 this->lg->netEta->text().toDouble(),
00070 this->lg->netAutoAdjustError->isChecked(),
00071 this->lg->netActivationStepnessHidden->text().toDouble(),
00072 this->lg->netActivationStepnessOutput->text().toDouble(),
00073 this->lg->netHiddenActivationFunction->currentItem(),
00074 this->lg->netOutputActivationFunction->currentItem()
00075 );
00076
00077 pkt->setModusFromExtern('B');
00078
00079
00080 } else {
00081 pkt->setModusFromExtern('l');
00082 }
00083
00084
00085 if (!this->pkt->running()) this->pkt->start();
00086
00087 lg->viLernenButton->setEnabled (false);
00088 lg->viIterationButton->setEnabled (false);
00089 lg->viStopButton->setEnabled (true);
00090 lg->viDeleteButton->setEnabled (false);
00091 lg->viLernenButton2->setEnabled (false);
00092 lg->viIterationButton2->setEnabled (false);
00093 lg->viStopButton2->setEnabled (true);
00094 lg->viDeleteButton2->setEnabled (false);
00095
00096 lg->viSpeedSlider->setEnabled (true);
00097
00098
00099 this->guiMutex->unlock();
00100 }
00101
00105 void Simulation::delete_button_clicked()
00106 {
00107 DBG();
00108
00109
00110 this->guiMutex->lock();
00111
00112 this->stopLearningThread();
00113 pkt->setModusFromExtern('c');
00114 if (!this->pkt->running()) this->pkt->start();
00115
00116
00117 lg->viStopButton->setEnabled (false);
00118 lg->viLernenButton->setEnabled (true);
00119 lg->viIterationButton->setEnabled(true);
00120 lg->viStopButton2->setEnabled (false);
00121 lg->viLernenButton2->setEnabled (true);
00122 lg->viIterationButton2->setEnabled(true);
00123
00124
00125 this->guiMutex->unlock();
00126 }
00127
00131 void Simulation::stop_button_clicked() {
00132
00133 DBG();
00134
00135
00136 this->guiMutex->lock();
00137
00138 this->stopLearningThread();
00139
00140 lg->viStopButton->setEnabled (false);
00141 lg->viDeleteButton->setEnabled (true);
00142 lg->viLernenButton->setEnabled (true);
00143 lg->viIterationButton->setEnabled (true);
00144 lg->viStopButton2->setEnabled (false);
00145 lg->viDeleteButton2->setEnabled (true);
00146 lg->viLernenButton2->setEnabled (true);
00147 lg->viIterationButton2->setEnabled (true);
00148
00149
00150 this->guiMutex->unlock();
00151 }
00152
00157 void Simulation::vi_train_random_values_changed (int _value) {
00158
00159 int _percVal = (int)((100.0 * (float)_value) / (float)this->lg->viRandomValuesSlider->maxValue());
00160 int _valCount = (int)((float)scalX * (float)scalY * ((float)_percVal/100.0));
00161
00162
00163 if (this->pkt != NULL) {
00164 this->pkt->setTrainRandomValues(_valCount);
00165 }
00166
00167 debugOutput ("GUI: training " + QString::number(_percVal) + "% (" + QString::number(_valCount) + ") random values to net");
00168 this->lg->viRandomNetSliderText->setText("training " + QString::number(_percVal) + "% (" + QString::number(_valCount) + " random) values to net:");
00169 }
00170
00175 void Simulation::speed_slider_changed(int _value) {
00176 speed = this->lg->viSpeedSlider->maxValue() - _value;
00177 pkt->setSpeed (speed);
00178 debugOutput ("Neue Geschwindigkeit: " + QString::number (speed));
00179 this->lg->viSpeedLabel->setText ("speed (" + QString::number (speed) + "): slow");
00180 }
00181
00189 void Simulation::updatePolicyTable (int _row, int _column, double _value, int _bestdirection) {
00190
00191 QTableItem *strategy_item, *value_item;
00192 static int updateCall = 0;
00193
00194 this->dad->lock();
00195
00196
00197 this->action[_row][_column] = _bestdirection;
00198
00199
00200 value_item = lg->viValueTable->item (_row, _column);
00201 value_item->setPixmap (pix[_bestdirection]);
00202 value_item->setText (QString::number (_value, 'f', iMantisse));
00203
00204
00205 fValueMemory[_row][_column] = (float) _value;
00206
00207
00208 strategy_item = lg->strategyTable->item (_row, _column);
00209
00210 strategy_item->setPixmap (pix[_bestdirection]);
00211
00212
00213
00214 updateCall++;
00215
00216 if (updateCall == i_cell ) {
00217 for (int i=0; i < lg->numCols->text().toInt(); i++) {
00218 lg->viValueTable->adjustColumn (i);
00219 lg->strategyTable->adjustColumn (i);
00220 }
00221 lg->viValueTable->updateCell(_row, _column);
00222 lg->strategyTable->updateCell(_row, _column);
00223
00224 updateCall = 0;
00225 }
00226
00227 this->pkt->unlockMutex();
00228
00229
00230 this->dad->unlock();
00231 }
00232
00236 void Simulation::learn_method_nn_clicked() {
00237
00238 DBG();
00239
00240
00241 this->guiMutex->lock();
00242
00243
00244 this->stopLearningThread();
00245 this->pkt->activateNet();
00246 this->pkt->setModusFromExtern('p');
00247 if (!this->pkt->running()) this->pkt->start();
00248
00249 debugOutput ("neural network activated");
00250
00251 this->lg->viLearnWithNN->setEnabled(false);
00252 this->lg->viLearnWithVI->setEnabled(true);
00253 this->lg->viLearnWithNN->setChecked(true);
00254 this->lg->viLearnWithVI->setChecked(false);
00255
00256
00257 this->guiMutex->unlock();
00258 }
00259
00263 void Simulation::learn_method_vi_clicked() {
00264
00265 DBG();
00266
00267
00268 this->guiMutex->lock();
00269
00270
00271 this->stopLearningThread();
00272 this->pkt->deactivateNet();
00273 this->pkt->setModusFromExtern('p');
00274 if (!this->pkt->running()) this->pkt->start();
00275
00276 debugOutput ("neural network deactivated");
00277
00278 this->lg->viLearnWithNN->setEnabled(true);
00279 this->lg->viLearnWithVI->setEnabled(false);
00280 this->lg->viLearnWithNN->setChecked(false);
00281 this->lg->viLearnWithVI->setChecked(true);
00282
00283
00284 this->guiMutex->unlock();
00285 }
00286
00290 void Simulation::learn_method_vi_nn_clicked() {
00291
00292 DBG();
00293
00294
00295 this->guiMutex->lock();
00296
00297
00298 this->stopLearningThread();
00299 this->pkt->activateNet();
00300 this->pkt->setModusFromExtern('p');
00301 if (!this->pkt->running()) this->pkt->start();
00302
00303 this->lg->viLearnWithNN->setEnabled(true);
00304 this->lg->viLearnWithVI->setEnabled(true);
00305 this->lg->viLearnWithNN->setChecked(false);
00306 this->lg->viLearnWithVI->setChecked(false);
00307
00308
00309
00310 this->guiMutex->unlock();
00311 }