我的模型中有一列火车,里面有不同的代理人。在其中一个站点,我想放弃每个代理商的一部分。
我在火车上的经纪人是:儿童,青少年,成年人和金童。 在给定的一站,我想放弃:
20%的孩子
40%的青少年
在Drop-off代理中,我更改了以下输入:
下降:给定数量(如果有)
数量:children.size(0.2)+ teenagers.size(0.4)
点击HERE查看下线属性
答案 0 :(得分:0)
要实现此目的,您应该在列车接收座席之前为座席中的变量创建一个值。创建一个名为willBeDropped的变量作为布尔值,默认值为false。此变量应存在于您的4种代理类型中的每一种中。
因此,当列车接收代理人时,您应该为willBeDropped分配一个真值或假值......所以当火车到达给定站点时,20%的孩子会有willBeDropped=true
和80%将有willBeDropped=false
。
在下降时你应该使用"条件为真"条件为agent.willBeDropped==true
我不知道你是如何接载乘客所以我不知道如何在那里帮助你...你的问题是不完整的,但是你可以自己弄清楚我刚刚说了什么
您可以使用以下代码:
int num1=count(queue,q->q instanceof Children);
int num2=count(queue,q->q instanceof Teenager);
int numToDropOff1=(int)round(num1*0.2);
int numToDropOff2=(int)round(num2*0.4);
int counter1=0;
int counter2=0;
for(int i=0;i<queue.size();i++){
if(counter1<= numToDropOff1 && queue.get(i) instanceof Children){
queue.get(i).willBeDropped=true;
counter1++;
}else if(counter2<= numToDropOff2 && queue.get(i) instanceof Teenager){
queue.get(i).willBeDropped=true;
counter2++;
}
}