Skip to main content

ModelDescription

Model Definition​

In order to use a model, entities, agents and layer types must be made known to the system.

A so-called ModelDescription is defined in the project (for example in the entry point Main()) and all relevant types are registered.

Registration​

First, the using import of the namespace must be added:

using Mars.Core.Model.Entities;

In the program code (for example the entry point Main() of the .NetCore application) a ModelDescription object must be defined. This object contains all types that occur in the model and that can be parameterized externally by a SimulationConfig.


public static void Main()
{
var description = new ModelDescription();

description.AddLayer<MyLayer>();
description.AddAgent<MyAgent,MyLayer>();

}

The types registered above include the self-defined agent type MyAgent and the corresponding agent layer MyLayer. If you want to use additional data in the model, you have to register the respective data layers additionally:

description.AddLayer<MyVectorLayer>();
description.AddLayer<MyRasterLayer>();

MyLayer can also be used as a data layer like MyVectorLayer or MyRasterLayer. The layer implements the required contract (see [here] (layers.md)).

Registration with Names​

By default, the defined class name (e.g. MyAgent) is used as the name within the model. Alternative names can be given during registration:

description.AddAgent<MyAgent,MyLayer>("myAlternativeAgentName");

This allows the types to be mapped using a different name within the configuration:

{
"agents": [
{"name": "myAlternativeAgentName", "file": "anyInput.csv"}
]
}