Steven H. Rogers | 3 Nov 03:16
Favicon

Re: A proposed canonical structure for SimPy models

G'day Klaus:

I think this is a good organization and it would work for we.  For
large/complex models/experiments some sections might be separate files.

Regards,
Steve

Klaus Muller wrote:
> All,
> I have found it very useful to have the same structure with six sections for
> all my SimPy simulation programs:
> ## Model components
>     (Put all model classes/methods here)
> ## Model
>     (Put the model function here)
> ## Experiment data
>     (Give all model variables values here)
> ## Experiment
>     (Call the model function) 
> ## Analysis
>     (Analyze the data collected in experiment)
> ## Output
>     (Output the analysis results in textual or graphical form)
> 
> If a simulation program has model runs (experiments) using several data
> sets, the last four sections are repeated as many times as there are data
> sets.
> Such canonical structure makes it easy for the program developer to find his
> way in his own programs or those of others. 
(Continue reading)

Tony Vignaux | 3 Nov 03:49
Picon
Gravatar

Canonical SimPy program format

I have been converting a couple of the model programs in SimPy/SimPyModels to the suggested format.  Several of those models are exceedingly old. They were developed for reasons other than demonstrating good practice.  And some need to be sent to the Great Trash Bin in the sky.

So it is a good time to reformat them. I find the Klaus's suggested structure clear and useful. But I think it would benefit us all if others commented and if more suggestions for improvement came from the list.

Here is an example for you all to have a go at. This is the old MMC.py, the simulation of an M/M/c queue model. It is in CVS now but I include it here. On reflection, I think I would (1) have removed the trace statements in favour of importing SimPy.SimulationTrace as an option, (2) used something like "import random as ran " and then used " ran.expovariate()".

Don't hold back your comments, in favour or against: one of the benefits of Open Source is that Many Eyeballs make good code (maybe).

(Apologies if you get this more than once)


Tony

"""MMC.py

An M/M/c queue

Jobs arrive at random into a c-server queue with
exponential service-time distribution. Simulate to
determine the average  number and the average time
in the system.

- c = Number of servers = 3
- rate = Arrival rate = 2.0
- stime = mean service time = 1.0

"""
from SimPy.Simulation import *
from random import expovariate,seed

## Model components ------------------------

class Generator(Process):
    """ generates Jobs at random """

    def execute(self,maxNumber,rate,stime):
        ''' generate Jobs at exponential intervals '''
        for i in range(maxNumber):
            L = Job("Job "+`i`)
            activate(L,L.execute(stime),delay=0)
            yield hold,self,expovariate(rate)
 

class Job(Process):
    ''' Jobs request a gatekeeper and hold
        it for an exponential time '''
       
    NoInSystem=0
    def execute(self,stime):      
        arrTime=now()
        self.trace("Hello World")
        Job.NoInSystem +=1
        m.observe(Job.NoInSystem)
        yield request,self,server
        self.trace("At last    ")
        t = expovariate(1.0/stime)
        msT.observe(t)
        yield hold,self,t
        yield release,self,server
        Job.NoInSystem -=1
        m.observe(Job.NoInSystem)
        mT.observe(now()-arrTime)
        self.trace("Geronimo   ")
      
    def trace(self,message):
        FMT="%7.4f %6s %10s (%2d)"
        if TRACING:
            print FMT%(now(),self.name,message,Job.NoInSystem)

## Experiment data -------------------------

TRACING = False
c = 3           ## number of servers in M/M/c system
stime = 1.0     ## mean service time
rate  = 2.0     ## mean arrival rate
maxNumber= 1000
m   =Monitor()  ## monitor for the number of jobs
mT  =Monitor()  ## monitor for the time in system
msT =Monitor()  ## monitor for the generated service times

seed(333555777) ## seed for random numbers


server=Resource(capacity=c,name='Gatekeeper')


## Model/Experiment ------------------------------

initialize()
g = Generator('gen')
activate(g,g.execute(maxNumber=maxNumber,
                     rate=rate, stime=stime))
simulate(until=3000.0 )


## Analysis/output -------------------------

print "%2d servers, %6.4f arrival rate,%6.4f mean service time"%(c,rate,stime)
print "Average number in the system is %6.4f"%(m.timeAverage (),)
print "Average time in the system is   %6.4f"%(mT.mean(),)
print "Actual average service-time is  %6.4f"%(msT.mean(),)



--
Prof Tony  Vignaux
Victoria University of Wellington

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Simpy-users mailing list
Simpy-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simpy-users
Tony Vignaux | 3 Nov 05:15
Picon
Gravatar

Re: A proposed canonical structure for SimPy models

And we could also use Literate Programming (noweb, for example). The sections would fit in very well. I have used noweb a couple of times for simulation programs (mainly Simscript and ModSim but currently I am writing only small SimPy programs.

Tony

On 11/3/06, Steven H. Rogers <steve <at> shrogers.com> wrote:
G'day Klaus:

I think this is a good organization and it would work for we.  For
large/complex models/experiments some sections might be separate files.

Regards,
Steve

Klaus Muller wrote:
> All,
> I have found it very useful to have the same structure with six sections for
> all my SimPy simulation programs:
> ## Model components
>     (Put all model classes/methods here)
> ## Model
>     (Put the model function here)
> ## Experiment data
>     (Give all model variables values here)
> ## Experiment
>     (Call the model function)
> ## Analysis
>     (Analyze the data collected in experiment)
> ## Output
>     (Output the analysis results in textual or graphical form)
>
> If a simulation program has model runs (experiments) using several data
> sets, the last four sections are repeated as many times as there are data
> sets.
> Such canonical structure makes it easy for the program developer to find his
> way in his own programs or those of others.
> I also find that it is advisable to keep function model free of literal data
> and just use variables which are assigned their values in a set of
> experiment data. This keeps the model general and allows it to be used for
> any number of experiments (simulation runs), based on different experiment
> data sets.
> Similarly, all model components should be kept free of data by using
> variables which get their values from the experiment data, either directly
> or by parameter transmission from the model function.
>
> What do you think? Would this work for you? Does such structure help?
> Counter-proposals?
>
> I am looking forward to your feedback!
>
> Klaus
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Simpy-users mailing list
> Simpy-users <at> lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/simpy-users

--
Steven H. Rogers, Ph.D., steve <at> shrogers.com
Weblog: http://shrogers.com/weblog
"He who refuses to do arithmetic is doomed to talk nonsense."
-- John McCarthy



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Simpy-users mailing list
Simpy-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simpy-users



--
Prof Tony  Vignaux
Victoria University of Wellington
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Simpy-users mailing list
Simpy-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simpy-users
Klaus Muller | 3 Nov 12:47
Picon
Picon
Favicon

Re: A proposed canonical structure for SimPy models

Steven,
yes, I agree, in large programs, SimPy script sections often reside in separate files. I have thought about this and suggest e.g. the following structures:
 
Case A: The model components, a model and experiment data are defined in a script (say, centralserver.py). An experiment with the same model, but different experiment data is to be executed. I would then write a script with the following structure:
 
"""centralserverExtend.py
Run central server model with different parameters"""
## Model components, model ----------
import centralserver as cs
## Experiment data -------------------------
cs.cpu  = cs.Resource(name='cpu')
cs.disk = cs.Resource(name='disk')
cs.Nterminals = 9       ## Number of terminals = Tasks
cs.pDisk    = 0.8       ## prob. of going to disk
cs.MeanThinkTime = 10.0 ## seconds
cs.MeanCPUTime = 1.0    ## seconds
cs.MeanDiskTime = 1.39  ## seconds
 
cs.ran.seed(123)
cs.MaxrunTime = 20000.0
cs.MaxCompletions = 100
 
## Experiment
result=cs.main()
## Analysis/output -------------------------
print '%7.4f: CPU rate = %7.4f tasks per second'%result
 
Variations are possible where additional or different model components and a new model would be defined in the importing script.
 
Case B: The model components, a model, an experiment, analysis and output are programmed in a script. The experiment data is contained in a Python script, given as a parameter to the script call. Then the structure could look like this:
 
""" centralserverExtend1.py
"""
from SimPy.Simulation import *
## from SimPy.SimulationTrace import *
import random as ran
 
## Model components ------------------------
 
class Task(Process):
    """ A computer  task  requires at least
    one use of the CPU and possibly accesses to a
    disk drive."""
    completed = 0
    rate = 0.0
    def execute(self,maxCompletions):
        while Task.completed < maxCompletions:
            thinktime = ran.expovariate(1.0/MeanThinkTime)
            yield hold,self,thinktime
            yield request,self,cpu
            CPUtime=ran.expovariate(1.0/MeanCPUTime)
            yield hold,self,CPUtime
            yield release,self,cpu
            while ran.random() < pDisk:
                yield request,self,disk
                disktime=ran.expovariate(1.0/MeanDiskTime)
                yield hold,self,disktime
                yield release,self,disk
                yield request,self,cpu
                CPUtime=ran.expovariate(1.0/MeanCPUTime)
                yield hold,self,CPUtime
                yield release,self,cpu
            Task.completed += 1
            Task.rate = Task.completed/float(now())           
   
## Model ------------------------------
def main():
   initialize()
   for i in range(Nterminals):    
       t = Task(name="task"+`i`)
       activate(t,t.execute(MaxCompletions))
   simulate(until = MaxrunTime)
   return (now(),Task.rate)
 
## Experiment data -------------------------
execfile(sys.argv[1])
## Experiment
result=main()
## Analysis/output -------------------------
print '%7.4f: CPU rate = %7.4f tasks per second'%result
 
with the data file being e.g.
 
"""centralserver.dat
Experiment data file for centralserverExtend1.py model"""
cpu  = Resource(name='cpu')
disk = Resource(name='disk')
Nterminals = 3       ## Number of terminals = Tasks
pDisk    = 0.8       ## prob. of going to disk
MeanThinkTime = 10.0 ## seconds
MeanCPUTime = 1.0    ## seconds
MeanDiskTime = 1.39  ## seconds
 
ran.seed(111113333)
MaxrunTime = 20000.0
MaxCompletions = 100
 
So, I believe, the proposed structure can also deal with larger models where the various parts are split over different files.
 
Tony,
your thoughts re Literate Programming sound very interesting. I have no experience in that area (does that make me illiterate?). Could you give us an example, even if it is not in SimPy/Python?
 
Klaus Muller

From: simpy-users-bounces <at> lists.sourceforge.net [mailto:simpy-users-bounces <at> lists.sourceforge.net] On Behalf Of Tony Vignaux
Sent: Friday, November 03, 2006 5:15 AM
To: steve <at> shrogers.com
Cc: simpy-users <at> lists.sourceforge.net; Klaus Muller
Subject: Re: [Simpy-users] A proposed canonical structure for SimPy models

And we could also use Literate Programming (noweb, for example). The sections would fit in very well. I have used noweb a couple of times for simulation programs (mainly Simscript and ModSim but currently I am writing only small SimPy programs.

Tony

On 11/3/06, Steven H. Rogers <steve <at> shrogers.com> wrote:
G'day Klaus:

I think this is a good organization and it would work for we.  For
large/complex models/experiments some sections might be separate files.

Regards,
Steve

Klaus Muller wrote:
> All,
> I have found it very useful to have the same structure with six sections for
> all my SimPy simulation programs:
> ## Model components
>     (Put all model classes/methods here)
> ## Model
>     (Put the model function here)
> ## Experiment data
>     (Give all model variables values here)
> ## Experiment
>     (Call the model function)
> ## Analysis
>     (Analyze the data collected in experiment)
> ## Output
>     (Output the analysis results in textual or graphical form)
>
> If a simulation program has model runs (experiments) using several data
> sets, the last four sections are repeated as many times as there are data
> sets.
> Such canonical structure makes it easy for the program developer to find his
> way in his own programs or those of others.
> I also find that it is advisable to keep function model free of literal data
> and just use variables which are assigned their values in a set of
> experiment data. This keeps the model general and allows it to be used for
> any number of experiments (simulation runs), based on different experiment
> data sets.
> Similarly, all model components should be kept free of data by using
> variables which get their values from the experiment data, either directly
> or by parameter transmission from the model function.
>
> What do you think? Would this work for you? Does such structure help?
> Counter-proposals?
>
> I am looking forward to your feedback!
>
> Klaus
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Simpy-users mailing list
> Simpy-users <at> lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/simpy-users

--
Steven H. Rogers, Ph.D., steve <at> shrogers.com
Weblog: http://shrogers.com/weblog
"He who refuses to do arithmetic is doomed to talk nonsense."
-- John McCarthy



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Simpy-users mailing list
Simpy-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simpy-users



--
Prof Tony  Vignaux
Victoria University of Wellington
Attachment (smime.p7s): application/x-pkcs7-signature, 3936 bytes
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Simpy-users mailing list
Simpy-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simpy-users
Steven H. Rogers | 3 Nov 14:30
Favicon

Re: A proposed canonical structure for SimPy models

Klaus:

Your structure does indeed handle larger projects nicely.  Your use cases 
cover the requirements that I had in mind.

The literate programming that Tony refers to is a methodology developed by 
Donald Knuth, et. al. (http://www-cs-faculty.stanford.edu/~knuth/cweb.html) 
which inverts the common practice of embedding comments in program code so 
that the executable code is embedded in the documentation.  Markup allows 
extraction of the program code for compilation or interpretation and 
generation of documentation in various formats.

Leo (http://webpages.charter.net/edreamleo/front.html), is an outline editor 
for literate programming.  The current version is written in Python, though 
it supports other languages.  It's really quite nice, though the generated 
Python code contains a small about of outline structural information 
embedded in comments.  These generated program files may be edited with 
other editors, but in a multi-programmer environment, any programmers not 
using Leo need to avoid mucking with these comments.

Your proposed structure maps nicely to a Leo project.

Regards,
Steve
####################

Klaus Muller wrote:
> Steven,
> yes, I agree, in large programs, SimPy script sections often reside in 
> separate files. I have thought about this and suggest e.g. the following 
> structures:
>  
> Case A: The model components, a model and experiment data are defined in 
> a script (say, centralserver.py). An experiment with the same model, but 
> different experiment data is to be executed. I would then write a script 
> with the following structure:
>  
> """centralserverExtend.py
> Run central server model with different parameters"""
> ## Model components, model ----------
> import centralserver as cs
> ## Experiment data -------------------------
> cs.cpu  = cs.Resource(name='cpu')
> cs.disk = cs.Resource(name='disk')
> cs.Nterminals = 9       ## Number of terminals = Tasks
> cs.pDisk    = 0.8       ## prob. of going to disk
> cs.MeanThinkTime = 10.0 ## seconds
> cs.MeanCPUTime = 1.0    ## seconds
> cs.MeanDiskTime = 1.39  ## seconds
>  
> cs.ran.seed(123)
> cs.MaxrunTime = 20000.0
> cs.MaxCompletions = 100
>  
> ## Experiment
> result=cs.main()
> ## Analysis/output -------------------------
> print '%7.4f: CPU rate = %7.4f tasks per second'%result
>  
> Variations are possible where additional or different model components 
> and a new model would be defined in the importing script.
>  
> Case B: The model components, a model, an experiment, analysis and 
> output are programmed in a script. The experiment data is contained in a 
> Python script, given as a parameter to the script call. Then the 
> structure could look like this:
>  
> """ centralserverExtend1.py
> """
> from SimPy.Simulation import *
> ## from SimPy.SimulationTrace import *
> import random as ran
>  
> ## Model components ------------------------
>  
> class Task(Process):
>     """ A computer  task  requires at least
>     one use of the CPU and possibly accesses to a
>     disk drive."""
>     completed = 0
>     rate = 0.0
>     def execute(self,maxCompletions):
>         while Task.completed < maxCompletions:
>             thinktime = ran.expovariate(1.0/MeanThinkTime)
>             yield hold,self,thinktime
>             yield request,self,cpu
>             CPUtime=ran.expovariate(1.0/MeanCPUTime)
>             yield hold,self,CPUtime
>             yield release,self,cpu
>             while ran.random() < pDisk:
>                 yield request,self,disk
>                 disktime=ran.expovariate(1.0/MeanDiskTime)
>                 yield hold,self,disktime
>                 yield release,self,disk
>                 yield request,self,cpu
>                 CPUtime=ran.expovariate(1.0/MeanCPUTime)
>                 yield hold,self,CPUtime
>                 yield release,self,cpu
>             Task.completed += 1
>             Task.rate = Task.completed/float(now())           
>    
> ## Model ------------------------------
> def main():
>    initialize()
>    for i in range(Nterminals):    
>        t = Task(name="task"+`i`)
>        activate(t,t.execute(MaxCompletions))
>    simulate(until = MaxrunTime)
>    return (now(),Task.rate)
>  
> ## Experiment data -------------------------
> execfile(sys.argv[1])
> ## Experiment
> result=main()
> ## Analysis/output -------------------------
> print '%7.4f: CPU rate = %7.4f tasks per second'%result
>  
> with the data file being e.g.
>  
> """centralserver.dat
> Experiment data file for centralserverExtend1.py model"""
> cpu  = Resource(name='cpu')
> disk = Resource(name='disk')
> Nterminals = 3       ## Number of terminals = Tasks
> pDisk    = 0.8       ## prob. of going to disk
> MeanThinkTime = 10.0 ## seconds
> MeanCPUTime = 1.0    ## seconds
> MeanDiskTime = 1.39  ## seconds
>  
> ran.seed(111113333)
> MaxrunTime = 20000.0
> MaxCompletions = 100
>  
> So, I believe, the proposed structure can also deal with larger models 
> where the various parts are split over different files.
>  
> Tony,
> your thoughts re Literate Programming sound very interesting. I have no 
> experience in that area (does that make me illiterate?). Could you give 
> us an example, even if it is not in SimPy/Python?
>  
> Klaus Muller
> 
>     ------------------------------------------------------------------------
>     *From:* simpy-users-bounces <at> lists.sourceforge.net
>     [mailto:simpy-users-bounces <at> lists.sourceforge.net] *On Behalf Of
>     *Tony Vignaux
>     *Sent:* Friday, November 03, 2006 5:15 AM
>     *To:* steve <at> shrogers.com
>     *Cc:* simpy-users <at> lists.sourceforge.net; Klaus Muller
>     *Subject:* Re: [Simpy-users] A proposed canonical structure for
>     SimPy models
> 
>     And we could also use Literate Programming (noweb, for example). The
>     sections would fit in very well. I have used noweb a couple of times
>     for simulation programs (mainly Simscript and ModSim but currently I
>     am writing only small SimPy programs.
> 
>     Tony
> 
>     On 11/3/06, *Steven H. Rogers* <steve <at> shrogers.com
>     <mailto:steve <at> shrogers.com>> wrote:
> 
>         G'day Klaus:
> 
>         I think this is a good organization and it would work for we.  For
>         large/complex models/experiments some sections might be separate
>         files.
> 
>         Regards,
>         Steve
> 
>         Klaus Muller wrote:
>          > All,
>          > I have found it very useful to have the same structure with
>         six sections for
>          > all my SimPy simulation programs:
>          > ## Model components
>          >     (Put all model classes/methods here)
>          > ## Model
>          >     (Put the model function here)
>          > ## Experiment data
>          >     (Give all model variables values here)
>          > ## Experiment
>          >     (Call the model function)
>          > ## Analysis
>          >     (Analyze the data collected in experiment)
>          > ## Output
>          >     (Output the analysis results in textual or graphical form)
>          >
>          > If a simulation program has model runs (experiments) using
>         several data
>          > sets, the last four sections are repeated as many times as
>         there are data
>          > sets.
>          > Such canonical structure makes it easy for the program
>         developer to find his
>          > way in his own programs or those of others.
>          > I also find that it is advisable to keep function model free
>         of literal data
>          > and just use variables which are assigned their values in a
>         set of
>          > experiment data. This keeps the model general and allows it
>         to be used for
>          > any number of experiments (simulation runs), based on
>         different experiment
>          > data sets.
>          > Similarly, all model components should be kept free of data
>         by using
>          > variables which get their values from the experiment data,
>         either directly
>          > or by parameter transmission from the model function.
>          >
>          > What do you think? Would this work for you? Does such
>         structure help?
>          > Counter-proposals?
>          >
>          > I am looking forward to your feedback!
>          >
>          > Klaus
>          >
>          >
>          >
>         ------------------------------------------------------------------------
> 
>          >
>          >
>         -------------------------------------------------------------------------
>          > Using Tomcat but need to do more? Need to support web
>         services, security?
>          > Get stuff done quickly with pre-integrated technology to make
>         your job easier
>          > Download IBM WebSphere Application Server v.1.0.1 based on
>         Apache Geronimo
>          >
>         http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>         <http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642>
>          >
>          >
>          >
>         ------------------------------------------------------------------------
>          >
>          > _______________________________________________
>          > Simpy-users mailing list
>          > Simpy-users <at> lists.sourceforge.net
>         <mailto:Simpy-users <at> lists.sourceforge.net>
>          > https://lists.sourceforge.net/lists/listinfo/simpy-users
> 
>         --
>         Steven H. Rogers, Ph.D., steve <at> shrogers.com
>         <mailto:steve <at> shrogers.com>
>         Weblog: http://shrogers.com/weblog
>         "He who refuses to do arithmetic is doomed to talk nonsense."
>         -- John McCarthy
> 
> 
> 
>         -------------------------------------------------------------------------
> 
>         Using Tomcat but need to do more? Need to support web services,
>         security?
>         Get stuff done quickly with pre-integrated technology to make
>         your job easier
>         Download IBM WebSphere Application Server v.1.0.1 based on
>         Apache Geronimo
>         http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>         <http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642>
>         _______________________________________________
>         Simpy-users mailing list
>         Simpy-users <at> lists.sourceforge.net
>         <mailto:Simpy-users <at> lists.sourceforge.net>
>         https://lists.sourceforge.net/lists/listinfo/simpy-users
>         <https://lists.sourceforge.net/lists/listinfo/simpy-users>
> 
> 
> 
> 
>     -- 
>     Prof Tony  Vignaux
>     Victoria University of Wellington 

--

-- 
Steven H. Rogers, Ph.D., steve <at> shrogers.com
Weblog: http://shrogers.com/weblog
"He who refuses to do arithmetic is doomed to talk nonsense."
-- John McCarthy

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
Anil Shrestha | 15 Nov 07:14
Picon

error in search in 'my notes'. Help

I am seeing this error message when I search on 'my notes'.  I appreciate any help or suggestion.  Thank you.

[ServletException in:/WEB-INF/component/note/NoteSearchBody.jsp] Attempt to convert String "2006-10-30" to type "java.util.Date", but there is no PropertyEditor for that type' javax.servlet.jsp.el.ELException: Attempt to convert String "2006-10-30" to type "java.util.Date", but there is no PropertyEditor for that type at org.apache.commons.el.Logger.logError(Logger.java:481) at org.apache.commons.el.Logger.logError(Logger.java:498) at org.apache.commons.el.Logger.logError(Logger.java:566) at org.apache.commons.el.Coercions.coerceToObject(Coercions.java:769) at org.apache.commons.el.Coercions.coerce(Coercions.java:343) at org.apache.commons.el.ExpressionEvaluatorImpl.convertToExpectedType(ExpressionEvaluatorImpl.java:345) at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:267) at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190) at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:899) at org.apache.jsp.WEB_002dINF.component.note.NoteSearchBody_jsp._jspx_meth_fmt_formatDa

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Simpy-users mailing list
Simpy-users <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simpy-users

Gmane