[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[oMetah-devel] ometah/experiment interface.py metahtest.py
From: |
Jean-Philippe Aumasson |
Subject: |
[oMetah-devel] ometah/experiment interface.py metahtest.py |
Date: |
Mon, 13 Jun 2005 04:34:05 -0400 |
CVSROOT: /cvsroot/ometah
Module name: ometah
Branch:
Changes by: Jean-Philippe Aumasson <address@hidden> 05/06/13 08:34:05
Modified files:
experiment : interface.py metahtest.py
Log message:
* some parsing bugs fixed
* stop when ometah failed (Usage returned instead of XML)
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/experiment/interface.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/ometah/ometah/experiment/metahtest.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
Patches:
Index: ometah/experiment/interface.py
diff -u ometah/experiment/interface.py:1.4 ometah/experiment/interface.py:1.5
--- ometah/experiment/interface.py:1.4 Fri Jun 10 13:03:35 2005
+++ ometah/experiment/interface.py Mon Jun 13 08:34:03 2005
@@ -58,7 +58,7 @@
self.log('ERROR : wrong path to XML file
[Interface.getXmlFromFile]\n')
return fd
- def plotValuesIterationsDistribHist(self, plist, breaks):
+ def plotValuesDistribHist(self, plist, breaks):
""" plot distribution of points
plist = list of Point objects
breaks = number of breaks in the histogram """
@@ -76,7 +76,7 @@
vlist = [x.value for x in plist]
r.plot(vlist, type='o', col='red', main='Values evolution',
xlab='Points', ylab='Value')
elif dimension == 2:
- self.log('ERROR : dimension 2
[Interface.plotValuesIterationsGraph]\n')
+ self.log('ERROR : dimension > 1
[Interface.plotValuesIterationsGraph]\n')
def plotValuesIterationsBoxes(self, plist, iterations):
""" plot a box for each iteration's list of Points """
Index: ometah/experiment/metahtest.py
diff -u ometah/experiment/metahtest.py:1.16 ometah/experiment/metahtest.py:1.17
--- ometah/experiment/metahtest.py:1.16 Mon Jun 13 06:42:54 2005
+++ ometah/experiment/metahtest.py Mon Jun 13 08:34:04 2005
@@ -72,10 +72,22 @@
13/06/05
-Interface pour les 25 runs
+
+D Bug parser <problem>
+(bug 1 because 'print x' avec x non définit, aucun avertissement du python )
+(bug 2 because valeur vide entre les balises <description>, ajouté 'Unknown' à
la place)
+(bug 3 because solution mal lues, et séparateur différents, pour dimension > 1)
+
+D Ne pas lancer le parse & plott si erreur / usage en sortie
+
+Interface pour les 25 runs CEC-like
Distribution des optimums de chaque itération
+Critère d'arrêt (précision ou nbre d'itérations)
+
+
+
/----
NOTES
@@ -107,6 +119,7 @@
"""
from rpy import *
+import string
# path to ometah binary
__OMETAH_PATH = "../ometah"
@@ -150,6 +163,21 @@
for n in nodes:
li.append(float(self.__getText(n)))
return li
+
+ def __getSplitListFloat(self, domObject):
+ """ from a string of coordinates separated with blkspace,
+ return the splitted string as a list of float """
+ slist = self.__getText(domObject)
+ slist = string.split(slist)
+ return [float(x) for x in slist]
+
+ def __getSplitCommaListFloat(self, domObject):
+ """ from a string of coordinates separated with blkspace,
+ return the splitted string as a list of float """
+ slist = self.__getText(domObject)
+ slist = string.split(slist, sep=',')
+ return [float(x) for x in slist]
+
def getPoints(self):
""" returns a list of Points """
@@ -167,7 +195,7 @@
p = Point()
try:
p.value =
float(self.__getText(point.getElementsByTagName('values')[0]))
- p.coords =
self.__getListFloat(point.getElementsByTagName('solution')) #returns a list
+ p.coords =
self.__getSplitListFloat(point.getElementsByTagName('solution')[0])
except:
self.__interface.log('ERROR : XML element
missing [XMLParser.getPoints]\n')
self.__pointsList__.append(p)
@@ -184,28 +212,30 @@
self.__header__.problem.name =
self.__getText(probl.getElementsByTagName('name')[0])
self.__header__.problem.description =
self.__getText(probl.getElementsByTagName('description')[0])
self.__header__.problem.dimension =
int(self.__getText(probl.getElementsByTagName('dimension')[0]))
- print "Dimension: ", dimension
self.__header__.problem.reference =
self.__getText(probl.getElementsByTagName('reference')[0])
+ except:
+ self.__interface.log('ERROR: XML exploration error for <problem>
simple values [XMLParser.getHeader]')
+ try:
optimums = probl.getElementsByTagName('optimums')[0]
for point in optimums.getElementsByTagName('point'):
if point.nodeType == point.ELEMENT_NODE:
p = Point()
p.value =
self.__getText(point.getElementsByTagName('values')[0])
- p.coords =
self.__getListFloat(point.getElementsByTagName('solution'))
+ p.coords =
self.__getSplitCommaListFloat(point.getElementsByTagName('solution')[0])
self.__header__.problem.optimum.append(p)
bounds = probl.getElementsByTagName('bounds')[0]
mini = bounds.getElementsByTagName('minimums')[0]
for point in mini.getElementsByTagName('point'):
if point.nodeType == point.ELEMENT_NODE:
p = Point()
- p.coords =
self.__getListFloat(point.getElementsByTagName('solution'))
+ p.coords =
self.__getSplitCommaListFloat(point.getElementsByTagName('solution')[0])
self.__header__.problem.min_bound.append(p)
maxi = bounds.getElementsByTagName('maximums')[0]
for point in maxi.getElementsByTagName('point'):
if point.nodeType == point.ELEMENT_NODE:
p = Point()
- p.coords =
self.__getListFloat(point.getElementsByTagName('solution'))
+ p.coords =
self.__getSplitCommaListFloat(point.getElementsByTagName('solution')[0])
self.__header__.problem.max_bound.append(p)
except:
@@ -323,9 +353,13 @@
fd.close()
fd = open(fileOut, 'r')
- # to avoid bug during parsing
- fd.readline()
-
+ # read 1st line to avoid bug during parsing,
+ # and check that xml file was generated
+ if not 'xml-version="1.0"' in fd.readline():
+ intfc.log('ERROR : ometah failed to create XML\n')
+ print 'ERROR : see log file for details\n'
+ sys.exit()
+
parser = XMLParser(fd, intfc)
parser.readXml()
fd.close() # we don't need it anymore
@@ -365,7 +399,8 @@
intfc.plotValuesIterationsDistribHist(points, __HIST_BREAKS)
r.dev_off()
intfc.log('outputing results : plotValuesIterationsDistribHist(...) ...
OK\n')
-
+
+
# plotValues for each point
intfc.setBitmapOutput(filename = intfc.datedFileName('values', '.png'))
intfc.plotValuesIterationsGraph(points, 1)
@@ -384,6 +419,7 @@
intfc.plotValuesIterationsStdGraph(points, 10)
r.dev_off()
intfc.log('outputing results : plotValuesIterationsStdGraph(...) ...
OK\n')
+
def plotMultiRun(intfc, errorsList, valuesList, solutionsList):