{"data":{"markdownRemark":{"html":"<p>Annotations are used to mark fields in the model. This is important to identify the model as a specific type so that the Simudyne SDK has knowledge of these fields when running the model.</p>\n<h2 id=\"modelsettings\"><a href=\"#modelsettings\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>@ModelSettings</h2>\n<p><code class=\"language-text\">ModelSettings</code> is an optional annotation that allows you to set a number of configuration parameters, such as the default time settings.</p>\n<p>Optional <code class=\"language-text\">ModelSettings</code> parameters:</p>\n<ul>\n<li><strong>id</strong> - Setting an id for a model is useful when there are multiple models running. Default value is <code class=\"language-text\">new_model</code></li>\n<li><strong>start</strong> - Start time for the model time to commence at. Default value is <code class=\"language-text\">2018-01-01T00:00:00Z</code>. If set, the string must represent a valid date-time that will be parsed using <a href=\"https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html\">DateTimeFormatter</a></li>\n<li><strong>timeStep</strong> - The number of timeUnits between every model step/tick. Default value is <code class=\"language-text\">1</code></li>\n<li><strong>timeUnit</strong> - The base timeUnit for the timeSteps to occur in. Default value is <code class=\"language-text\">MONTHS</code></li>\n<li><strong>ticks</strong> - The default number of ticks/runs for the model to run. Default value is <code class=\"language-text\">60</code></li>\n<li><strong>macroStep</strong> - The number of steps occurring in a <code class=\"language-text\">macroStep</code>. Default value is <code class=\"language-text\">10</code>. Macro steps will appear on the console as an option that users can click to step forward x amount of ticks/steps.</li>\n</ul>\n<p>MacroStep of 10 - used to step forward 10 steps/ticks.</p>\n<div class=\"tick bar\">\n<p>\n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; padding: 20px; max-width: 353px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 20.679886685552407%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsSAAALEgHS3X78AAAAdElEQVQY05VP2wrFIAzz//9TFG+Iooi3jAgb7OWMUyghtE1SMcZACAFaa0gpYYzB3hv/Vu8dKSUIkjknvPdwzkEp9QgSv3qtdXaJR7C1Bmstaq3IOb9cmZ5zLv9q3vEzomC6GOMhdLgd7+QU/RIspZwPeX8BfPg5xlCMJiIAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <picture>\n        <source\n          srcset=\"/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-7049e.webp 173w,\n/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-f6023.webp 345w,\n/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-68d26.webp 353w\"\n          sizes=\"(max-width: 353px) 100vw, 353px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-533f0.png 173w,\n/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-bdb1a.png 345w,\n/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-438cb.png 353w\"\n          sizes=\"(max-width: 353px) 100vw, 353px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n          src=\"/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-438cb.png\"\n          alt=\"step size 2 1\"\n          title=\"\"\n          src=\"/static/step_size_2_1-13382f0b3518513ea0679fb12686a29b-438cb.png\"\n        />\n      </picture>\n      </span>\n  </span>\n  </p>\n</div>\n  <p class=\"code-header\">ModelSettings.Java</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyModel</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">AgentBasedModel</span><span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>GlobalState<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span>\n<span class=\"token annotation punctuation\">@ModelSettings</span><span class=\"token punctuation\">(</span>macroStep <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> timeUnit <span class=\"token operator\">=</span> <span class=\"token string\">\"MONTHS\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">CreditCard</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">Model</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"constant\"><a href=\"#constant\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>@Constant</h2>\n<p>Fields can be marked as <code class=\"language-text\">Constant</code> to highlight that this field is available for configuration before <code class=\"language-text\">setup()</code> has been called on the model. <code class=\"language-text\">Constant</code> is useful for configurable parameters that will be used during the model setup such as the number of agents.</p>\n<p><code class=\"language-text\">name</code> can be passed as an optional parameter to the constant annotation to set a human-friendly name for the input field in the console. If not set, the name of the field will be used.</p>\n  <p class=\"code-header\">Constant.Java</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">CreditCard</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">Model</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token annotation punctuation\">@Constant</span><span class=\"token punctuation\">(</span>name <span class=\"token operator\">=</span> <span class=\"token string\">\"Initial Balance\"</span><span class=\"token punctuation\">)</span>\n  <span class=\"token keyword\">public</span> <span class=\"token keyword\">long</span> initialBalance <span class=\"token operator\">=</span> <span class=\"token number\">400</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">setup</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// set balance to value of initialBalance</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>  </code></pre></div>\n<p>Console view of constant before setup (value can be changed).</p>\n<div class=\"constant field\">\n<p>\n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block; padding: 20px; max-width: 325px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 34.76923076923077%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAAAqElEQVQoz42RUQuEIBCE/f+/sIfAJ/VBIaiM1GruZknouuNSGHZz62tGVc4Z3ntordH3Pbquk/44DnCx1r5lqdqUUrAsC6ZpQozxC1Sfn6TmeYZzDiEEgX0A3nUYBpnv+/6obdugUkoYxxEE0+HdzbquMm8BUoofkczIrARcz4/78vfTwT8JkABGMsbI5VhrZViBPAamYC8uWO869yXyr5u6OmyNSvH9F+pbJmc4VzTKAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <picture>\n        <source\n          srcset=\"/static/constant_2_1-edddf08ef01d22ef936cca7f84601379-29416.webp 173w,\n/static/constant_2_1-edddf08ef01d22ef936cca7f84601379-f56e9.webp 325w\"\n          sizes=\"(max-width: 325px) 100vw, 325px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/constant_2_1-edddf08ef01d22ef936cca7f84601379-a8cac.png 173w,\n/static/constant_2_1-edddf08ef01d22ef936cca7f84601379-17015.png 325w\"\n          sizes=\"(max-width: 325px) 100vw, 325px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n          src=\"/static/constant_2_1-edddf08ef01d22ef936cca7f84601379-17015.png\"\n          alt=\"constant 2 1\"\n          title=\"\"\n          src=\"/static/constant_2_1-edddf08ef01d22ef936cca7f84601379-17015.png\"\n        />\n      </picture>\n      </span>\n  </span>\n  </p>\n</div>\n<div class=\"ui warning info message\">\n  Constant fields must be public, with a primitive type (int, float, boolean etc).\n</div>\n<h2 id=\"input\"><a href=\"#input\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>@Input</h2>\n<p>Fields can be marked as <code class=\"language-text\">Input</code> to show that this field is available for configuration in the model at all times. <code class=\"language-text\">Input</code> fields are used to highlight where particular parameters in the model may be involved in ongoing decisions.</p>\n<p>As with @Constant, <code class=\"language-text\">name</code> can be used as an optional parameter to set a human-friendly title for the input field in the console. If this is not set, the name of the field will be used.</p>\n  <p class=\"code-header\">Input.Java</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">CreditCard</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">Model</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token annotation punctuation\">@Input</span><span class=\"token punctuation\">(</span>name <span class=\"token operator\">=</span> <span class=\"token string\">\"Spending\"</span><span class=\"token punctuation\">)</span>\n  <span class=\"token keyword\">public</span> <span class=\"token keyword\">float</span> spending <span class=\"token operator\">=</span> <span class=\"token number\">250f</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">public</span> <span class=\"token keyword\">void</span> <span class=\"token function\">step</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// use value of spending</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>  </code></pre></div>\n<div class=\"ui segment warning message\">\n  Input fields must be public, with a primitive type (int, float, boolean etc).\n</div>\n<h2 id=\"variable\"><a href=\"#variable\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>@Variable</h2>\n<p>Fields marked as <code class=\"language-text\">Variable</code> are serialised as part of the model output after setup has been run.\n(This means that it is safe to depend upon state that is initialised as part of setup from a @Variable method (such as an AgentSystem)).</p>\n<p>For more information on <code class=\"language-text\">Variable</code> see <a href=\":version/reference/agents/reporting\">Reporting</a></p>\n<div class=\"ui segment warning message\">\n  Variable fields must be public, with a supported type (<a href=\":version/reference/agents/reporting#jsonvalue\">Read more about supported types</a>).\n</div>\n<h2 id=\"output\"><a href=\"#output\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>@Output</h2>\n<p>Currently <code class=\"language-text\">Outputs</code> and <code class=\"language-text\">Variables</code> are considered the same thing, and can be used in the same way.</p>\n<div class=\"ui segment warning message\">\n  Ouput fields must be public, with a supported type (<a href=\":version/reference/agents/reporting#jsonvalue\">Read more about supported types</a>).\n</div>\n<h2 id=\"custom\"><a href=\"#custom\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>@Custom</h2>\n<p>Fields marked as custom are objects which have fields of their own with annotations.</p>","headings":[{"value":"@ModelSettings","depth":2},{"value":"@Constant","depth":2},{"value":"@Input","depth":2},{"value":"@Variable","depth":2},{"value":"@Output","depth":2},{"value":"@Custom","depth":2}],"frontmatter":{"title":"Annotations","toc":false,"experimental":null}},"site":{"siteMetadata":{"title":"Simudyne Docs","latestVersion":"2.6"}}},"pageContext":{"absolutePath":"/home/vsts/work/1/s/content/2.2/reference/models/annotations.md","versioned":true,"version":"2.2","kind":"reference","pagePath":"/reference/models/annotations","chronology":{"prev":{"name":"Model Initialisation","path":"/reference/models/model-initialisation"},"next":{"name":"Model Context","path":"/reference/models/model-context"}},"lastUpdated":"2026-04-21T13:56:54.837Z"}}