Agent-Based Model有关

Discussion in 'Behaviour and Cognition' started by konit, Dec 18, 2010.

  1. 在网上没搜到多少量化的信息。可能我搜索技巧不高。

    http://blog.csdn.net/metasearch/archive/2008/09/19/2952740.aspx 这个链接不错。
    《Simple Heuristics that Makes Us Smart》
    这体书的观点很新颖的。能不能这样认为,交易者采用简单的方法进行简单的思考,把这种方法和思考模式用市场来检验,如果成功率高,就说明它生态合理性强。从而说此交易者生态理性强。

    《Bounded Rationality: The Adaptive Toolbox》
    在此提一个书中提到的例子,非常有意思:两个团队被派去设计一个能够在场上接住抛过来的棒球的机器人。第一组做了详细的数学分析,建立了一个相当复杂的抛物线近似模型(因为还要考虑空气阻力之类的原因,所以并非严格抛物线),用于计算球的落点,以便正确地接到球。显然这个方案耗资巨大,而且实际运算也需要时间,大家都知道生物的神经网络中生物电流传输只有百米每秒之内,所以 computational complexity 对于生物来说是个宝贵资源,所以这个方案虽然可行,但不够好。第二组则采访了真正的运动员,听取他们总结自己到底是如何接球的感受,然后他们做了这样一个机器人:这个机器人在球抛出的一开始一半路程啥也不做,等到比较近了才开始跑动,并在跑动中一直保持眼睛于球之间的视角不变,后者就保证了机器人的跑动路线一定会和球的轨迹有交点;整个过程中这个机器人只做非常粗糙的轨迹估算。体会一下你接球的时候是不是眼睛一直都盯着球,然后根据视线角度来调整跑动方向?实际上人类就是这么干的,这就是 heuristics 的力量。


    如何在程序化交易中采用简单模拟人的思维过程的方法, 而不是采用非常耗时的复杂的算法,这是我感兴趣的地方。

    konit,麻烦把看完书的读后感跟大家分享一下,让我们这种没精力去拜读的人充实一下自己。
     
  2. 此書大量以統計工具做參照,對過度擬合、魯棒性、參數自由度、外推這些系統設計上的難啃問題也有啟發。
    開篇提到「無限理性」與「有限理性」的區分,涉及到哲學,或者說思維偏向、你所提的信念。
    偶只讀了第一章,已經對上面提到的全局仿真構想產生動搖了,雖不是徹底推倒,但起碼思路要改變,不應該是這么傻練的,要考慮空間和時間上的有限。

    500頁,25塊,值得買來讀讀的。
    http://product.dangdang.com/product.aspx?product_id=692061
     
  3. 网上评论大都水平有限,还是看原文吧。
    大部分心理学书籍和论文已经采用量化的方法。
    如果你没有基础,我实在不想推荐下面的东西,应该先入门,下面的属于进阶;
    你可以搜索“数量行为金融学资料召集和基金设立”看看,也欢迎你多多分享。:)
     
  4. 欢迎入门进入我的领域:D
    当初买这本书我调用了全市整个新华书店体系来帮我找这本书,我还特意写了感谢信。:p
    论坛里也有过相关信息,可以查历史帖子。
    歌德的主要贡献是提出了生态理性的定义,并驳斥了卡尼曼的论据,为目前学术界第一个言凿有据的。
    你正在看的这本书,涉及生物学,生态学,哲学,统计学,社会人口学,经济学,心理学的认知和行为都有涉及,以及计算机人工智能技术,内部各章为相关专家撰写。
    兄弟可顺便补充心理学基础和单独的认知学和行为学基础,要不然基础不牢很容易理解偏颇。
     
    Darren likes this.
  5. 哎呀 這潭水很深吶~:confused:
    現學現賣,Take The Last,偶先從淺水區開始搜索吧~:cool:
     
  6. 慢慢来~:D
     
  7. 搜到只有
    人大经济论坛有这方面的资料,大部分要积分,下不来。
    既然kuhasu是这方面的专家,我和其他人的疑惑是数量金融是不是一条正确的道路。
    对于我等小散,是不敢奢望陷入复杂的数学公式与推导之中。最大的期望是在理念或思想上有些许的更新与变化。
     
  8. 我可不是专家~专家这年头儿等同于白痴。
    不管什么方法,能赚钱不就行了?
     
  9. 英文電子版「Artificial War:Multiagent-Based Simulation of Combat」被刪了,下不到。:confused:

    人工战争:基于多Agent的作战仿真
    卓越
    目 录:
    第1章 简介
    1.1 CNA的复杂性与作战研究项目的简要历史
    1.1.1 基本问题
    1.1.2 将新科学应用于战争
    1.1.3 战争和复杂性
    1.1.4 ISAAC
    1.1.5 EINSTein
    1.2 背景和动机
    1.2.1 兰彻斯特作战方程
    1.2.2 人工生命
    1.3 模型和仿真:一个启发式的讨论
    1.3.1 定义
    1.3.2 与现实世界的联系
    1.3.3 数学模型
    1.3.4 计算机仿真
    1.3.5 复杂性的代价是什么
    1.4 作战仿真
    1.4.1 建模和仿真主计划
    1.4.2 人类行为和指挥决策的建模
    1.4.3 传统的仿真
    1.4.4 建模技术的未来
    1.5 基于多Agent的模型和仿真
    1.5.1 自治Agent
    1.5.2 基于多Agent建模的实质
    1.5.3 基于Agent的仿真与传统的数学模型
    1.5.4 基于多Agent的仿真与传统的AI
    1.5.5 基于多Agent仿真的例子
    1.5.6 基于多Agent仿真的价值
    1.5.7 基于CA的和其他与EINSTein相关的作战模型
    1.6 EINSTein作为更一般的复杂适应系统模型的例子
    1.6.1 波斯湾场景
    1.6.2 SCUDHunt
    1.6.3 社会建模:暴乱和内乱
    1.6.4 一般应用
    1.6.5 统一行为模式
    1.7 开发EINSTein的目标和成果
    1.7.1 指挥和控制
    1.7.2 模式识别
    1.7.3 “如果会怎样”的实验
    1.7.4 战争的基本原理
    1.8 关于复杂系统的价值论本体
    1.8.1 为什么是值
    1.8.2 为什么是“价值论本体”
    第2章 非线性动力学、确定性混沌和复杂适应性系统:入门指南
    2.1 非线性动力学和混沌
    2.1.1 简要发展历程
    2.1.2 动态系统
    2.1.3 确定性混沌
    2.1.4 混沌的定性表征
    2.1.5 混沌的定量描述
    2.1.6 时间序列的预测和可预测性
    ……
    第3章 非线性、复杂性和战争:适用性的八个层面
    第4章 EINSTein:数学基础
    第5章 EINSTein:方法论
    第6章 EINSTein:行为样本
    第7章 训练Agent
    第8章 结论与思考
    [​IMG]
     
  10. 我还是觉得你想的太简单了...别的不说,employee怎么知道自己真在处理的问题事实上是自己处理不了的,就没这么简单。
    还有问题的分类,凭啥问题A分给1,问题B分给2?更不说大问题拆解为若干个小问题了...

    我觉得你的思路假设agent拥有人的智能,事实上agent能有蚂蚁的智能就谢天谢地了...
    按照你目前的设想,我觉得最有可能的结果是全部找你这个老板来做...

    最后,函数式语言的核心思想跟agent完全没关系...一定要说语言的话,我觉得跟你这个思想最接近的语言是SmallTalk。
     
  11. lvsoft兄,偶最近的學習體會:agent是基于簡單行為規則的仿真個體(比如元胞自動機),通過自組織交互去涌現復雜性現象,再從高層去觀察整體。
    偶們上面的一些想法走偏了:試圖一開始就把每個agent定義好太多復雜的功能屬性,這是傳統高大全AI專家系統的思路。
     
  12. 所以我说agent拥有蚂蚁的智能就谢天谢地了嘛~~
    agent本身就是用来研究一系列简单规则叠加和相互作用之后,在宏观层面显现的复杂性的~
    简单到复杂,复杂到混沌。复杂这个现象十分的奇美~~
     
  13. 1. 函数式语言中有模式匹配,这是它的主要特色之一。如果一个employee找不到适当的模式去匹配,那它就不知如何处理这个问题。象专家系统中的知识库一样,如果系统在知识库中找不到处理某个问题的规则,那就属于处理不了的问题。

    2. 问题的分类属于职责设计的问题,你公司的的职员都是对应于某个职位的吧?你招聘时对每个职位都写得很清楚吧?这个职位的职责也是您定义的吧?例如公司被重组这个问题,肯定要涉及到老板,财务人员等来处理。每个employee都负责自己的职责domain,与现实世界中的没什么区别。你想想,多么容易建模啊。

    3. agent是一种编程思想,是比OOP更抽象更上层的一种编程思想。实际上与AI不搭边。你可以把AI放进去, 也可以不放进去。所有的结果可能由老板来做?没错。不过,复杂的可以由软件人员来做,搭成一个平台,简单的,包括策略性的东西由用户来做。

    4. agent与OOP是对应的。agent也可以由命令式语言来实现,但命令式语比函数式语言比着天生的缺陷,所以agent模型用函数式语言有了诸多的优点。正象你可以用C语言实现OOP的思想(有人实现过),但存在的问题太多了。
    agent近几年不会实现,因为改变现有的程序员的思想是很困难的。所以要等新的一代人成长起来了,老的一代程序员被的力量取代了,agent才能流行起来。这个周期我定义为10年为一代人。正象股市一样,10后,新的一代人成长了起来,不知天高地厚,不知风险为何物,冲向股市,造就了大牛。10年一个大牛市就是人的因素在起作用。这里不谈经济面因素。

    5. smalltalk是OOP方面编程语言的先驱。象C++等借鉴了它的许多东西。正象现在我们用的windows正是模仿了OS2操作系统一样。OS2倒下了,windows起来了。
    函数式编程语言的先驱是haskell。大都以它为蓝本的。
     
  14. agent仅是一种编程思想,跟OOP一样。至于用它来做什么,简单或复杂,完全是另一码事。
     
  15. 感觉这位兄弟对函数式语言挺感兴趣的~~不过我觉得你有几个地方理解的不太对。

    1.FP的先驱是haskell?LISP表示压力很大~haskell只是最为纯粹的FP实现而已,FP实现有很多种,最早的是LISP,然后还有Scheme,O'Camel,ErLang,等等等等。其实不那么的严格限制的话,JavaScript也可以算FP啊,Python也可以写纯FP啊,Ruby还支持continuation这么高级的特性呢,一切支持lambda演算的,内建closure的,都可以当FP语言使用。

    2.Windows不是模仿OS2吧。Windows模仿的是Mac。如果我没有记错,并且一定要说清楚这段历史的话,IBM主导搞的OS2,MS是参与人之一。但是MS不甘心沦为打工仔而没有自己的核心产品,因此也自己并行的搞了一个OS,就是Windows。所以OS2和Windows是同期并行开发的系统,IBM拥有Windows的可执行文件的细节,这也是为啥OS2/warp知道怎么执行windows程序的原因。

    3.你提到了命令式语言比函数式语言存在的天然缺陷问题,不知道能否仔细谈谈到底是什么缺陷?另外你觉得函数式语言存在啥天然缺陷不?不然为啥现在流行的都是C,C++,Java这样的命令式语言,而最流行的函数式语言甚至要排到20名之外么?函数式语言明明拥有悠久的历史啊,从上世纪70年代至今已经过40年了,按你的定义已经有四代人了。就算是Haskell,也比95年诞生的Java早啊,为啥现在后者使用人数第一,而前者,包括众多FP语言,甚至许多人都没听说过呢?这里面肯定有原因啊?

    4.关于Agent,其实agent也就是5-10年前在学术上比较流行。现在已经不怎么热了。所以我始终不太明白你想用Agent做什么?模拟市场?还是只是利用这个思想去做一个自动化交易系统?不管是哪种,我都觉得不是很有意义。

    5.最后回到你的第一个问题,Haskell里面的模式匹配不能算是主要特色,这个就像是C++里面的函数重载一样,有可以方便点不用写一大堆if/else分支,没有也无所谓,并不是关键。而且这个模式匹配并不等同于问题的匹配。不然这么多专家系统就不用做了,直接套用Haskell的模式匹配不就行了。
     
  16. 1. 说先驱也许不恰当。应当说是对其它语言影响较大合适。
    JavaScript, Phthon, Ruby按照行业的分类,最好不要划FP。

    2. OS2与WINDOWS很相似,与MAC就差之千里了。原来的WINDOWS3.1, WINDOWS95仅仅只是DOS的外壳,并不是一个真正的OS。直到WINDOWS2000, WINDOWS NT以后的版本,它才是一个独立的OS. 随便它模仿的谁,我不太关注这个。

    3. 命令式语言的缺陷我也说不清楚,可以从网上搜一下就了解得很清楚。FP肯定也存在缺陷,如果我说不存在,那就违背了任何事物都有它的两面性这句哲理。流行的东西不一定是最好的,现在排名在后的不一定将来也会排名在后。最热门的股票不一定是好股票,现在排名靠后的股票不一定将来也会排名靠后。HASKELL是集其它的语言的大成者,也是纯粹的FP,但不适合做工程项目。我不太关注JAVA,无非是把C++改了改吧成了JAVA。有许多迷惑的地方还是网上搜上吧。我本人能力有限,解释不清楚。也不想长篇累牍地在此占太多篇幅。

    4. 我不想模拟市场。当然有人在这么做。我的本意是把每个策略改为每个AGENT。最好能模拟人的思维过程(不一定是AI),把这个过程用做策略吧。这只是建模的角度不同。我不反对用其它方式来实现。事实上我本人也是精力有限。

    5. 模式匹配不是HASKELL独有的。它是所有FP的特色。如果你只是开始了解它,从逻辑上看它与if/else, switch很相似。其实它的功能要强大得多。它对匹配的类型没有限制,甚至是一个函数,甚至是一个它从来没遇到过的类型。而且它还可以把命令式语言的所有if/else,while, for等全部去掉。判断与循环是命令式语言的核心,如果没了这些,程序还能成为程序吗?其实它最大的副作用是不符合人的思维过程。人的思维是线性的。不象计算机那傻傻地循环一遍又一遍,大量的重复运算也吞噬了CPU的资源。 用C++建模(有人已总结了许多现成的设计模式,这里不涉及)太复杂,FP可简化建模,AGENT就是它的模型之一。这对于软件人员的代码简化及从云里雾里的模式脱离出来,对于可维护性都有意义的。我现的PC是4核,并行程序开发将来的趋势,这更是FP的特长。
    FP可用接近于数学函数来编程,而不象C++写一个数学函数,没有大量的注释几乎让人看不明白。
    如果想建造一个接近于自然语言的子集,这样的程序写成的策略会更容易让人看懂,看懂其是如何思维的。再看看用MT5里写的策略(C++),让人摸不着头脑。有人说,自己写的程序,过两个月后再看,如同看别人的程序。原因是什么?原因是现在的编程语言离自然语然差别太大。专业的程序序况且如此,更何况非专业人员?
    模式匹配仅是专家系统的实现方式之一。书本上不是讲了吗?有好几种专家模型,在这里不再啰嗦。
    我是边想边写,不全面。欲知详情,还需上网或从书本上看吧。
     
  17. 我曾用LISP编写过简单的专家系统,而且我觉得专家系统比较适合外汇市场。专家系统其实就是下面结构:
    select 1 2 3 4 5 6 7 8 9 10 11.............N
    case 1 do program1
    case 2 do program2
    .
    .
    .
    .
    case N do Program N

    人工智能的低级形式专家系统虽然看起来不那么智能,但能解决问题就足够了。
     
  18. 人工智能学点够用就行,哪有时间研究纯理论呀,看看他们的思想就行了,用人工智能实现的思想,用自己的方法,尽可能做山寨版的策略快点上手实用才是正途。我们的时间不多呀。
     
  19. 其实select case逻辑的效率并不高
    所以应该采用更高效率的逻辑。