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!