bluse 发表于 2010-11-14 11:49:07

求教

先呈上FINDER机器人

请有实力的朋友,阅读此机器人后,回答我:
ALARM:-*2
#if ((%random(4)<1)&(!%trigger(autolog))) {#if (%numwords(@target_queue,|)!=%numwords(@user_queue,|)) {ini};
#if (!%null(@user_queue)) {halt;
pp %word(@target_queue,1,|)} {tuna 10}}

已知如果采用%random(0)<1,那么多ID同时响应同一个任务的概率将是100%。如果我希望尽可能的减少多ID同时响应同一个任务的概率,又希望不要拖延太久回答。那么在这个触发里,执行任务概率%random设为多少最合适?希望尽可能得到一个用工作ID数量N为变量的表达式。

求助求助啊~

bluse 发表于 2010-11-14 11:50:14

所有机器人都工作在同一个ROOM,say触发句用来交流。

zgbl 发表于 2010-11-14 12:00:56

可以不用say,直接在别的窗口发指令
比如把找到的结果ans发送到finder_a窗口就是finder_a:#var ans xxxxxxx
所以我觉得可以这样,a先pp,pp失败直接在b窗口发pp,再失败再c窗口pp
这样比用say触发,省了say的信息来回时间,基本等于无缝衔接的不断pp

bluse 发表于 2010-11-14 12:40:26

直接指定SESSION不错,但是我为了在扩充团队时避免修改机器人文件,也就是为了提高普遍性,只好否决这个方案。

bluse 发表于 2010-11-14 12:41:59

而且ZMUD4.62在频繁使用SESSION切换时,会不会很容易出错,我有心理阴影。   T_T

bluse 发表于 2010-11-14 12:42:54

我要数学解,哪怕不能给我更有意义的答案,我首先想要的是我那个问题的数学解。例如我现在是4人的PP团队,每ID每2秒检测一次任务队列,就问我把这个概率设置为几,能让重复率和速率折中。

[ 本帖最后由 bluse 于 2010-11-14 12:44 PM 编辑 ]

alucar 发表于 2010-11-14 17:02:18

粗算了一个响应率p=1/n,这个结果与模型构架有关。晚上回家再具体想一下。

alucar 发表于 2010-11-14 19:38:00

设响应率为p (0<p<1),则有n个id的情况下,全部不响应的概率为u=(1-p)^n,存在重复响应的概率为v=1-(1-p)^n-p(1-p)^(n-1),楼主的目标是平衡响应时间与重复率,即取u与v的综合最小值。设w=f(u,v),如果用一个最简单的模型w=u+v,求min(w),解出来最优解就是p=1/n。如果对重复率和响应时间有不同要求,要用相应的f(u,v),这个,呼叫一下数学达人吧。

bluse 发表于 2010-11-15 09:48:00

顶起来

puppet 发表于 2010-11-15 11:44:48

上班没事帮你算算。。。
设random后的可能数为m, 同时工作id为n
则都不响应概率p=((m-1)/m)^n
期望相应次数E为1*(1-p)+2*p(1-p)+3*p^2*(1-p)+...=1/(1-p)
第一次相应时, 有同时相应概率P为1-p-n*1/m*((m-1)/m)^(n-1)=1-p-n*p/(m-1)
几种典型情况m n E            P
                     2 2 4/3            1/4
                     2 3 8/7            4/8
                     2 4 16/15      11/16
                     3 2 9/5            1/9
                     3 3 27/19      5/27
                     3 4 81/65      33/81
                     4 2 16/7          1/16
                     4 3 64/37      10/64
                     4 4 256/175    67/256

[ 本帖最后由 puppet 于 2010-11-15 01:46 PM 编辑 ]
页: [1] 2
查看完整版本: 求教