You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic自定义代理间是否可通过端口传输对象及触发接收方法问询

完全可以通过端口在自定义代理之间传输任意类型的对象,包括代理实例、动态变量值、自定义数组等数据,操作流程如下:

具体实现步骤

1. 端口配置

  • 分别在发送方代理中添加输出端口,接收方代理中添加输入端口
  • 端口属性中的Msg class设置为Object(如果仅传输固定类型数据,也可指定为对应类,减少后续类型转换出错概率)
  • 在上层容器(父代理/主模型)中,用连接器将发送方输出端口与接收方输入端口完成连接

2. 发送逻辑实现

在需要发送数据的位置,直接调用输出端口的send()方法即可,示例代码:

// 示例1:发送Double类型的动态变量值
outPort.send(dynamicVariableName);
// 示例2:发送自定义维度的数组
double[] outputArr = new double[]{1.2, 3.4, 5.6};
outPort.send(outputArr);
// 示例3:发送代理实例
outPort.send(agentInstance);

如果需要同时传输多组不同类型的数据,可自定义Java类封装所有要传输的字段,创建类实例后统一发送即可。

3. 接收触发逻辑实现

接收动作不需要手动调用port.receive()方法,系统会在消息传输到输入端口时自动触发:

  • 点击接收方的输入端口,在属性面板找到「收到消息时」(英文版为Message received)的代码编辑区
  • 在此处编写接收后的处理逻辑,通过内置变量msg获取发送方传输的对象,使用前需做对应类型转换,示例代码:
// 接收数组类型数据的示例
double[] receivedArr = (double[]) msg;
// 将收到的数组赋值给接收方的输入变量
inputArray = receivedArr;
// 后续可添加自定义处理逻辑
常见调试失败原因排查
  • 未在输入端口的「收到消息时」区域编写处理逻辑,导致收到消息无响应
  • 发送和接收的对象类型不匹配,类型转换时报错
  • 上层容器中端口的连接关系错误,消息无法传输到目标代理
  • 端口的Msg class设置的类型与实际传输对象类型不兼容,导致传输失败

内容的提问来源于stack exchange,提问作者Piero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:36:02