Anylogic用户手册1 下载本文

? 设置实验根对象的真实参数值

1. 在Project(工程)窗口中,点击此实验。

2. 在Properties(属性)窗口中,在Parameters(参数)表格的Value(值)单元格中指

定参数的值。

改动之后的参数值将以黑体显示以示强调。

3.4 在运行时修改参数

你可以在运行时通过程序,或在AnyLogicTM查看器用户界面中,或在AnyLogicTM动画中对参数进行修改。如果参数被关联到某个被封装对象的参数上,则此改动将沿着参数依赖关系进行传播,请参考3.5节“参数传播”。你可以定义一个处理函数,此函数在参数发生变化时即被调用。

3.4.1 在模型浏览器中修改参数

? 修改一个参数

1. 在模型浏览器(Model Explorer)中,双击此参数,或者

右键点击此参数,然后在弹出菜单中选择Modify(修改)。 此时即显示Modify(修改)对话框。 2. 在Enter new value(输入新的值)编辑框中输入新的值。 3. 点击OK。

3.4.2 在AnyLogicTM动画中修改参数

AnyLogicTM提供了一组控件(按钮,文本输入,复选框,滑块等),用于创建可交互的动画。你可以将活动对象的参数与一个动画控件相关联,在运行时改变控件,以此来修改参数的值。

你可以进行如下关联:

? 将boolean类型的参数与按钮或选框关联 ? 将String类型的参数与编辑框关联 ? 将double类型的编辑框与滑块关联

? 将参数与动画控件关联

1. 在动画图中选择此控件。

2. 在Properties(属性)窗口中,从Variable name(变量名称)下拉列表中选择此参

数。 3. 如有必要,在Event handling code(事件处理代码)编辑框中指定用户改变控件时

所需执行的代码。

3.4.3 通过程序访问和修改参数

你可以通过程序修改一个参数。活动对象的一个参数myParam可以简单地作为一个成员变量myParam来进行访问。参数可以出现在活动对象内部的方程式和代码中。

然而,如果你在对参数进行修改,并且希望这一修改可以沿着参数依赖链进行传播(请参考地3.5节“参数传播”),那么你需要调用方法——例如,由AnyLogicTM生成的set_myParam(),将你希望设置的值作为此方法的参数。

你可以从命令行设定根对象的参数,请参考地19.1节“从命令行运行模型”。

被封装对象的参数在此对象由new运算符创建之后即被传递到此对象中。在构造函数执行过程中,参数尚未初始化。因此,如果你希望使用参数来初始化,例如,对象的一个成员变量,那么你无法在成员变量声明中完成此操作。你应在别的地方完成这一操作;例如,在此对象的onCreate()方法中。当onCreate()方法被调用时,其所有参数就已经完成初始化了。

3.5 参数传播

你可以将活动对象类的一个参数与此类封装的对象的一个参数相关联。在这种情况下,如果你在模型执行时改变了类的参数,则依赖于此参数的相关联的对象参数也发生改变。对于从修改点起沿着活动对象树往下的所有参数依赖关系,这一论断都成立。

你可以在如下情况下沿着对象等级结构向下传播参数值:

? 你需要改变若干个被封装对象(可能属于不同的类)的参数的值的情形。为此,你只

需通过创建root对象的单个参数,然后将其值传播给若干个你需要改变值的参数。 ? 你需要通过更改一个非根对象的参数来对模型进行优化的情形。在这种情况下,你也

需要使用参数传播,这样你可以只改变根对象的参数就对模型进行优化。 你只能在相同类型的变量之间建立关联。

3.5.1.1 手动设置参数传播

? 手动设置参数传播

1. 在结构图中选择被封装的对象。

2. 在Properties(属性)窗口中,在Parameters(参数)表格中选择你希望与父对象参数

关联的参数。 3. 在Value(值)域,输入你希望传播其值的父类参数的名称。

3.5.1.2 使用Export Parameter to Owner(导出参数到所有者)对话框设置参数传播

你也可以使用Export Parameter to Owner(导出参数到所有者)对话框设置参数传播

? 设置传播链接

1. 选择被封装的对象。