标签: agents

Clojure的代理人如何与Scala的演员比较?

我在Scala(源代码)(Scala 2.8 RC7)和Clojure(源代码)(Clojure 1.1)中编写了一个环网络拓扑模拟,用于比较Actors和Agents.

虽然Scala版本显示几乎恒定的消息交换率,因为我将网络中的节点数从100增加到1000000,但Clojure版本显示的消息速率随着节点数量的增加而减少.同样在单次运行期间,Clojure版本中的消息速率随着时间的推移而降低.

所以我很好奇Scala的演员如何与Clojure的特工比较?Agent本身是否比Actors更少并发或代码编写效率低(autoboxing?)?

PS:我注意到Scala版本中的内存使用量随着节点数量的增加(100万个节点> 500 MB)而增加很多,而Clojure版本使用的内存要少得多(100万个节点约100 MB).

编辑:

这两个版本都在相同的JVM上运行,并且所有JVM参数和Actor和Agent配置参数都设置为默认值.在我的机器上,Scala版本为100到100万个节点提供了大约5000个消息/秒的消息速率,而Clojure版本以100个节点的60000消息/秒开始,对于100万个节点减少到200个消息/秒.

编辑2

事实证明我的Clojure版本编写效率低下.我将nodes集合的类型更改listvector,现在它显示了一致的行为:100个节点100000消息/秒,100000个节点80000消息/秒.所以Clojure Agent似乎比Scala Actors更快.我也更新了链接的来源.

concurrency scala clojure agents actor

27
推荐指数
1
解决办法
5394
查看次数

Clojure的"发送"和"发送"功能在向代理发送动作方面有什么区别?

Clojure API将这两个函数描述为:

(发送af&args) - 向代理商发送行动.立即返回代理.随后,在来自线程池的线程中,代理的状态将设置为以下值:(应用action-fn state-of-agent args)

(发送af&args) - 向代理发送可能阻止的操作.立即返回代理.随后,在单独的线程中,代理的状态将设置为以下值:(应用action-fn state-of-agent args)

唯一明显的区别是当动作可能阻止时应该使用send-off.有人可以更详细地解释这种功能差异吗?

clojure agents

26
推荐指数
1
解决办法
2991
查看次数

Robots.txt - 多个用户代理的抓取延迟的正确格式是什么?

下面是一个示例robots.txt文件,允许多个用户代理为每个用户代理提供多个爬网延迟.抓取延迟值仅用于说明目的,并且在真实的robots.txt文件中会有所不同.

我已经在网上搜索了正确的答案,但找不到一个.有太多混合的建议,我不知道哪个是正确/正确的方法.

问题:

(1)每个用户代理都可以拥有自己的抓取延迟吗?(我假设是的)

(2)在Allow/Dissallow行之前或之后,您在哪里为每个用户代理放置了爬行延迟行?

(3)每个用户代理组之间是否必须有空白.

参考文献:

http://www.seopt.com/2013/01/robots-text-file/

http://help.yandex.com/webmaster/?id=1113851#1113858

基本上,我希望找出最终robots.txt文件应该如何使用下面示例中的值.

提前致谢.

# Allow only major search spiders    
User-agent: Mediapartners-Google
Disallow:
Crawl-delay: 11

User-agent: Googlebot
Disallow:
Crawl-delay: 12

User-agent: Adsbot-Google
Disallow:
Crawl-delay: 13

User-agent: Googlebot-Image
Disallow:
Crawl-delay: 14

User-agent: Googlebot-Mobile
Disallow:
Crawl-delay: 15

User-agent: MSNBot
Disallow:
Crawl-delay: 16

User-agent: bingbot
Disallow:
Crawl-delay: 17

User-agent: Slurp
Disallow:
Crawl-delay: 18

User-agent: Yahoo! Slurp
Disallow:
Crawl-delay: 19

# Block all other spiders
User-agent: *
Disallow: /

# Block …
Run Code Online (Sandbox Code Playgroud)

format robots.txt web-crawler agents

18
推荐指数
1
解决办法
3万
查看次数

使用F#代理映射Reduce

在玩F#代理后,我尝试使用它们来减少地图.

我使用的基本结构是:

  • 地图主管,它将在其状态下完成的所有工作排队,并接收来自地图工作人员的工作请求
  • reduce supervisor与map supervisor做同样的事情来减少工作量
  • 一堆地图并减少映射和减少的工人,如果一个工作失败,它会将其发送回相应的主管进行重新处理.

我想知道的问题是:

  • 与使用PSeq的更传统(但非常好)的地图减少(http://tomasp.net/blog/fsharp-parallel-aggregate.aspx)相比,这有什么意义吗?
  • 我实施地图和减少工人的方式看起来很难看是否有更好的方法?
  • 看来我可以创建一个1000万的地图工人和1000万减少工人lol,我应该如何选择这些数字,越多越好?

非常感谢,

type Agent<'T> = MailboxProcessor<'T>

//This is the response the supervisor
//gives to the worker request for work
type 'work SupervisorResponse =
| Work of 'work //a piece of work
| NoWork//no work left to do 

//This is the message to the supervisor
type 'work WorkMsg = 
| ToDo of 'work //piles up work in the Supervisor queue
| WorkReq of   AsyncReplyChannel<SupervisorResponse<'work>> //' 

//The supervisor agent can be interacted …
Run Code Online (Sandbox Code Playgroud)

f# mapreduce agents

13
推荐指数
1
解决办法
3005
查看次数

MailboxProcessor.PostAndReply设计选择

看着:

member this.PostAndReply : (AsyncReplyChannel<'Reply> -> 'Msg) * ?int -> 'Reply
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么签名看起来对我来说非常直观.我们想要做的是向代理发布消息,然后等待回复.为什么我们必须给他一个奇怪的功能作为'信息'?

再次看到这个MSDN片段:

let rec loop() =
    printf "> "
    let input = Console.ReadLine()
    printThreadId("Console loop")
    let reply = agent.PostAndReply(fun replyChannel -> input, replyChannel)
    if (reply <> "Stopping.") then
        printfn "Reply: %s" reply
       loop()
    else
        ()
loop()
Run Code Online (Sandbox Code Playgroud)

我更喜欢这样的东西:

member this.PostAndReply : 'Msg * ?int -> 'Reply
Run Code Online (Sandbox Code Playgroud)

谢谢

f# agents mailboxprocessor

12
推荐指数
1
解决办法
1152
查看次数

如何将项目与TeamCity上的代理池相关联?

对于我的自动化测试,我有一个项目添加到TeamCity服务器和2个代理池,一个是Windows服务器,另一个是MAC.默认代理程序池是WIN,但我想在MAC服务器上运行我的测试.若要更改代理池MAC,我试图通过设置添加代理需求 teamcity.agent.nameMAC server从列表中,但不会添加到与项目相关的相容剂的名单,但加入的相容性助剂与在它上面这样的警告:Following agents belong to the agent pools which are not associated with "Tests" project这里测试是我的项目的名称.

如何将MAC代理与我的项目相关联?

teamcity agent agents buildconfiguration

11
推荐指数
1
解决办法
7730
查看次数

将高度自治的演员视为代理人是否合理?

来自mutli-agent系统的学术背景(使用JADE在Java中开发)我只是在外围意识到Actor并发范例.现在我已经开始探索Scala,我忍不住被Agent和Actor方法之间的相似性所打动.

我非常想在我的下一个研究项目中使用Scala的Actor库而不是简单地调用JADE库,因为这会迫使我更深入地掌握语言.此外,JADE专注于根据行为定义所有内容并不适合我的问题.

高度自主的演员和我失踪的特工之间是否存在根本不同的东西?

scala artificial-intelligence agents actor agents-jade

9
推荐指数
1
解决办法
1251
查看次数

Python和代理模拟/可视化环境

我试图结束我对Matlab的依赖,并转向Python.我很快就会开始在代理中实现机器学习(神经网络/ SVM)(模拟船舶交通).我需要一个机器学习工具箱和一个模拟环境.

有很多ML/Python选项.剩下的挑战是模拟环境(2D或3D).

Netlogo很有意思,但似乎只能调用外部函数.它也是基于Java的.Breve似乎很完美,但似乎也是一个死项目.Pybrain提到了一些环境(PyODE?),但细节尚不清楚.

那么有没有人对具有良好Python界面的模拟/可视化环境提出一些好的建议?

python visualization agents

7
推荐指数
0
解决办法
1866
查看次数

如何在Clojure中停止特定代理?他们的州什么时候被垃圾收集?

如果代理在Clojure的后台运行其队列,如何在不停止所有代理的情况下停止它?

当我完成一个代理并且我让它超出范围并且它完成了它的队列工作时,它是否与其最终状态一起被垃圾收集?

clojure agents

6
推荐指数
1
解决办法
1038
查看次数

使用Clojure中的代理程序的多线程弹跳球程序

我在clojure中编写了一个多线程弹跳球程序.启动动画线程后,我做 -

(send-balls) 
Run Code Online (Sandbox Code Playgroud)

开始弹跳球线程.球不移动,这显示在控制台上 -

(#<Agent@5675b3ee FAILED: #<Ref@313d21d6: {:x 759, :y 629, :x-speed 3, :y-speed 1}>> #<Agent@22cf3539 FAILED: #<Ref@247881db: {:x 794, :y 258, :x-speed 2, :y-speed 3}>> #<Agent@51af4309 FAILED: #<Ref@445ead9d: {:x 831, :y 251, :x-speed 4, :y-speed 2}>>)
Run Code Online (Sandbox Code Playgroud)

有人能指出这里发生了什么?

(import
 '(java.awt Color Graphics Dimension)
 '(java.awt.image BufferedImage)
 '(javax.swing JPanel JFrame))

(def width 1000)
(def height 1000)

(def number-of-balls 3)

(def rad 20)

(def origin-x 100)
(def origin-y 100)
(def box-height 500)
(def box-width 700)
(def max-x (+ origin-x box-width (* 4 …
Run Code Online (Sandbox Code Playgroud)

multithreading clojure agents

6
推荐指数
1
解决办法
908
查看次数