|
@@ -1,3 +1,5 @@
|
|
|
+<dtml-var simple_html_header>
|
|
|
+
|
|
|
<html>
|
|
|
<head><title>DEVS Assignment</title></head>
|
|
|
<body>
|
|
@@ -85,7 +87,7 @@ The specification of the semantics of the Atomic DEVS blocks is entirely determi
|
|
|
</p>
|
|
|
|
|
|
<h3>Coupled DEVS</h3>
|
|
|
-<p>The system as a whole is modeled as a Coupled DEVS block. Many of its parameters are passed as-is to the underlying Atomic DEVS blocks, such as:
|
|
|
+<p>The system as a whole is modeled as a Coupled DEVS block. Its parameters are mostly passed as-is to the underlying Atomic DEVS blocks. They are:
|
|
|
<ul>
|
|
|
<li><b>gen_num (int)</b> -> Generator.</li>
|
|
|
<li><b>gen_rate (float)</b> -> Generator.</li>
|
|
@@ -139,20 +141,67 @@ The specification of the semantics of the Atomic DEVS blocks is entirely determi
|
|
|
<li><tt>environment.py</tt> Contains implementations of the Generator, Sink and Ship types. You must not edit this file.</li>
|
|
|
</ul>
|
|
|
</li>
|
|
|
+ <li>Write a report, where you:
|
|
|
+ <ul>
|
|
|
+ <li>explain and motivate the interfaces/protocol of the AtomicDEVS blocks</li>
|
|
|
+ <li>show the plotted results</li>
|
|
|
+ <li>interpret the plotted results</li>
|
|
|
+ </ul>
|
|
|
+ </li>
|
|
|
+ <li>Submit via BlackBoard, a ZIP file, containing:
|
|
|
+ <ul>
|
|
|
+ <li>Your code (only the <tt>assignment</tt> directory)</li>
|
|
|
+ <li>Your report (PDF)</li>
|
|
|
+ <li>The generated CSV- and SVG-files</li>
|
|
|
+ </ul>
|
|
|
+ </li>
|
|
|
</ol>
|
|
|
|
|
|
-<h2>Attention!</h2>
|
|
|
-<p>You must stick to the rules of DEVS:</p>
|
|
|
+<h2 id="attention">Attention!</h2>
|
|
|
+<p>You <b><u><i>must</i></u></b> stick to the rules of DEVS:</p>
|
|
|
<ul>
|
|
|
<li>The functions <tt>timeAdvance</tt> and <tt>outputFnc</tt> are purely <em>getters</em>! They must not mutate the DEVS state, or any variable, anywhere.</li>
|
|
|
<li>The functions <tt>extTransition</tt> and <tt>intTransition</tt> may mutate <em>ONLY</em> the DEVS state.</li>
|
|
|
</ul>
|
|
|
<p>Any violation of these rules results in an incorrect solution. Points will be subtracted.</p>
|
|
|
|
|
|
+<h2>Coding Conventions</h2>
|
|
|
+
|
|
|
+<p>Please follow these coding conventions:</p>
|
|
|
+<ul>
|
|
|
+ <li>Write your AtomicDEVS methods always in the following order:
|
|
|
+ <ul>
|
|
|
+ <li>extTransition</li>
|
|
|
+ <li>timeAdvance</li>
|
|
|
+ <li>outputFnc</li>
|
|
|
+ <li>intTransition</li>
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ <p>This reflects the order in which the methods are called by the simulator:</p>
|
|
|
+ <ul>
|
|
|
+ <li>extTransition always has highest priority (can interrupt anything)</li>
|
|
|
+ <li>timeAdvance is called before outputFnc</li>
|
|
|
+ <li>outputFnc is called right before intTransition</li>
|
|
|
+ </ul>
|
|
|
+ </li>
|
|
|
+ <li>Input/output port attributes start with 'in_' and 'out_'</li>
|
|
|
+</ul>
|
|
|
+
|
|
|
+<h2>Troubleshooting</h2>
|
|
|
+
|
|
|
+<p>Common mistakes include:
|
|
|
+<ul>
|
|
|
+ <li>did you forget to return <tt>self.state</tt> from intTransition or extTransition ?</li>
|
|
|
+ <li>did you accidentally write to <tt>self.x</tt> instead of <tt>self.state.x</tt> ?</li>
|
|
|
+ <li>did you modify the state in timeAdvance or outputFnc ? (<a href="#attention">NOT ALLOWED!!</a>)</li>
|
|
|
+</ul>
|
|
|
+
|
|
|
<h2>Extra Material</h2>
|
|
|
<ul>
|
|
|
<li>This assignment was inspired by the queueuing example, which you can in <tt>examples/queueing</tt>.</li>
|
|
|
</ul>
|
|
|
|
|
|
</body>
|
|
|
-</html>
|
|
|
+</html>
|
|
|
+
|
|
|
+<dtml-var standard_html_footer>
|