[mareframe] Annotation of /trunk/paramin-beta/paraminsearch.cc
Annotation of /trunk/paramin-beta/paraminsearch.cc
Parent Directory
| Revision Log
Revision 1 -
(view)
(download)
1 : |
agomez |
1 |
#include "paraminsearch.h" |
2 : |
|
|
|
3 : |
|
|
// ********************************************************
|
4 : |
|
|
// functions for base class ParaminSearch
|
5 : |
|
|
// ********************************************************
|
6 : |
|
|
ParaminSearch::ParaminSearch(NetInterface* netInt) {
|
7 : |
|
|
// Must make sure the optinfo is called and constructor initialized..
|
8 : |
|
|
net = netInt;
|
9 : |
|
|
lowerbound = net->getLowerScaleConstant();
|
10 : |
|
|
upperbound = net->getUpperScaleConstant();
|
11 : |
|
|
numvar = net->getNumVarsInDataGroup();
|
12 : |
|
|
maxiterations = 2000;
|
13 : |
|
|
}
|
14 : |
|
|
|
15 : |
|
|
ParaminSearch::~ParaminSearch() {
|
16 : |
|
|
}
|
17 : |
|
|
|
18 : |
|
|
const DoubleVector& ParaminSearch::getBestX() {
|
19 : |
|
|
return net->unscaleX(bestx);
|
20 : |
|
|
}
|
21 : |
|
|
|
22 : |
|
|
double ParaminSearch::getBestF() {
|
23 : |
|
|
return bestf;
|
24 : |
|
|
}
|
25 : |
|
|
|
26 : |
|
|
void ParaminSearch::randomOrder(IntVector& vec) {
|
27 : |
|
|
int i, j, k, change;
|
28 : |
|
|
/*
|
29 : |
|
|
i = j = k = change = 0;
|
30 : |
|
|
if (vec.Size() != numvar)
|
31 : |
|
|
// error
|
32 : |
|
|
while (change < numvar) {
|
33 : |
|
|
j = rand() % numvar;
|
34 : |
|
|
k = 1;
|
35 : |
|
|
for (i = 0; i < change; i++)
|
36 : |
|
|
if (vec[i] == j)
|
37 : |
|
|
k = 0;
|
38 : |
|
|
|
39 : |
|
|
if (k) {
|
40 : |
|
|
vec[change] = j;
|
41 : |
|
|
change++;
|
42 : |
|
|
}
|
43 : |
|
|
}
|
44 : |
|
|
*/
|
45 : |
|
|
}
|
46 : |
|
|
|
47 : |
|
|
double ParaminSearch::expRep(double x) {
|
48 : |
|
|
double exprep = 0.0;
|
49 : |
|
|
if (x > verysmall)
|
50 : |
|
|
exprep = 1.0;
|
51 : |
|
|
else if (x < -25.0)
|
52 : |
|
|
exprep = rathersmall;
|
53 : |
|
|
else
|
54 : |
|
|
exprep = exp(x);
|
55 : |
|
|
return exprep;
|
56 : |
|
|
}
|
57 : |
|
|
|
58 : |
|
|
double ParaminSearch::randomNumber() {
|
59 : |
|
|
int r = rand();
|
60 : |
|
|
double k = r % 32767;
|
61 : |
|
|
return k / 32767.0;
|
62 : |
|
|
|
63 : |
|
|
// return 0.4;
|
64 : |
|
|
}
|
65 : |
|
|
void ParaminSearch::printX(const DoubleVector& vec) {
|
66 : |
|
|
int i;
|
67 : |
|
|
for (i = 0; i < vec.Size(); i++)
|
68 : |
|
|
cout << vec[i] << sep;
|
69 : |
|
|
cout << endl;
|
70 : |
|
|
}
|
71 : |
|
|
void ParaminSearch::printX(ofstream& output, const DoubleVector& vec) {
|
72 : |
|
|
int i;
|
73 : |
|
|
for (i = 0; i < vec.Size(); i++)
|
74 : |
|
|
output << vec[i] << sep;
|
75 : |
|
|
output << endl;
|
76 : |
|
|
}
|
|