创建动态过程模型

Create dynamic process model

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

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

问题:模型应该是动态的。在模拟开始之前,所需的源、路径和传送带的实际数量是未知的。可能只需要一个源,也可能需要超过 25 个。每个源的代理应该采用不同的路径。

我考虑过在主要 class 的 "On startup:" window 中创建(几乎)完整的流程模型。我开始尝试 "copy" 一个现有的源代码块,但目前这样做失败了。

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 );

谁能给我指出正确的方向,或者有更简单的方法吗?

好的,用传送带做很多工作,所以我只给你看一个例子,然后你可以自己解决剩下的问题。

第一步:结构。 这是模型的结构:

第二步:点节点数组。 initialPoints 是一个元素类型为 PointNode

的 ArrayList

第三步:来源人群 如您所见,到达时的位置是:initialPoints.get(index) 其中 index 是来源群体中的来源。还要提前检查代理是一个人口,最初是空的。所以现在你有大量的资源......一切都很好。

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

第四步:初始化。 在主启动时添加以下代码,您需要定义一个网络并添加源和所有您需要的东西,将路径和点添加到网络并将它们也添加到演示文稿中......您将不得不更改初始 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();