gui_simu_val_pol.cpp

gehe zur Dokumentation dieser Datei
00001 #include "gui.h"
00002 
00006 void Simulation::iteration_button_clicked() {
00007 
00008    DBG();
00009 
00010    // GUI sperren
00011    this->guiMutex->lock();
00012 
00013    this->stopLearningThread();
00014 
00015    // Kombination zwischen Value-Iteration+ Backpropagation
00016    if (this->lg->viLearnWithNN->isChecked()) {
00017 
00018       // Network-Training Parameter anpassen
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    // Value-Iteration mit Value-Memory im Hauptspeicher
00034    } else {
00035       pkt->setModusFromExtern('i');
00036    }
00037 
00038 
00039    if (!this->pkt->running()) this->pkt->start();
00040 
00041    // GUI wieder freigeben
00042    this->guiMutex->unlock();
00043 }
00044 
00048 void Simulation::learn_button_clicked()
00049 {
00050    DBG();
00051 
00052    // GUI sperren
00053    this->guiMutex->lock();
00054 
00055    // Geschwindigkeit setzen
00056    speed = this->lg->viSpeedSlider->maxValue() - this->lg->viSpeedSlider->value();
00057    pkt->setSpeed (speed);
00058 
00059    this->stopLearningThread();
00060 
00061    // Kombination zwischen Value-Iteration+ Backpropagation
00062    if (this->lg->viLearnWithNN->isChecked()) {
00063 
00064       // Network-Training Parameter anpassen
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    // Pures Value-Iteration mit speicherung der Values in 
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    // GUI wieder freigeben
00099    this->guiMutex->unlock();
00100 }
00101 
00105 void Simulation::delete_button_clicked()
00106 {
00107    DBG();
00108 
00109    // GUI sperren
00110    this->guiMutex->lock();
00111 
00112    this->stopLearningThread();
00113    pkt->setModusFromExtern('c');
00114    if (!this->pkt->running()) this->pkt->start();
00115 
00116    // Button wieder freigeben
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    // GUI wieder freigeben
00125    this->guiMutex->unlock();
00126 }
00127 
00131 void Simulation::stop_button_clicked() {
00132 
00133    DBG();
00134 
00135    // GUI sperren
00136    this->guiMutex->lock();
00137 
00138    this->stopLearningThread();
00139    // Button wieder freigeben
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    // GUI wieder freigeben
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    // Neue Anzahl setzen, wieviel Prozent der Values trainiert werden
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    // Aktion speichern
00197    this->action[_row][_column] = _bestdirection;
00198    
00199    //Value Table
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    // Value-Memory aktualisieren
00205    fValueMemory[_row][_column] = (float) _value;
00206 
00207    //Strategy-Table
00208    strategy_item = lg->strategyTable->item (_row, _column);
00209 
00210    strategy_item->setPixmap (pix[_bestdirection]);
00211       
00212    
00213    // Aller (x * y) Aufrufe  die Tabelle an die Größe anpassen
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    // GUI-Mutex wieder freigeben
00230    this->dad->unlock();
00231 }
00232 
00236 void Simulation::learn_method_nn_clicked() {
00237 
00238    DBG();
00239 
00240    // GUI sperren
00241    this->guiMutex->lock();
00242 
00243    // Alle laufenden Aktionen anhalten
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    // GUI wieder freigeben
00257    this->guiMutex->unlock();
00258 }
00259 
00263 void Simulation::learn_method_vi_clicked() {
00264 
00265    DBG();
00266 
00267    // GUI sperren
00268    this->guiMutex->lock();
00269 
00270    // Alle laufenden Aktionen anhalten
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    // GUI wieder freigeben
00284    this->guiMutex->unlock();
00285 }
00286 
00290 void Simulation::learn_method_vi_nn_clicked() {
00291 
00292    DBG();
00293 
00294    // GUI sperren
00295    this->guiMutex->lock();
00296 
00297    // Alle laufenden Aktionen anhalten
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    // GUI wieder freigeben
00310    this->guiMutex->unlock();
00311 }

Erzeugt am Mon Nov 24 15:30:59 2008 für Walking Robot Simulation GUI - API Documentation von  doxygen 1.5.5