Skip to content

Commit 81f9792

Browse files
committed
Use initial solution
1 parent f973ea0 commit 81f9792

File tree

8 files changed

+52
-60
lines changed

8 files changed

+52
-60
lines changed

examples/bo_branin_timed.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,15 @@ int main(int nargs, char *args[])
4545
}
4646

4747
BraninNormalized branin(par);
48+
vectord bestPoint(2, 0.5);
4849

4950
std::ofstream timelog;
5051
timelog.open("time_branin.log");
5152
std::clock_t curr_t;
5253
std::clock_t prev_t = clock();
5354

54-
branin.initializeOptimization();
55-
55+
branin.initializeOptimization(bestPoint);
56+
5657
for (size_t ii = 0; ii < par.n_iterations; ++ii)
5758
{
5859
branin.stepOptimization();

examples/bo_camelback.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ int main(int nargs, char *args[])
4545

4646

4747
ExampleCamelback camel(par);
48-
48+
vectord bestPoint(2, 0.5);
4949

5050
std::ofstream timelog;
5151
timelog.open("time_camel.log");
5252
std::clock_t curr_t;
5353
std::clock_t prev_t = clock();
5454

55-
camel.initializeOptimization();
56-
55+
camel.initializeOptimization(bestPoint);
56+
5757
for (size_t ii = 0; ii < par.n_iterations; ++ii)
5858
{
5959
camel.stepOptimization();

examples/bo_compare.cpp

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ int main(int nargs, char *args[])
4444
{
4545
par.random_seed = ii;
4646
BraninNormalized branin(par);
47-
vectord result(2);
47+
vectord result(2, 0.5);
4848

4949
start_t = clock();
50-
branin.initializeOptimization();
51-
50+
branin.initializeOptimization(result);
51+
5252
for (size_t jj = 0; jj < par.n_iterations; ++jj)
5353
{
5454
branin.stepOptimization();
@@ -77,16 +77,15 @@ int main(int nargs, char *args[])
7777
{
7878
par.random_seed = ii;
7979
ExampleCamelback camel(par);
80-
vectord result(2);
81-
80+
vectord result(2, 0.0);
8281
vectord lb(2); lb(0) = -2; lb(1) = -1;
8382
vectord ub(2); ub(0) = 2; ub(1) = 1;
8483

8584
camel.setBoundingBox(lb,ub);
8685

8786
start_t = clock();
88-
camel.initializeOptimization();
89-
87+
camel.initializeOptimization(result);
88+
9089
for (size_t jj = 0; jj < par.n_iterations; ++jj)
9190
{
9291
camel.stepOptimization();
@@ -115,11 +114,11 @@ int main(int nargs, char *args[])
115114
{
116115
par.random_seed = ii;
117116
ExampleHartmann6 hart(par);
118-
vectord result(6);
117+
vectord result(6, 0.5);
119118

120119
start_t = clock();
121-
hart.initializeOptimization();
122-
120+
hart.initializeOptimization(result);
121+
123122
for (size_t jj = 0; jj < par.n_iterations; ++jj)
124123
{
125124
hart.stepOptimization();
@@ -155,11 +154,11 @@ int main(int nargs, char *args[])
155154
{
156155
par.random_seed = ii;
157156
BraninNormalized branin(par);
158-
vectord result(2);
157+
vectord result(2, 0.5);
159158

160159
start_t = clock();
161-
branin.initializeOptimization();
162-
160+
branin.initializeOptimization(result);
161+
163162
for (size_t jj = 0; jj < par.n_iterations; ++jj)
164163
{
165164
branin.stepOptimization();
@@ -187,16 +186,15 @@ int main(int nargs, char *args[])
187186
{
188187
par.random_seed = ii;
189188
ExampleCamelback camel(par);
190-
vectord result(2);
191-
189+
vectord result(2, 0.0);
192190
vectord lb(2); lb(0) = -2; lb(1) = -1;
193191
vectord ub(2); ub(0) = 2; ub(1) = 1;
194192

195193
camel.setBoundingBox(lb,ub);
196194

197195
start_t = clock();
198-
camel.initializeOptimization();
199-
196+
camel.initializeOptimization(result);
197+
200198
for (size_t jj = 0; jj < par.n_iterations; ++jj)
201199
{
202200
camel.stepOptimization();
@@ -224,11 +222,11 @@ int main(int nargs, char *args[])
224222
{
225223
par.random_seed = ii;
226224
ExampleHartmann6 hart(par);
227-
vectord result(6);
225+
vectord result(6, 0.5);
228226

229227
start_t = clock();
230-
hart.initializeOptimization();
231-
228+
hart.initializeOptimization(result);
229+
232230
for (size_t jj = 0; jj < par.n_iterations; ++jj)
233231
{
234232
hart.stepOptimization();

examples/bo_hartmann.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,15 @@ int main(int nargs, char *args[])
4545

4646

4747
ExampleHartmann6 hart6(par);
48+
vectord bestPoint(6, 0.5);
4849

4950
std::ofstream timelog;
5051
timelog.open("time_hartmann.log");
5152
std::clock_t curr_t;
5253
std::clock_t prev_t = clock();
5354

54-
hart6.initializeOptimization();
55-
55+
hart6.initializeOptimization(bestPoint);
56+
5657
for (size_t ii = 0; ii < par.n_iterations; ++ii)
5758
{
5859
hart6.stepOptimization();

include/bayesopt/bayesoptbase.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ namespace bayesopt {
142142
void stepOptimization();
143143

144144
/** Initialize the optimization process. */
145-
void initializeOptimization();
145+
void initializeOptimization(const vectord& bestPoint);
146146

147147
/** Once the optimization has been performed, return the optimal point. */
148148
vectord getFinalResult();

src/bayesoptbase.cpp

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -66,34 +66,32 @@ namespace bayesopt
6666
void BayesOptBase::optimize(vectord &bestPoint)
6767
{
6868
assert(mDims == bestPoint.size());
69-
69+
7070
// Restore state from file
71-
if(mParameters.load_save_flag == 1 || mParameters.load_save_flag == 3)
71+
if( mParameters.load_save_flag == 1 || mParameters.load_save_flag == 3 )
72+
{
73+
BOptState state;
74+
bool load_succeed = state.loadFromFile(mParameters.load_filename, mParameters);
75+
76+
if( load_succeed )
7277
{
73-
BOptState state;
74-
bool load_succeed = state.loadFromFile(mParameters.load_filename,
75-
mParameters);
76-
if(load_succeed)
77-
{
78-
restoreOptimization(state);
79-
FILE_LOG(logINFO) << "State succesfully restored from file \""
80-
<< mParameters.load_filename << "\"";
81-
}
82-
else
83-
{
84-
// If load not succeed, print info message and then
85-
// initialize a new optimization
86-
FILE_LOG(logINFO) << "File \"" << mParameters.load_filename
87-
<< "\" does not exist,"
88-
<< " starting a new optimization";
89-
initializeOptimization();
90-
}
78+
restoreOptimization(state);
79+
FILE_LOG(logINFO) << "State succesfully restored from file \"" << mParameters.load_filename
80+
<< "\"";
9181
}
92-
else
82+
else
9383
{
94-
// Initialize a new state
95-
initializeOptimization();
84+
// If load not succeed, print info message and then initialize a new optimization
85+
FILE_LOG(logINFO) << "File \"" << mParameters.load_filename
86+
<< "\" does not exist, starting a new optimization";
87+
initializeOptimization(bestPoint);
9688
}
89+
}
90+
else
91+
{
92+
// Initialize a new state
93+
initializeOptimization(bestPoint);
94+
}
9795

9896
reoptimize(bestPoint);
9997
} // optimize
@@ -171,7 +169,7 @@ namespace bayesopt
171169
}
172170

173171

174-
void BayesOptBase::initializeOptimization()
172+
void BayesOptBase::initializeOptimization(const vectord& bestPoint)
175173
{
176174
// Posterior surrogate model
177175
mModel.reset(PosteriorModel::create(mDims,mParameters,mEngine));
@@ -186,7 +184,7 @@ namespace bayesopt
186184
size_t nSamples = mParameters.n_init_samples;
187185

188186
// Generate xPoints for initial sampling
189-
vecOfvec xPoints(nSamples, vectord(mDims));
187+
vecOfvec xPoints(nSamples, mapPoint(bestPoint));
190188
vectord yPoints(nSamples, 0);
191189

192190
// Save generated xPoints after their evaluation

src/bayesoptcont.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,6 @@ namespace bayesopt {
145145

146146
utils::samplePoints(xPointsMatrix, mParameters.init_method, mEngine);
147147

148-
for( size_t j = 0; j < xPoints[0].size(); ++j )
149-
xPoints[0][j] = 0.5;
150-
151148
for( size_t i = 1; i < xPoints.size(); ++i )
152149
xPoints[i] = row(xPointsMatrix, i - 1);
153150
}

src/bayesoptdisc.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,12 @@ namespace bayesopt
109109
if( xPoints.empty() )
110110
return;
111111

112-
vecOfvec perms(mInputSet.begin() + 1, mInputSet.end());
112+
vecOfvec perms(mInputSet.begin(), mInputSet.end());
113113

114114
// By using random permutations, we guarantee that
115115
// the same point is not selected twice
116116
utils::randomPerms(perms, mEngine);
117117

118-
// vectord xPoint(mInputSet[0].size());
119-
xPoints[0] = mInputSet[0];
120-
121118
for( size_t i = 1; i < xPoints.size(); ++i )
122119
xPoints[i] = perms[i - 1];
123120
}

0 commit comments

Comments
 (0)