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

Anylogic油码头仿真:按指定概率生成不同尺寸船舶的实现问询

解决AnyLogic中按概率生成不同类型船舶的问题

Hey there!作为AnyLogic新手碰到这个概率分配的问题太正常了,我来一步步带你实现按60%A、25%B、15%C的比例生成不同尺寸的船舶~

第一步:创建船舶Agent类型

首先你需要定义一个带类型标识的船舶Agent,方便后续区分:

  • 右键项目面板里的「Agents」→「New Agent Type」,命名为Ship
  • 在Ship的参数面板里,添加一个枚举类型的参数(推荐用枚举,比字符串更严谨):
    1. 点击「Add」→选择「Enumeration」,命名为shipType
    2. 点击枚举参数的「Edit」按钮,添加三个选项:TYPE_A、TYPE_B、TYPE_C(或者直接用中文「A型」「B型」「C型」)
  • 如果你需要给不同类型船舶设置不同尺寸/属性,可以再添加对应的参数(比如length、unloadDuration等)

第二步:确认到达间隔设置

你已经搞定了船舶到达间隔,这里再确认下:

  • 选中Source模块,在「Arrival」选项卡下,选择「Interval」模式
  • 间隔表达式填写uniform(4, 18)(因为11±7小时,也就是4到18小时的均匀分布)

第三步:按概率分配船舶类型(两种方法任选)

方法一:直接用随机数判断(快速上手)

这种方法适合快速实现,不需要额外定义变量:

  1. 选中Source模块,切换到「Actions」选项卡
  2. 在「On agent creation」的代码框里输入:
double randomProb = random();
Ship shipAgent = (Ship)agent;
if(randomProb < 0.6) {
    shipAgent.shipType = Ship.shipType.TYPE_A;
} else if(randomProb < 0.85) { // 0.6+0.25=0.85
    shipAgent.shipType = Ship.shipType.TYPE_B;
} else {
    shipAgent.shipType = Ship.shipType.TYPE_C;
}

注意:如果你的枚举参数用的是中文,把Ship.shipType.TYPE_A换成对应的中文值即可

方法二:用离散分布(更规范,便于后续维护)

这种方法适合需要频繁调整概率或者有更多类型的场景:

  1. 在Main模块的「Variables」面板里,添加一个变量:
    • 类型选择DiscreteDistribution<Ship.shipType>,命名为shipTypeDistribution
  2. 切换到Main的「Actions」选项卡,在「On startup」里初始化分布:
shipTypeDistribution.add(Ship.shipType.TYPE_A, 0.6);
shipTypeDistribution.add(Ship.shipType.TYPE_B, 0.25);
shipTypeDistribution.add(Ship.shipType.TYPE_C, 0.15);
  1. 回到Source模块的「On agent creation」代码框,输入:
((Ship)agent).shipType = shipTypeDistribution.sample();

第四步:给不同类型船舶设置不同尺寸(可选)

如果需要让不同类型的船舶有不同的尺寸属性,可以在ShipAgent的「Actions」选项卡→「On startup」里添加代码:

switch(shipType) {
    case TYPE_A:
        length = 150; // 假设A型船长度150米
        break;
    case TYPE_B:
        length = 200; // B型船长度200米
        break;
    case TYPE_C:
        length = 250; // C型船长度250米
        break;
}

这样你就能完美实现按概率生成不同类型的船舶啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:41:02