{"data":{"markdownRemark":{"html":"<p>The global state is an object that can be read by all agents. If a model doesn't need global variables, the model and all of its agents must be parameterized with the <code class=\"language-text\">GlobalState</code> type to compile correctly. If a model does need global variables, create a class for those global variables which extends <code class=\"language-text\">GlobalState</code>, then parameterize the model and its agents with that type.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">// Model and agent using GlobalState.</span>\n<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<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>\n\n<span class=\"token comment\">// Custom globals class, with model and agent using this custom class.</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 keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyModel2</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>Globals<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</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\">MyAgent2</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>Use the <code class=\"language-text\">getGlobals()</code> function, which is part of the <code class=\"language-text\">GlobalState</code>, to get global values and update them as necessary. Do not attempt to change the values of globals from inside agents. Since agent actions happen in parallel, updating global values from agents may result in unexpected behavior.</p>\n<p><a href=\":version/reference/models/annotations\">Annotations</a> can either set global state values from the console or report those values to the console.</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":[],"frontmatter":{"title":"Global State","toc":true,"experimental":null}},"site":{"siteMetadata":{"title":"Simudyne Docs","latestVersion":"2.6"}}},"pageContext":{"absolutePath":"/home/vsts/work/1/s/content/2.2/reference/agents/global-state.md","versioned":true,"version":"2.2","kind":"reference","pagePath":"/reference/agents/global-state","chronology":{"prev":{"name":"Reporting","path":"/reference/agents/reporting"},"next":{"name":"Time Series Variables","path":"/reference/agents/time-series-variables"}},"lastUpdated":"2026-04-21T13:56:54.835Z"}}