Java Anylogic:使用参数衰减给定数量

Java Anylogic:使用参数衰减给定数量,java,anylogic,Java,Anylogic,我有一列火车在我的模型中运行,里面有不同的代理。在其中一站,我想把每一个代理的一部分放下来 我在火车上的代理人是:儿童、青少年、成年人和老年人。 在指定的一站,我想下车: 20%的儿童 40%的青少年 在下车代理中,我更改了以下输入: 衰减:给定数量(如果可用) 数量:儿童。尺码(0.2)+青少年。尺码(0.4) 单击查看下车属性要实现此目的,您应该在列车拾取代理之前,为代理中的变量创建并分配一个值。创建一个名为willBeDropped的变量作为布尔值,默认值为false。此变量应存在于4种代

我有一列火车在我的模型中运行,里面有不同的代理。在其中一站,我想把每一个代理的一部分放下来

我在火车上的代理人是:儿童、青少年、成年人和老年人。 在指定的一站,我想下车:

20%的儿童

40%的青少年


在下车代理中,我更改了以下输入:

衰减:给定数量(如果可用)

数量:儿童。尺码(0.2)+青少年。尺码(0.4)


单击查看下车属性

要实现此目的,您应该在列车拾取代理之前,为代理中的变量创建并分配一个值。创建一个名为willBeDropped的变量作为布尔值,默认值为false。此变量应存在于4种代理类型中的每种类型中

因此,当列车接上代理时,您应该为Willbedroped指定一个值true或false。。。因此,当火车到达给定的车站时,20%的儿童将有
willBeDropped=true
,80%的儿童将有
willBeDropped=false

在下拉列表中,您应该使用“while condition is true”,其中条件是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++;
    }
}
int num1=count(队列,q->q子实例);
int num2=计数(队列,q->q实例);
int numToDropOff1=(int)舍入(num1*0.2);
int numToDropOff2=(int)轮(num2*0.4);
int计数器1=0;
int计数器2=0;

对于(int i=0;i您的问题是什么?您的代码以何种方式出错?您应该将代码显示为文本。在下车代理中,我更改了以下内容:下车:给定数量(如果可用)数量:儿童。大小(0.2)+青少年。大小(0.4)Hi Felipe。我正在使用取货代理,因此我可以在“进来时"。但是,我仍然不确定如何精确地删除20%的孩子。在删除条件下使用agent.willBeDropped==true将释放所有带有变量的代理,而不是20%。我在何处/如何将其限制为20%。谢谢你Felipe。对迟到表示歉意reply@ThabangMarote如果你认为答案是正确的,就把问题标记为接受。可以帮助别人:)