[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[oMetah-devel] ometah ./ometah.pws common/itsPoint.cpp common/...
From: |
Johann |
Subject: |
[oMetah-devel] ometah ./ometah.pws common/itsPoint.cpp common/... |
Date: |
Thu, 26 May 2005 13:15:06 -0400 |
CVSROOT: /cvsroot/ometah
Module name: ometah
Branch:
Changes by: Johann <address@hidden> 05/05/26 17:15:06
Modified files:
. : ometah.pws
common : itsPoint.cpp itsPoint.hpp
interface : ometah.cpp
metaheuristic : itsEstimationOfDistribution.cpp
itsMetaheuristic.cpp
Log message:
* add some exceptions
* add a function to print samples
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/ometah.pws.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/common/itsPoint.cpp.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/common/itsPoint.hpp.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/interface/ometah.cpp.diff?tr1=1.14&tr2=1.15&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/metaheuristic/itsEstimationOfDistribution.cpp.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/metaheuristic/itsMetaheuristic.cpp.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
Patches:
Index: ometah/common/itsPoint.cpp
diff -u ometah/common/itsPoint.cpp:1.3 ometah/common/itsPoint.cpp:1.4
--- ometah/common/itsPoint.cpp:1.3 Thu May 26 08:55:43 2005
+++ ometah/common/itsPoint.cpp Thu May 26 17:15:06 2005
@@ -1,5 +1,5 @@
/***************************************************************************
- * $Id: itsPoint.cpp,v 1.3 2005/05/26 08:55:43 nojhan Exp $
+ * $Id: itsPoint.cpp,v 1.4 2005/05/26 17:15:06 nojhan Exp $
* Author : Johann Dréo <address@hidden>
****************************************************************************/
@@ -18,10 +18,14 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+
#include <iostream>
-using namespace std;
+#include <sstream>
+
#include "itsPoint.hpp"
+using namespace std;
+
//! Get the solution vector
vector<double> itsPoint::getSolution()
{
@@ -99,3 +103,36 @@
return res;
}
}
+
+string printValues( vector<itsPoint> vec, int dimension, const char*
separatorDimension, const char* separatorPoint )
+{
+ if( vec.size() <= 0 ) {
+ throw "ErrorSize: cannot print an empty vector";
+
+ } else {
+ if ( vec[0].getValues().size()<=0 || dimension > (signed
int)vec[0].getValues().size() ) {
+ throw "ErrorSize: cannot print a vector of empty points";
+ }
+ }
+
+ ostringstream res;
+
+ if(dimension>-1) { // if we want a specific dimension
+ res << vec[0].getValues()[dimension];
+ for(unsigned int i=1; i<vec.size(); i++) { // points
+ res << separatorDimension << vec[i].getValues()[dimension];
+ }
+
+ } else { // if we want all dimensions
+
+ res << vec[0].getValues()[0];
+ for(unsigned int i=1; i<vec.size(); i++) { // points
+ res << vec[i].getValues()[0];
+ for(unsigned int j=1; j<vec[i].getValues().size(); j++) { //
dimensions
+ res << separatorDimension << vec[i].getValues()[j];
+ }
+ res << separatorPoint;
+ }
+ }
+ return res.str();
+}
Index: ometah/common/itsPoint.hpp
diff -u ometah/common/itsPoint.hpp:1.6 ometah/common/itsPoint.hpp:1.7
--- ometah/common/itsPoint.hpp:1.6 Thu May 26 08:55:43 2005
+++ ometah/common/itsPoint.hpp Thu May 26 17:15:06 2005
@@ -1,5 +1,5 @@
/***************************************************************************
- * $Id: itsPoint.hpp,v 1.6 2005/05/26 08:55:43 nojhan Exp $
+ * $Id: itsPoint.hpp,v 1.7 2005/05/26 17:15:06 nojhan Exp $
* Author : Walid TFAILI <address@hidden>
****************************************************************************/
@@ -68,4 +68,16 @@
*/
vector<itsPoint> sortOnValues(vector<itsPoint> vec, int dimension);
+
+//! Print the values of a point
+/*!
+ If a dimension is given, it print only values for this dimension.
+ Else, it print all values.
+ By default :
+|11 12 13|
+|21 22 23| => 11,12,13 21,22,23 31,32,33
+|31 32 33|
+*/
+string printValues( vector<itsPoint> vec, int dimension=-1, const char*
separatorDimension=",", const char* separatorPoint=" " );
+
#endif
Index: ometah/interface/ometah.cpp
diff -u ometah/interface/ometah.cpp:1.14 ometah/interface/ometah.cpp:1.15
--- ometah/interface/ometah.cpp:1.14 Thu May 26 08:55:43 2005
+++ ometah/interface/ometah.cpp Thu May 26 17:15:06 2005
@@ -1,5 +1,5 @@
/***************************************************************************
- * $Id: ometah.cpp,v 1.14 2005/05/26 08:55:43 nojhan Exp $
+ * $Id: ometah.cpp,v 1.15 2005/05/26 17:15:06 nojhan Exp $
* Copyright : Université Paris 12 Val-de-Marne
* Author : Johann Dréo <address@hidden>
****************************************************************************/
@@ -148,10 +148,19 @@
cout << "PROBLEM" << endl << setProblem.item()->getInformations();
cout << endl;*/
- setMetaheuristic.item()->setLogLevel(2);
+ setMetaheuristic.item()->addDebugKey("selectNumber");
+ setMetaheuristic.item()->setLogLevel(99);
setMetaheuristic.item()->setSampleSize(3);
- setMetaheuristic.item()->start();
+ try {
+ setMetaheuristic.item()->start();
+ }
+ catch(const char * str) {
+ cerr << str << endl;
+ }
+ catch (...) {
+ cerr << "Unknown error" << endl;
+ }
Index: ometah/metaheuristic/itsEstimationOfDistribution.cpp
diff -u ometah/metaheuristic/itsEstimationOfDistribution.cpp:1.13
ometah/metaheuristic/itsEstimationOfDistribution.cpp:1.14
--- ometah/metaheuristic/itsEstimationOfDistribution.cpp:1.13 Thu May 26
08:55:43 2005
+++ ometah/metaheuristic/itsEstimationOfDistribution.cpp Thu May 26
17:15:06 2005
@@ -1,5 +1,5 @@
/***************************************************************************
- * $Id: itsEstimationOfDistribution.cpp,v 1.13 2005/05/26 08:55:43 nojhan Exp
$
+ * $Id: itsEstimationOfDistribution.cpp,v 1.14 2005/05/26 17:15:06 nojhan Exp
$
* Author : Johann Dréo <address@hidden>
****************************************************************************/
@@ -24,6 +24,7 @@
#include <iostream>
#include <vector>
#include <algorithm>
+#include <cmath>
#include "itsEstimationOfDistribution.hpp"
#include "../common/matrix.hpp"
@@ -81,7 +82,7 @@
// verify that we have the correct dimension
if( transposedSimplifiedSample.size() != (unsigned
int)this->problem->getDimension() ) {
- throw "ErrorSize";
+ throw "ErrorSize: transposed matrix does not correspond to dimension";
}
// find the minimum and the maximum for each dimension
@@ -94,18 +95,35 @@
void itsEstimationOfDistribution::diversification()
{
+ // erase all
+ sample.clear();
+
// draw each point in an hyper cube
for( unsigned int i=0; i < getSampleSize(); i++) {
// draw solution
- sample[i].setSolution( randomUniform(this->parameterUniformMinima,
this->parameterUniformMaxima) );
+ itsPoint p;
+ p.setSolution( randomUniform(this->parameterUniformMinima,
this->parameterUniformMaxima) );
// get values
- sample[i] = this->problem->call(sample[i]);
+ sample.push_back( this->problem->call(p) );
}
}
void itsEstimationOfDistribution::intensification()
{
- vector<itsPoint> sortedSample = sortOnValues(this->sample,0);
+ // sort the sample
+ this->sample = sortOnValues(this->sample,0);
+
+ // get the best points
+ int selectNumber = (int) floor( (double)this->sample.size() *
this->selectRatio);
+ printDebug("selectNumber",selectNumber);
+
+ vector<itsPoint> bests(this->sample.begin(), this->sample.begin() +
selectNumber );
+
+ if(bests.size()<=0) {
+ throw "ErrorSize: no more points left after selection";
+ }
+
+ this->sample = bests;
}
string itsEstimationOfDistribution::getDistribution()
Index: ometah/metaheuristic/itsMetaheuristic.cpp
diff -u ometah/metaheuristic/itsMetaheuristic.cpp:1.13
ometah/metaheuristic/itsMetaheuristic.cpp:1.14
--- ometah/metaheuristic/itsMetaheuristic.cpp:1.13 Thu May 26 08:55:43 2005
+++ ometah/metaheuristic/itsMetaheuristic.cpp Thu May 26 17:15:06 2005
@@ -30,6 +30,7 @@
#include <cstdlib>
#include "itsMetaheuristic.hpp"
#include "../common/random.hpp"
+#include "../common/itsPoint.hpp"
#include "../problem/itsProblem.hpp"
#include "../communication/itsCommunicationClient.hpp"
@@ -82,6 +83,7 @@
this->logKeys["communications"] = 2;
this->logKeys["instanciations"] = 2;
this->logKeys["iterations"] = 2;
+ this->logKeys["sample_step"] = 3;
}
@@ -105,16 +107,30 @@
void itsMetaheuristic::start()
{
+ printLog("steps","initialization");
initialization();
// no iterations has been computed
iterationsCurrent=0;
+
+ // log
+ ostringstream msg1;
+ msg1 << "iteration " << iterationsCurrent;
+ printLog("iterations", msg1.str() );
+ printLog("sample_steps", printValues( this->sample ) );
+
// while no stopping criterion reached
while( !isStoppingCriteria() ) {
+
// main phases
+ printLog("steps","learning");
learning();
+
+ printLog("steps","diversification");
diversification();
+
+ printLog("steps","intensification");
intensification();
// one more iteration
@@ -124,6 +140,8 @@
ostringstream msg;
msg << "iteration " << iterationsCurrent;
printLog("iterations", msg.str() );
+ printLog("sample_steps", printValues( this->sample ) );
+
}
}
@@ -241,9 +259,8 @@
void itsMetaheuristic::setSampleSize(unsigned int size)
{
this->sampleSize = size;
- // WARNING : changing the size cause the vector to be reinitialized
- this->sample.erase( this->sample.begin(), this->sample.end() );
- this->sample.reserve( this->sampleSize );
+ // WARNING : changing the size may cause data loss or null points
+ this->sample.resize(size);
}
Index: ometah/ometah.pws
diff -u ometah/ometah.pws:1.13 ometah/ometah.pws:1.14
--- ometah/ometah.pws:1.13 Thu May 26 08:55:43 2005
+++ ometah/ometah.pws Thu May 26 17:15:06 2005
@@ -1,10 +1,10 @@
[filenumbers]
-0=108
+0=122
1=1
-2=84
-3=67
-4=153
+2=113
+3=81
+4=162
5=27
6=1
7=56
@@ -32,7 +32,7 @@
[filelist]
0=/home/nojhan/travail/openMetaheuristic/source/ometah/metaheuristic/itsEstimationOfDistribution.cpp
-1=/home/nojhan/travail/openMetaheuristic/source/ometah/metaheuristic/itsEstimationOfDistribution.hpp
+1=/home/nojhan/travail/openMetaheuristic/source/ometah/metaheuristic/itsMetaheuristic.cpp
2=/home/nojhan/travail/openMetaheuristic/source/ometah/common/itsPoint.cpp
3=/home/nojhan/travail/openMetaheuristic/source/ometah/common/itsPoint.hpp
4=/home/nojhan/travail/openMetaheuristic/source/ometah/interface/ometah.cpp