创建动态过程模型

时间:2018-07-30 21:26:52

标签: java simulation anylogic

我目前正在尝试建立动态流程模型。该模型本身将如下所示: Dynamic process model creation

代理由源模块为每个点节点创建,然后沿三个路径移动,直到它们在中心路径上相遇。 我正在尝试做的示例:每条路径都可以看作一条生产线。成品最后见面,进行检查和包装。代理到底发生了什么并不重要。运动的可视化很重要。

问题:模型应该是动态的。在开始仿真之前,所需源,路径和传送带的实际数量是未知的。可能只需要一个源,也可能需要25个以上。每个源的Agent应当采用不同的路径。

我考虑过(几乎)在主类的“启动时:”窗口中创建完整的过程模型。我首先尝试“复制”一个现有的源代码块,但当前无法这样做。

com.anylogic.libraries.processmodeling.Source<Agent> source2 = new 
com.anylogic.libraries.processmodeling.Source<Agent>( getEngine(), this, null);
source2 = instantiate_source_xjal();
setupParameters_source_xjal( source2 );
create_source_xjal( source2 );

有人可以指出我正确的方向吗?也许有更简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

好的,使用传送带要做很多工作,所以我仅向您展示一个示例,然后您可以自行解决其余的问题。

第1步:结构。 这是模型的结构: structure

第2步:pointNode数组。 initialPoints是一个元素类型为PointNode的ArrayList

第3步:来源人群。 source population 如您所见,到达的位置是:initialPoints.get(index),其中index是源总数中的源。还要提前检查代理是否为种群,最初是空的。所以现在您有了大量的资源...一切都很好。

moveTo块将使代理移动到endConveyorPoint,这是我在模型中明确定义的唯一pointNode。

第4步:初始化。 在主启动时添加以下代码,您需要定义一个网络,并添加源和所需的所有内容,添加指向网络的路径和点,并将它们也添加到演示文稿中……您将不得不更改初始X ,Y,Z坐标(如果需要):

Network n = new Network( this, "nety", SHAPE_DRAW_2D3D, 0, true, true );
n.add(endConveyorPoint);
for(int i=0;i<5;i++){
    Source s = add_source();
    PointNode pn=new PointNode(this, SHAPE_DRAW_2D3D, true, 100.0,300.0+i*50, 0.0, 1.0, dodgerBlue );
    MarkupSegmentLine ms1 = new MarkupSegmentLine(  100.0, 300.0+i*50, 0.0, 350.0, 300.0+i*50, 0.0 );
    MarkupSegmentLine ms2 = new MarkupSegmentLine(  350.0, 300.0+i*50, 0.0, endConveyorPoint.getX(),endConveyorPoint.getY(), 0.0 );
    Path path = new Path( this, SHAPE_DRAW_2D3D, true, true, 
                                PATH_DASHEDLINE, dodgerBlue, 2.0, pn, endConveyorPoint, ms1, ms2 );
    presentation.add(pn);
    presentation.add(path);
    s.set_locationType(s.LOCATION_NODE);
    s.setLocation(pn);

    initialPoints.add(pn);
    n.add(pn);
    n.add(path);
}
n.initialize();