有没有一种方法可以在运行时删除参数?

时间:2019-01-29 21:48:53

标签: anylogic

我正在使用大约40个映射参数创建一组代理。这些参数仅用于总体初始化。但是,问题在于,在创建新代理时,这些参数中将需要许多参数,而实际上并不需要它们。只是为了让您了解它的外观如何。

add_households(int, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, boolean) 

因此,我想知道是否有一种在不再需要后删除/隐藏这些参数的方法。看起来像这样很棒:

add_households(int, boolean)

如果不可能的话,我将要寻找的其他解决方案是:

  • 也许有些类似于变量的参数映射。 (因为变量不会显示为参数。

  • 在仅使用所需参数初始化到新的Agent类之后,移动整个总体。 (这里最主要的是保持与其他代理类的已创建连接)

感谢您对这个问题的其他建议。 先感谢您;

可能的解决方案

我认为,艾米的建议很优雅。但是,它不能完全按照建议的方式工作。输入时:objHousehold.initRuntimeParamters( set_age(5), set_p_HH_willing_to_change(true)); 它引发错误,指出:

The method set_age(int) is undefined for the type Main.
The method set_p_HH_willing_to_change(boolen) is undefined for the type Main.

但是,通过更改小码,我只能通过键入以下内容来访问所需的参数:

Household objHousehold = add_households();
households(objHousehold.getIndex()).set_age(5);
households(objHousehold.getIndex()).set_p_HH_willing_to_change(true);

1 个答案:

答案 0 :(得分:1)

您始终可以执行add_households(),它将使用默认参数。然后,您可以调用一个函数以仅设置您感兴趣的2。

Household objHousehold = add_households();
objHousehold.initRuntimeParamters( int, boolean );

在initRuntimeParameters中,使用set_parameterName(value)设置参数值。

相关问题