有没有办法在 运行 时间内删除参数?
Is there a way to remove parameters during run-time?
我正在使用大约 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)
因此,我想知道是否有办法remove/hide这些参数以后就不再需要了。如果看起来像这样就好了:
add_households(int, boolean)
如果不可能,我将寻找的其他解决方案是:
也许有类似于变量参数映射的东西。 (因为变量不会显示为参数。
在初始化后将整个种群移动到仅具有所需参数的新代理 class。 (这里最主要的是保持和其他agent建立的连接classes)
对于此问题的任何其他建议,我都很感激。
先感谢您;
一个可能的解决方案
艾米的建议在我看来很优雅。但是,它并没有完全按照建议工作。输入时: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);
您始终可以执行 add_households(),这将采用默认参数。然后您可以调用一个函数来仅设置您感兴趣的 2 个。
Household objHousehold = add_households();
objHousehold.initRuntimeParamters( int, boolean );
在 initRuntimeParameters 中,使用 set_parameterName( value ) 设置参数值。
我正在使用大约 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)
因此,我想知道是否有办法remove/hide这些参数以后就不再需要了。如果看起来像这样就好了:
add_households(int, boolean)
如果不可能,我将寻找的其他解决方案是:
也许有类似于变量参数映射的东西。 (因为变量不会显示为参数。
在初始化后将整个种群移动到仅具有所需参数的新代理 class。 (这里最主要的是保持和其他agent建立的连接classes)
对于此问题的任何其他建议,我都很感激。 先感谢您;
一个可能的解决方案
艾米的建议在我看来很优雅。但是,它并没有完全按照建议工作。输入时: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);
您始终可以执行 add_households(),这将采用默认参数。然后您可以调用一个函数来仅设置您感兴趣的 2 个。
Household objHousehold = add_households();
objHousehold.initRuntimeParamters( int, boolean );
在 initRuntimeParameters 中,使用 set_parameterName( value ) 设置参数值。