{"data":{"markdownRemark":{"html":"<p>The global state is an object that can be read by all agents.</p>\n<p>If your model doesn't need to make use of a global state, <code class=\"language-text\">Agents</code> and the <code class=\"language-text\">AgentBasedModel</code> need to be typed as <code class=\"language-text\">GlobalState</code> in order for the model to compile.</p>\n<p class=\"code-header\">Generifying agents with default GlobalState (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><span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyAgent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">Agent</span><span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>GlobalState<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></code></pre></div>\n<p>If you have some global state to be shared across the system, create a <code class=\"language-text\">Globals</code> class that extends <code class=\"language-text\">GlobalState</code>, and pass as a type to the <code class=\"language-text\">AgentBasedModel</code>. <code class=\"language-text\">Agents</code> will now need to be typed as <code class=\"language-text\">Globals</code> in order to access values inside <code class=\"language-text\">Globals</code>.</p>\n<p class=\"code-header\">Creating a custom global object(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>MyModel<span class=\"token punctuation\">.</span>Globals<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Globals</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">GlobalState</span> <span class=\"token punctuation\">{</span>\n     <span class=\"token keyword\">public</span> <span class=\"token keyword\">float</span> preference <span class=\"token operator\">=</span> <span class=\"token number\">0.35f</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyAgent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">Agent</span><span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>Globals<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span></code></pre></div>\n<p>To get the <code class=\"language-text\">globals</code> values and update them from inside the model <code class=\"language-text\">setup</code> or <code class=\"language-text\">step</code></p>\n<p class=\"code-header\">Accessing a global from model (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>MyModel<span class=\"token punctuation\">.</span>Globals<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Globals</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">GlobalState</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">float</span> fillFactor <span class=\"token operator\">=</span> <span class=\"token number\">0.25f</span><span class=\"token punctuation\">;</span>\n  <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 function\">getGlobals</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>fillFactor <span class=\"token operator\">=</span> <span class=\"token number\">0.5</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">super</span><span class=\"token punctuation\">.</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 punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>To get the <code class=\"language-text\">globals</code> values from inside the <code class=\"language-text\">Agents</code></p>\n<p class=\"code-header\">Accessing a global from and agent (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\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyAgent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">Agent</span><span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>Globals<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span>\n   <span class=\"token keyword\">private</span> <span class=\"token keyword\">void</span> <span class=\"token function\">updateHappiness</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n     <span class=\"token keyword\">long</span> similar <span class=\"token operator\">=</span> <span class=\"token comment\">// calculate similar</span>\n     <span class=\"token keyword\">long</span> total <span class=\"token operator\">=</span> <span class=\"token comment\">// calculate total</span>\n\n     <span class=\"token keyword\">float</span> preference <span class=\"token operator\">=</span> <span class=\"token function\">getGlobals</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>preference<span class=\"token punctuation\">;</span>\n     <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>person<span class=\"token punctuation\">.</span>happy <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">float</span><span class=\"token punctuation\">)</span> similar <span class=\"token operator\">/</span> total <span class=\"token operator\">></span> preference<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span></code></pre></div>\n<div class=\"ui segment error message\">\n<h4>Important</h4>\nDo not attempt to change the values of globals from inside Agents. The results may not be as expected.\n</div>\n<h3 id=\"annotations-and-global-state\"><a href=\"#annotations-and-global-state\" 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>Annotations and Global State</h3>\n<p>Annotations can be used inside the global state to set the values of the global state from the console, or to report a global state value.</p>\n<p class=\"code-header\">Annotating a global variable(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\">static</span> <span class=\"token keyword\">final</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Globals</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">GlobalState</span> <span class=\"token punctuation\">{</span>\n   <span class=\"token annotation punctuation\">@Input</span> <span class=\"token keyword\">public</span> <span class=\"token keyword\">float</span> preference <span class=\"token operator\">=</span> <span class=\"token number\">0.35f</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","headings":[{"value":"Annotations and Global State","depth":3}],"frontmatter":{"title":"Global State","toc":null,"experimental":null}},"site":{"siteMetadata":{"title":"Simudyne Docs","latestVersion":"2.6"}}},"pageContext":{"absolutePath":"/home/vsts/work/1/s/content/2.0/reference/agents/global-state.md","versioned":true,"version":"2.0","kind":"reference","pagePath":"/reference/agents/global-state","chronology":{"prev":{"name":"Reporting","path":"/reference/agents/reporting"},"next":{"name":"Deployment","path":"/reference/deployment"}},"lastUpdated":"2026-04-21T13:56:54.826Z"}}