I’m doing a project for studying. There is an agent with 2 variables that take the value True or False using the randomTrue() function. The construction of the project does not reveal errors. At startup, it throws an error when executing a discrete event:NullPointerException. Not a single agent was entered into the system. On source 0. I tried to change agents, changed randomTrue() to randomFalse(), with no results. What are the options?
NullPointerException java.lang.NullPointerException at com.anylogic.engine.Utilities.randomTrue(Unknown Source) at bank.Document.<init>(Document.java:78) at bank.Main._doc_enter_newEntity_xjal(Main.java:978) at bank.Main.access$0(Main.java:975) at bank.Main$1.newEntity(Main.java:312) at com.anylogic.libraries.processmodeling.Source.inject(Unknown Source) at com.anylogic.libraries.processmodeling.Source.executeActionOf(Unknown Source) at com.anylogic.engine.EventTimeout.execute(Unknown Source) at com.anylogic.engine.Engine.i(Unknown Source) at com.anylogic.engine.Engine.if(Unknown Source) at com.anylogic.engine.Engine.e(Unknown Source) at com.anylogic.engine.Engine$n.run(Unknown Source)
package bank; import java.io.Serializable; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Currency; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Locale; import java.util.Map; import java.util.PriorityQueue; import java.util.Random; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.Stack; import java.util.Timer; import java.util.TreeMap; import java.util.TreeSet; import java.util.Vector; import java.awt.Color; import java.awt.Font; import com.anylogic.engine.connectivity.ResultSet; import com.anylogic.engine.connectivity.Statement; import com.anylogic.engine.elements.*; import com.anylogic.engine.markup.Network; import com.anylogic.engine.Position; import com.anylogic.engine.markup.PedFlowStatistics; import com.anylogic.engine.markup.DensityMap; import static java.lang.Math.*; import static com.anylogic.engine.UtilitiesArray.*; import static com.anylogic.engine.UtilitiesCollection.*; import static com.anylogic.engine.presentation.UtilitiesColor.*; import static com.anylogic.engine.HyperArray.*; import com.anylogic.engine.*; import com.anylogic.engine.analysis.*; import com.anylogic.engine.connectivity.*; import com.anylogic.engine.database.*; import com.anylogic.engine.gis.*; import com.anylogic.engine.markup.*; import com.anylogic.engine.routing.*; import com.anylogic.engine.presentation.*; import com.anylogic.engine.gui.*; import com.anylogic.libraries.modules.markup_descriptors.*; import com.anylogic.libraries.processmodeling.*; import com.anylogic.libraries.material_handling.*; import java.awt.geom.Arc2D; public class Document extends Agent { // Parameters // Plain Variables public final boolean is_simple = randomTrue(0.6) ; public final boolean has_critical_errors = randomTrue(0.1) ; @AnyLogicInternalCodegenAPI private static Map<String, IElementDescriptor> elementDesciptors_xjal = createElementDescriptors( Document.class ); @AnyLogicInternalCodegenAPI @Override public Map<String, IElementDescriptor> getElementDesciptors() { return elementDesciptors_xjal; } @AnyLogicCustomProposalPriority(type = AnyLogicCustomProposalPriority.Type.STATIC_ELEMENT) public static final Scale scale = new Scale( 10.0 ); @Override public Scale getScale() { return scale; } /** Internal constant, shouldn't be accessed by user */ @AnyLogicInternalCodegenAPI protected static final int _STATECHART_COUNT_xjal = 0; // View areas public ViewArea _origin_VA = new ViewArea( this, "[Origin]", 0, 0, 1500.0, 600.0 ); @Override @AnyLogicInternalCodegenAPI public int getViewAreas(Map<String, ViewArea> _output) { if ( _output != null ) { _output.put( "_origin_VA", this._origin_VA ); } return 1 + super.getViewAreas( _output ); } @AnyLogicInternalCodegenAPI protected static final Pair<String, Color>[] _person_customColors_xjal = new Pair[] { new Pair<String, Color>( "Material__3__Surf", null ), new Pair<String, Color>( "Material__5__Surf", null ), new Pair<String, Color>( "Material__6__Surf", null ), new Pair<String, Color>( "Material__2__Surf", null ), new Pair<String, Color>( "Material__4__Surf", null ), new Pair<String, Color>( "Material__1__Surf", null ), }; @AnyLogicInternalCodegenAPI protected static final int _person = 1; /** Internal constant, shouldn't be accessed by user */ @AnyLogicInternalCodegenAPI protected static final int _SHAPE_NEXT_ID_xjal = 2; @AnyLogicInternalCodegenAPI public boolean isPublicPresentationDefined() { return true; } @AnyLogicInternalCodegenAPI public boolean isEmbeddedAgentPresentationVisible( Agent _a ) { return super.isEmbeddedAgentPresentationVisible( _a ); } @AnyLogicInternalCodegenAPI private void _initialize_level_xjal() { level.addAll(person); } protected Shape3DObject person; protected com.anylogic.engine.markup.Level level; private com.anylogic.engine.markup.Level[] _getLevels_xjal; @Override public com.anylogic.engine.markup.Level[] getLevels() { return _getLevels_xjal; } @AnyLogicInternalCodegenAPI private void _createPersistentElementsBP0_xjal() { person = new Shape3DObject( Document.this, SHAPE_DRAW_2D3D, true, 0.0, 0.0, 0.0, 0.0, 1.0, true, "/bank/", "3d/person.dae", OBJECT_3D_YZX_AXIS_ORDER, OBJECT_3D_INTERNAL_LIGHTING_OFF, false, -5.0, -4.0, 7.0, 7.0, null, _person_customColors_xjal ); } @AnyLogicInternalCodegenAPI private void _createPersistentElementsAP0_xjal() { } @AnyLogicInternalCodegenAPI private void _createPersistentElementsBS0_xjal() { } // Static initialization of persistent elements private void instantiatePersistentElements_xjal() { level = new com.anylogic.engine.markup.Level(this, "level", SHAPE_DRAW_2D3D, 0.0, true, true); _getLevels_xjal = new com.anylogic.engine.markup.Level[] { level }; _createPersistentElementsBP0_xjal(); } protected ShapeTopLevelPresentationGroup presentation; protected ShapeModelElementsGroup icon; @Override @AnyLogicInternalCodegenAPI public ShapeTopLevelPresentationGroup getPresentationShape() { return presentation; } @Override @AnyLogicInternalCodegenAPI public ShapeModelElementsGroup getModelElementsShape() { return icon; } /** * Constructor */ public Document( Engine engine, Agent owner, AgentList<? extends Document> ownerPopulation ) { super( engine, owner, ownerPopulation ); instantiateBaseStructureThis_xjal(); } @AnyLogicInternalCodegenAPI public void onOwnerChanged_xjal() { super.onOwnerChanged_xjal(); setupReferences_xjal(); } @AnyLogicInternalCodegenAPI public void instantiateBaseStructure_xjal() { super.instantiateBaseStructure_xjal(); instantiateBaseStructureThis_xjal(); } @AnyLogicInternalCodegenAPI private void instantiateBaseStructureThis_xjal() { instantiatePersistentElements_xjal(); setupReferences_xjal(); } @AnyLogicInternalCodegenAPI private void setupReferences_xjal() { } /** * Simple constructor. Please add created agent to some population by calling goToPopulation() function */ public Document() { } @Override @AnyLogicInternalCodegenAPI public void doCreate() { super.doCreate(); // Assigning initial values for plain variables setupPlainVariables_Document_xjal(); // Dynamic initialization of persistent elements _createPersistentElementsAP0_xjal(); _initialize_level_xjal(); level.initialize(); presentation = new ShapeTopLevelPresentationGroup( Document.this, true, 0, 0, 0, 0 , level ); icon = new ShapeModelElementsGroup( Document.this, getElementProperty( "bank.Document.icon", IElementDescriptor.MODEL_ELEMENT_DESCRIPTORS ) ); icon.setIconOffsets( 0.0, 0.0 ); // Port connectors with non-replicated objects // Creating replicated embedded objects setupInitialConditions_xjal( Document.class ); // Dynamic initialization of persistent elements _createPersistentElementsBS0_xjal(); } @Override @AnyLogicInternalCodegenAPI public void doStart() { super.doStart(); } /** * Assigning initial values for plain variables<br> * <em>This method isn't designed to be called by user and may be removed in future releases.</em> */ @AnyLogicInternalCodegenAPI public void setupPlainVariables_xjal() { setupPlainVariables_Document_xjal(); } /** * Assigning initial values for plain variables<br> * <em>This method isn't designed to be called by user and may be removed in future releases.</em> */ @AnyLogicInternalCodegenAPI private void setupPlainVariables_Document_xjal() { } // User API ----------------------------------------------------- @AnyLogicInternalCodegenAPI public static LinkToAgentAnimationSettings _connections_commonAnimationSettings_xjal = new LinkToAgentAnimationSettingsImpl( false, black, 1.0, LINE_STYLE_SOLID, ARROW_NONE, 0.0 ); public LinkToAgentCollection<Agent, Agent> connections = new LinkToAgentStandardImpl<Agent, Agent>(this, _connections_commonAnimationSettings_xjal); @Override public LinkToAgentCollection<? extends Agent, ? extends Agent> getLinkToAgentStandard_xjal() { return connections; } @AnyLogicInternalCodegenAPI public void drawLinksToAgents(boolean _underAgents_xjal, LinkToAgentAnimator _animator_xjal) { super.drawLinksToAgents(_underAgents_xjal, _animator_xjal); if ( _underAgents_xjal ) { _animator_xjal.drawLink( this, connections, true, true ); } } public AgentList<? extends Document> getPopulation() { return (AgentList<? extends Document>) super.getPopulation(); } public List<? extends Document> agentsInRange( double distance ) { return (List<? extends Document>) super.agentsInRange( distance ); } }
[run model] : https://i.stack.imgur.com/8vGA4.jpg
Advertisement
Answer
I found the problem. It was necessary to specify the value true
or false
in the variables in their initial values. Then, in the “source” block in “action on at exit”, set the value via randomTrue()
for the variables.
Example:
"agent.is_simple = randomTrue(0.5);")
Now the model starts and works correctly. Thank you all for your help!