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

AnyLogic中如何修改sortAscending筛选出的指定Agent的布尔变量?

问题分析与修正方案

你的代码存在三个关键逻辑错误,导致所有Agent的willDoSomething被设为true:

  • 排序方向错误:sortAscending是按预算升序排序,得到的是预算从低到高的Agent列表,你需要的是预算最高的前3个,应该用降序排序(比如对应框架的sortDescending方法)。
  • 筛选范围错误:subList(0,1)只截取了排序后的第一个Agent,而你需要的是前3个,应该写成subList(0,3)。
  • 循环对象错误:你遍历的是main.bidders整个群体,而非筛选出来的前3个Agent列表ags,所以所有Agent的变量都被修改了。

修正后的代码示例

// 按预算降序排序,取前3个Agent
List<Bidder> ags = sortDescending(main.bidders, m -> m.budget).subList(0, 3);
// 先将所有Agent的该变量初始化设为false(按需选择)
for(Bidder m : main.bidders){
    m.willDoSomething = false;
}
// 仅给筛选出的前3个Agent设为true
for(Bidder m : ags){
    m.willDoSomething = true;
}

额外注意:代码里的m.Budget和你描述的budget参数大小写不一致,确认变量名是否匹配,避免因大小写问题导致排序逻辑失效。

内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:25:00