File: interfaceRandom.cpp

package info (click to toggle)
mldemos 0.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 32,224 kB
  • ctags: 46,525
  • sloc: cpp: 306,887; ansic: 167,718; ml: 126; sh: 109; makefile: 2
file content (128 lines) | stat: -rw-r--r-- 4,562 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*********************************************************************
MLDemos: A User-Friendly visualization toolkit for machine learning
Copyright (C) 2010  Basilio Noris
Contact: mldemos@b4silio.com

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License,
version 3 as published by the Free Software Foundation.

This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*********************************************************************/
#include "interfaceRandom.h"
#include <QPixmap>
#include <QBitmap>
#include <QPainter>
#include <datasetManager.h>
#include <canvas.h>
#include "reinforcementRandom.h"

using namespace std;

ReinforcementInterfaceRandom::ReinforcementInterfaceRandom()
{
    params = new Ui::ParametersRandom();
	params->setupUi(widget = new QWidget());
    ChangeOptions();
}

ReinforcementInterfaceRandom::~ReinforcementInterfaceRandom()
{
    delete params;
}

void ReinforcementInterfaceRandom::ChangeOptions()
{
}

void ReinforcementInterfaceRandom::SetParams(Reinforcement *reinforcement)
{
    if(!reinforcement) return;
	double variance = params->varianceSpin->value();
    bool bSingleDim = params->singleDimCheck->isChecked();
    ((ReinforcementRandom *)reinforcement)->SetParams(variance*variance, bSingleDim);
}

fvec ReinforcementInterfaceRandom::GetParams()
{
    double variance = params->varianceSpin->value();
    bool bSingleDim = params->singleDimCheck->isChecked();

    fvec par(2);
    par[0] = variance;
    par[1] = bSingleDim;
    return par;
}

void ReinforcementInterfaceRandom::SetParams(Reinforcement *reinforcement, fvec parameters)
{
    int i=0;
    double variance = parameters.size() > i ? parameters[i] : 0.1; i++;
    bool bSingleDim = parameters.size() > i ? parameters[i] : true;

    ((ReinforcementRandom *)reinforcement)->SetParams(variance*variance, bSingleDim);
}

void ReinforcementInterfaceRandom::GetParameterList(std::vector<QString> &parameterNames,
                             std::vector<QString> &parameterTypes,
                             std::vector< std::vector<QString> > &parameterValues)
{
    parameterNames.push_back("Variance");
    parameterNames.push_back("Use single dimension");
    parameterTypes.push_back("Real");
    parameterTypes.push_back("List");
    parameterValues.push_back(vector<QString>());
    parameterValues.back().push_back("0.0000001f");
    parameterValues.back().push_back("999999999.f");
    parameterValues.push_back(vector<QString>());
    parameterValues.back().push_back("False");
    parameterValues.back().push_back("True");
}

Reinforcement *ReinforcementInterfaceRandom::GetReinforcement()
{
    Reinforcement *reinforcement = NULL;
    reinforcement = new ReinforcementRandom();
    SetParams(reinforcement);
    return reinforcement;
}

QString ReinforcementInterfaceRandom::GetAlgoString()
{
	double variance = params->varianceSpin->value();
    bool singleDimCheck = params->singleDimCheck->isChecked();
    return QString("Random Walk: %1 ").arg(variance) + (singleDimCheck ? "Single" : "");
}

void ReinforcementInterfaceRandom::SaveOptions(QSettings &settings)
{
	settings.setValue("varianceSpin", params->varianceSpin->value());
    settings.setValue("singleDimCheck", params->singleDimCheck->isChecked());
}

bool ReinforcementInterfaceRandom::LoadOptions(QSettings &settings)
{
	if(settings.contains("varianceSpin")) params->varianceSpin->setValue(settings.value("varianceSpin").toFloat());
    if(settings.contains("singleDimCheck")) params->singleDimCheck->setChecked(settings.value("singleDimCheck").toBool());
    return true;
}

void ReinforcementInterfaceRandom::SaveParams(QTextStream &file)
{
	file << "maximizationOptions:" << "varianceSpin" << " " << params->varianceSpin->value() << "\n";
    file << "maximizationOptions:" << "singleDimCheck" << " " << params->singleDimCheck->isChecked() << "\n";
}

bool ReinforcementInterfaceRandom::LoadParams(QString name, float value)
{
	if(name.endsWith("varianceSpin")) params->varianceSpin->setValue((float)value);
    if(name.endsWith("singleDimCheck")) params->singleDimCheck->setChecked((bool)value);
    return true;
}