kernelpackage supports clustered hierarchical graphs, which are collections of entities and relations between those entities. Its
actorpackage extends the kernel so that entities have functionality and can communicate via the relations. Its domains extend the actor package by imposing models of computation on the interaction between entities. Examples of models of computation include discrete-event systems, dataflow, process networks, synchronous/reactive systems, and communicating sequential processes.
Ptolemy II includes a number of support packages, such as
data, providing a type system, data encapsulation and an
plot, providing visual display of data,
math, providing matrix and vector math and signal
processing functions, and
graph, providing graph-theoretic manipulations.
The Ptolemy Book describes the Ptolemy II design and the implementation of the Java classes.
Building Graphical Models describes how to use Vergil.
Ptolemy II includes a growing suite of domains, each of which realizes a model of computation. It also includes a component library, in which most components are domain polymorphic, in that they can operate in several of the domains. Most are also data polymorphic, in that they operate on several data types. The domains that have been implemented are listed below.
Domains that are reasonably mature:
The core of Ptolemy II 10.0.1 is 100% Java, so it should work on any platform that has JDK 1.6 or later.
We developed Ptolemy II 10.0.1 under Mac OS X, Windows and Linux with JDK1.7.0_25 and JDK1.8.0_11 Under MacOS 10.7.5, we were also able to use Java 1.6.0_26.
Ptolemy II 10.0 will not compile under Java 1.3 because we use the java.lang.URI class, which is present only in Java 1.4 and later. JDK 1.5 or later is required so that these packages can use generics: backtrack, ptalon and others. JDK 1.6 is required because ptdb uses javax.swing.GroupLayout and because of other changes.
In the past, Ptolemy II has been compiled and run under IBM JDK 1.6.0. However, the IBM JDK has not be tried recently. There are the following limitations under IBM JDK 1.6.0
Ptolemy II 10.0 is the first complete release since Ptolemy II 8.0 and thus includes many changes.
The key driving force for the release is to be a companion to the Ptolemy Book:
Claudius Ptolemaeus, Editor, "System Design, Modeling, and Simulation Using Ptolemy II", Ptolemy.org, 2014. (included in the release as
$PTII/doc/books/systems/PtolemyII_DigitalV1_02.pdf, but not present in the SVN developer tree.)
Below are the highlights of this release.
Ptolemy II 10.0 includes the "cg" code generator at
We took the lessons learned from
$PTII/ptolemy/codegen and applied them to cg. In particular, cg more easily supports multiple backends with less code duplication. The cg code generator is under active development, we are working on code generation for large systems. For details about cg, see
Developers: Christopher Brooks, Dai Bui, Bert Rodiers, Stavros Tripakis
The Building Controls Virtual Test Bed (BCVTB) website states:
"The Building Controls Virtual Test Bed (BCVTB) is a software environment that allows expert users to couple different simulation programs for co-simulation, and to couple simulation programs with actual hardware. For example, the BCVTB allows to simulate a building in EnergyPlus and the HVAC and control system in Modelica, while exchanging data between the software as they simulate. The BCVTB is based on the Ptolemy II software environment. The BCVTB allows expert users of simulation to expand the capabilities of individual programs by linking them to other programs. Due to the different programs that may be involved in distributed simulation, familiarity with configuring programs is essential."
The BCVTB demos use external tools, so they are not likely to run, though the models are browsable.
The Internet of Things is the idea that everyday objects are uniquely addressable and have a representation in a structure similar to the Internet.
Comparing and contrasting IoT with Cyber-physical Systems (CPS) is useful. The key thing with CPS is the interaction between the dynamics of the physical world and the dynamics of software and networks. The focus of IoT is on the information flow between physical devices and network services. In the Cyber-Physical Systems Concept Map, IoT overlaps with wireless sensing and actuating, though IoT is not necessarily wireless.
The name "Ptango" refers to the fact that with the Internet of Things, it takes more than two to tango.
The research goal of Ptango is to invent a Model of Computation (MoC) for the Internet of Things that assigns operational semantics to the composition of Things.
Applications and features of interest include:
Ptango is using Representational state transfer (RESTful) interfaces like http, which is stateless, where all the state is carried in the request and reply. Via RESTful interfaces, our work is focusing on a subset of IoT known as the Web of Things.
See Code Generation (CG) Demonstrations above.
See Ontologies Demonstrations above.
ant. Eclipse and ant are preferred over make because make is slower. To build using ant, see
$PTII/pt-modules: Support for building OSGi modules of a subset of Ptolemy II: Hallvard Trætteberg
Patricia Derler, Chris Shaver, and Edward Lee have developed a starting point for a much smarter way of handling arrays in dataflow models.
In particular, there is now in the Array library an ArrayUpdate actor, whose output is the same array as its input except that one element is replaced with a new value. Please try it out for the radar model.
The key here is that this is done efficiently for large arrays. The input array does not get copied. Instead, the output array references the input array and encodes the diff. The input array is unchanged, and hence may be used safely by other actors to which it is destined without introducing nondeterminacy.
This is only a starting point because there are many other array operations that should be similarly encoded as diffs. There is a bit of work to be done here, and we need to make sure to be measuring performance effects.
The current implementation has the interesting property that makes copying arrays unnecessary most of the time. However, it has the unfortunate side effect of making copying arrays more expensive (we can no longer use the low-level System.arraycopy() mechanism in Java). It would be interesting to do a systematic performance evaluation of this. I believe that if we combine this method with a PN director and a manycore machine, that we might get good utilization of parallelism on the machine.
$PTII/ptdb(Not compiled in the release because it uses Oracle GPL-like code)
$PTII/ptserver(Not compiled in the release because it uses Oracle GPL-like code)
$PTII/ptolemy/plotto support displaying on a remote machine.
PDFAttribute to the Utilities->Decorative library in Vergil that allows you to include PDF in a Vergil diagram.
PDFAttribute can be used to include Latex-formatted equations in Vergil diagrams, and get full print resolution when printing to PDF for use in papers, books, etc.
PDFAttribute uses uses pdf-renderer, obtainable from https://pdf-renderer.dev.java.net/. This is a LGPL'd open source product from Sun.
To use PDFAttribute and create equations, we use LatexIt (see http://www.apple.com/downloads/macosx/math_science/latexit.html) for the Mac version) From LatexIt, we can create a PDF file with an equation.
Then drag into my Vergil diagram a PDFAttribute, or select Edit Custom Icon and drag in a PDFIcon. Double click on that to select the PDF file.
The Petrinet model computation was rewritten by Zach Ezzell of the University of Florida.
$PTII/ptolemy/domains/scr- The Software Cost Reduction model of computation: Patricia Derler
$PTII/org/ptolemy/machineLearning/hmm- Hidden Markov Modeling
$PTII/org/ptolemy/machineLearning/hmmAOM- Hidden Markov Modeling: Aspect-Oriented Modeling
$PTII/org/ptolemy/machineLearning/particleFilter- Particle Filtering
$PTII/org/ptolemy/machineImprovisation- Machine Improvisation
For the current list of bugs, see Ptolemy II Bugs
and Kepler Bugs.
A few features and classes were removed outright.
Most models developed under Ptolemy II 1.0.1, 2.0.1, 3.0.2, 4.0.1, 5.0.2 or HyVisual 2.2-beta, 3.0, 4.0.1, 5.0.1, 6.0.2, 7.0.1 and 8.0.1 should run under Ptolemy II 10.0.1
The MoMLParser includes a list of backward compatibility filters that make certain changes on models when read, handling such issues as actors being moved or renamed and parameter names being changed. The filters themselves are defined in ptolemy.moml.filter. If you have developed your own actors under earlier versions of Ptolemy II by writing your own Java files, you should recompile all your java code with the new release. In theory, copying the .class files should work, but recompiling is safer.
Features that were new in previous Ptolemy II releases
Version 10.0.1 has the following limitations:
ptII10.0.1.src.tar.gz) requires GNU tar or WinZip. Solaris 2.5.1 tar will fail to untar this file with a checksum error because the pathnames are longer than 100 characters.
Note further that some of the .class names are longer than 31 characters, which may cause problems when downloading zip files on the Macintosh and using Stuffit.
#in_browser, then Ptolemy II will invoke the User's web browser. Unfortunately, this does not always work, especially under Windows. The workaround is to exit Netscape and let Ptolemy II start up your browser for you.
vergil.jnlpfile has spaces in it. The workaround is to place your Ptolemy II tree in a directory that does not have spaces in the path name if you plan on using Web Start.
ptolemy.kernel.util.IllegalActionException: The file 'System.in' does not have any data. in .ReadStdIn.LineReader at ptolemy.actor.lib.io.LineReader._openAndReadFirstTwoLines(LineReader.java:344) at ptolemy.actor.lib.io.LineReader.fire(LineReader.java:225)
ptolemy.kernel.util.IllegalActionException: Unable to login to XMPP server. in .OccupancyAlert.XMPPGateway Because: SASL authentication DIGEST-MD5 failed: not-authorizedwith the server up, the message is:
ptolemy.kernel.util.IllegalActionException: Error evaluating expression: "http://localhost:" + port + "/simulator#in_browser" in .OccupancyAlert.link Because: Error evaluating expression: WebServer.getAttribute("deployedPort").getToken().intValue() in .OccupancyAlert.port Because: The object on which method "getToken" is invoked on is null, but the method is not found or is not static. in .OccupancyAlert.link Because: Error evaluating expression: "http://localhost:" + port + "/simulator#in_browser" in .OccupancyAlert.link Because: Error evaluating expression: WebServer.getAttribute("deployedPort").getToken().intValue() in .OccupancyAlert.port Because: The object on which method "getToken" is invoked on is null, but the method is not found or is not static. at ptolemy.data.expr.Variable.validate(Variable.java:1532)
There are several known problems:
The PN domain documents that it locally handles mutations. However, this is currently not true in the implementation. For the basic PN model, this doesn't really matter, since mutations happen pretty much the same as they would otherwise. (i.e. they are non-deterministic in when they execute) However, for timed PN models, there is actually some expressiveness lost, since timed PN models can locally execute mutations deterministically.
Embedding a PN typed composite actor inside a non-process top level such as DE does not work. In fact embedding a process domain inside a non-process domain is likely to have problems. Profess Lee wrote:
Yes, it looks as if the code is designed so that process domains (PN, CSP) can only be used within process domains. I'm not sure to what extent this is a limitation of the process domains vs. a semantic problem. What would PN mean within DE? Since PN has no well-defined notion of a "firing", how would you assign time stamps to the outputs of a PN actor? By default in DE, the time stamps of the outputs of an actor match those of the inputs that triggered the firing. There is no such notion in PN.
Below are some of the limitations of Vergil, the Ptolemy II Graphical User Interface.
export JAVAFLAGS=-Dsun.java2d.print.pipeline=pdl vergilThen edit the file by hand in Illustrator to add the transparency back in.
For limitations discovered after the release, see the Ptolemy II 10.0.1 website
Last Updated: $Date: 2014-12-16 13:52:11 -0800 (Tue, 16 Dec 2014) $