如何在 AnyLogic 中控制简单进化游戏中代理的交互?

How to control interactions of agents in simple evolutionary games in AnyLogic?

学习AnyLogic基于代理的建模能力,想建模一个简单的进化游戏。

设置N个代理(偶数),每个代理有两个状态,即CooperateDefect,它们可以切换取决于时间段内交互结果的状态之间。 下一个时期(迭代或步骤)他们应该再次以新匹配的 随机对 进行交互。 我的猜测是人口应该以某种方式随机成对地分裂(尽管有些人建议使用一种超级代理,经纪人,负责协调所有独特的对)。

目前我在 AnyLogic 中看到了游戏示例,例如 隔离游戏,但是设置不同,我没有找到代理交互的示例模型或教程随机配对(欢迎提供一些链接)。

问题:如何对这样的设置建模以确保每个代理在每个周期(节拍)中成对交互,并且 none 他们中的 none 没有交互, none 他们参加了不止一对。欢迎任何提示。

注意: 成对交互的类型(单发游戏)目前并不重要(例如,一个代理向对方发送消息)。我追求互动安排的逻辑。

让我们假设您的代理群体属于 MyAgent 类型,其中有一个名为 myAgents 的群体。这些代理中的每一个都有一个称为 agentLink 的双向连接,它将一个代理链接到另一个相同类型的代理,如下图所示:

然后要创建随机对,您可以使用此代码:

for(MyAgent a : myAgents){
    a.agentLink.disconnect(); // remove previous connections
}
for(MyAgent a : myAgents){
    if(!a.agentLink.isConnected()){ //check if there is no pair already
       MyAgent b=randomWhere(myAgents,m->!m.agentLink.isConnected() && !m.equals(a)); //find a random agent which is not equal to "a" and not connected to someone else
       a.agentLink.connectTo(b); //link them together
    }
}

所有这些都是无根据的随机连接...但是您可以使用 randomWhere 来定义您自己的条件,让 2 个代理可以相互连接