精华内容
下载资源
问答
  • 讨论了一种基于面向对象的信号模型构造方法在自动测试系统(ATE)测试环节中的应用,以解决测试资源有限和配置自动化的问题,并给出了一种由所需信号自动获取其资源信息的实现方法 。通过分析测试资源与生成信号之间的...
  • Linux epoll模型实现初步探讨

    千次阅读 2013-09-26 23:13:03
    Linux epoll模型实现初步探讨 一、epoll模型概念与比较 select、poll、epoll一样都是I/O多路复用技术。网络编程还有其他常用模型,如每连接一进程(PPC, 在Apache服务器中采用)、每连接一线程(TPC)。还有Windows中的...

    Linux epoll模型实现初步探讨


    一、epoll模型概念与比较

    select、poll、epoll一样都是I/O多路复用技术。网络编程还有其他常用模型,如每连接一进程(PPC, 在Apache服务器中采用)、每连接一线程(TPC)。还有Windows中的IOCP

    select/pselect, poll/ppoll与epoll的比较:

    1. 历史上,select最先出现,pselect是POSIX定义的pselect变体的版本,可以指定信号屏蔽字。select可以侦听的文件描述符数收到FD_SETSIZE,Linux的值为1024

           #include <sys/select.h>
    
           int pselect(int nfds, fd_set *restrict readfds,
                  fd_set *restrict writefds, fd_set *restrict errorfds,
                  const struct timespec *restrict timeout,
                  const sigset_t *restrict sigmask);
           int select(int nfds, fd_set *restrict readfds,
                  fd_set *restrict writefds, fd_set *restrict errorfds,
                  struct timeval *restrict timeout);
    2. 随后,出现了poll/ppoll,去掉select的FD_SETSIZE的限制,并使用struct pollfd描述感兴趣的事件,粒度更细。

           #include <poll.h>
    
           int poll(struct pollfd fds[], nfds_t nfds, int timeout);
           int ppoll(struct pollfd *fds, nfds_t nfds,
                   const struct timespec *timeout_ts, const sigset_t *sigmask);

    3. 在后,Linux2.5开始引入了epoll模型,该模型的使用需要一组系统调用,将注册感兴趣的事件(epoll_ctl)与获取时间通知操作(epoll_wait)解耦,解决了每次调用select和poll都需要在内核态和用户态之间来回拷贝文件描述符列表,且在返回后,调用者还需要手动遍历整个列表进行判断所带来的性能问题。

    注:尽管epoll号称异步事件通知,但仍需调用者将事件poll out,而非像IOCP那样自动在独立的工作线程中完成用户回调的方式。

           #include <sys/epoll.h>
           int epoll_create(int size); //只要size>=0即可。内核会忽略掉size的值
           int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
           int epoll_wait(int epfd, struct epoll_event *events,
                          int maxevents, int timeout); // maxevents不可大于#define EP_MAX_EVENTS (INT_MAX / sizeof(struct epoll_event))

    二、epoll的实现

    epoll是基于eventpollfs文件系统实现的。

    1. epoll_create实际上会在内核中创建一个eventpollfs文件系统的文件和一个struct eventpoll的实例,后者拥有一个描述已注册侦听事件列表(每一项用struct epitem描述,基于红黑树实现)、一个ready列表(维护待通知事件)和一个等待队列(用于对epoll_wait的进程阻塞)。

    2. epool_ctl用户注册侦听事件,简单来讲,就是创建一个epitem,加入已注册侦听事件列表(内部使用红黑树组织),同时会为item注册一个回调函数(ep_ptable_queue_proc)到被侦听描述符,描述符上有事件到达(如socket接收缓冲区中到来数据)时会回调本函数。回调函数的主要作用就是将item加入ready列表,并唤醒阻塞在epoll_wait调用上的进程,这样就完成了所谓的“异步事件”通知机制。

    3. epoll_wait主要内容为:首先判断ready列表是否有待通知事件,若无,则会阻塞在eventpoll上对应的等待队列。等待通知到达后,会将到达通知对应数据从内核态拷贝到用户态的events数组中。

    注:网上有人说从内核态到用户态传递通知是基于共享内存(mmap)的,那应该是较老的内核或2.5版本中的实现,3.10版本并没有使用mmap。

    展开全文
  • 关于脑电信号识别稳定性的一些探讨,王海,,本文对脑电识别稳定性问题进行了探讨,指出该项指标对脑电识别的重要意义且在实例中给予展示,文章指出应充分考虑样本对识别模型
  • 以失速型风电机组为例,建立基于三质量块轴系模型的单机对无穷大母线系统小信号模型,并采用模态分析法探讨系统电气参数对失速型风电机组轴系扭振特性的影响。为方便不同机型及多机风电机组的扭振特性的拓展研究,...
  • BRATUMASS系统信号的多重分形模型统计分析,陶志福,姚萌,文章主要是针对BRATUMASS系统已获取的数据,探讨如何从多重分形角度,寻找不同实例人群间分形谱参数之间的差异,提出信号多重分形计
  • 【MES】MES多工厂模型探讨

    千次阅读 2018-04-08 00:00:00
    主要的不确定性蕴含于三个领域:技术、文化、制度。 边界模糊: 数字世界与现实世界的不断融合成 CPS 不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向...

    随着国内企业对MES认知的提升,越来越多的制造企业已不满足单个工厂实施MES,而是考虑如何规划集团MES架构。本文就如何构建集团MES,多工厂架构,做一些经验分享,给相关企业一些参考。


    前言


        随着国内企业对MES认知的提升,越来越多的制造企业已不满足单个工厂实施MES,而是考虑如何规划集团MES架构。对比国外MES产品和案例,关于集团MES架构的案例并不多,这说明中国是当之无愧的制造业大国,其制造业的复杂度,制造业的体量,已促进了中国制造业的各行业领头羊企业率先思考如何布局集团MES,多工厂MES。


        本文就如何构建集团MES,多工厂架构,做一些经验分享,给相关企业一些参考。


        集团+多工厂架构,从几个方面来讨论:

    • MES服务器架构如何构建;

    • MES功能如何划分;

    • 如何做到多地的数据传输与稳定;

    • 如何进行多工厂建模。


    1 多工厂业务模型


        集团多工厂模型复杂,因为各工厂、车间生产形态可能不一样、生产线不同、管理方法不同,以下是一个多工厂业务模型:如图1所示。

    图1 多工厂业务模型 


    2 多工厂服务器架构


        企业IT一般考虑投资效益,希望一套服务器能支持多个工厂的应用,每个工厂之间用专线或VPN方式连接,这样的好处是运维相对简单,由集团的IT专业人员对服务器、数据库、系统做运维,能保证系统的稳定;如图2所示。

    图2 多工厂集中式部署方案 


        如果集中一套服务器部署,服务器配置要求高,且要求每个节点冗余,包括数据库集群、应用服务器集群、接口服务器集群;特别是应用服务器需要2台以上做集群;网络必须支持冗余,交换机双节点、网络冗余(例如电信或联通双网络),通过这样的配置才能确保MES系统的高可用性,避免服务器和网络异常时,导致停线。如图3所示。


    图3 多工厂集中式部署方案


        如果每个工厂部署一套服务器,服务器可以精简,部分应用集中部署在一台服务器上,例如报表与历史数据库服务器;分布式部署,极大降低了服务器问题导致的停线,一旦服务器、系统或网络有问题,也仅仅是一个工厂出现异常。


        但是分布式部署产生的问题是,集团IT希望运维能简易,数据能集中,否则某些区域的工厂不具备MES运维能力,缺乏运维人员,当MES系统出现问题时,不能及时解决;另外分布式部署,MES系统也难统一版本,各个工厂自主一套MES系统,重复开发与部署,代码和管理混乱;系统运维不标准,简单的数据库监控与备份也难每日确保执行;除了硬件投资翻了几倍外,数据库与MES授权费也是翻倍,无论是Oracle/Sqlserver数据库,还是MES授权,如果是多工厂分布部署,必定会产生服务器授权费,这样极大增加了企业实施MES的费用。


        多工厂的数据交互复杂,需要增加接口开发来汇总集团需要的数据,例如集团的排产和计划监控、各工厂人员、设备的效益分析、各工厂的生产效率、产能统计,还有研发中心的工艺文件发布,都需要频繁的接口来汇集和分发数据;如图4所示。

    图4 多工厂服务器架构 


        那么MES能否像DMS销售系统、WMS仓储系统、甚至ERP那样,做到集中部署呢?或称为云MES呢?我们知道MES属于车间层,和车间控制层、设备层紧密结合,如果MES服务器放在异地,远隔成百上千公里,即使有企业专线,是否能和车间控制器、车间设备高速集成呢?一些多工厂企业,工厂之间已经架构了专线,把全国各个工厂连接在一个大的“局域网”内,只要通过防火墙或企业路由器,开放几个MES服务器IP和端口,即可简单接入MES,例如在新疆工厂,客户端电脑输入一个IP 172.168.x.x地址,就能连接到远在北京的MES服务器,那么在确保网络速度和稳定性都很可靠时,异地车间设备通过专线去集团MES服务器,会有什么问题呢?


        不少集团IT在规划MES时,提出了刚才的问题,而且看似找不到这样做的弊端,但这样的思路方式,是没有站在MES所处的企业信息层级来思考的,因为MES是紧密和车间层结合的,虽然MES有部分功能是车间排产、车间物料配送、车间工艺指导,但更多的是车间设备集成,车间数据采集等,需要与设备大量进行数据交互。例如轮胎厂,仅仅在检验工序,一条轮胎需要经过均匀机检测、动平衡检测、X光机检测、外观检测,每条轮胎从检测设备获取的数据达到10条以上,一个轮胎工厂2条生产线,每小时产量3000条,等于每小时有3万笔数据,从设备传输到MES服务器;也就是说一个有规模的轮胎质检车间,每日2班可产生48万笔数据,每年产生超过1亿多笔数据,这么频繁的数据交互,不是ERP、WMS系统能比拟的,因为ERP等系统的数据,大部分是人工操作产生,并非如MES来自设备高频率产生的数据;当然有些工厂会使用生产实时数据库,例如Rockwell FT History、Wonderware Historian、GE Fanuc iHistorian,但如果要对数据进行快速分析计算,例如轮胎参数采集后,要立即根据检测数据进行轮胎等级判断,立即传输给轮胎分拣系统,那还是需要Oracle/Sqlserver这种关系型数据库进行计算;那么在高频率的MES与设备数据交互时,VPN专线的集中服务器部署是否就满足了呢?其实刚才的数据统计,已经说明了答案,我们都知道服务器有I/O瓶颈,内存瓶颈,CPU瓶颈,磁盘读写瓶颈,如果一个轮胎集团企业,把全国4个工厂集中在一个MES部署,那每小时会产生12万笔数据写入或读取;而那我们制造业有多少成本构建一个小型的12306机房,或一个门户网站的机房呢?而且MES平台是否要发展类似SAP的Hana内存数据库技术来解决高速访问的问题呢?所以当一个制造业集团的工厂越来越多时,集中式服务器部署,势必会遇到性能瓶颈而无法突破。


        另外集中式部署,也增加了工厂停线的风险,大家都知道MES是支持智能制造工业4.0的基础系统,一旦MES系统出问题,生产线就会停线,而多工厂集中部署,势必会导致所有工厂停线;另外MES功能和工厂的设备类型,生产线布局,管理模式紧密相关,例如一个生产风电的集团,有机舱工厂、电机工厂、叶片工厂、轮毂工厂、电柜工厂、装配工厂,我们如何在一套集团MES服务器内,部署6套不同形态的MES系统呢?是否要在一套MES内,通过参数配置实现6个制造形态,那么MES功能会变得非常复杂。虽然ERP能通过配置实现多个行业的功能,但毕竟ERP标准化程度比MES高很多。


    3 多工厂功能架构


        那么怎么解决一些集团制造业提出的MES集团化管理需求呢,例如有些企业的计划由总厂制定,物流配送由集团统一管理,产品研发数据由一个研发中心发布,MES基础数据由总厂维护,生产绩效由总厂管理,如果有这些需求,如果是分布式MES部署,那么数据接口会非常复杂,也无法支持集团的统一管理。HanThink 推出的SmartWork套件,良好的解决了这个问题,SmartWork把MES功能划分为PEC(Production Execute Center)车间执行层和PMC(Production Management Center) 车间管理层2个模块,PMC实现集团化部署,PEC实现分布式部署,与车间设备直接对接,例如以一个汽车制造集团为例,MES的PEC和PMC功能划分如下:如图5所示。


    图5 MES PMC管理系统


        PMC车间管理层把与车间关系不大、且通用性比较高的模块进行了集中,例如排产、基础数据管理、ERP接口、工艺文件等。PEC车间执行层,则集中在设备接口、车间ANDON,车间监控、车间打印这些模块,也就是脱离PMC层,在车间PEC层也能独立运行,在PEC层会驻留一定数据量的已排产的计划、已维护的基础数据,当然PEC层执行完毕的数据采集、生产产量、质量数据,也会定时传输到PMC层,作为报表统计依据;另外在PEC层不会一直驻留已生产数据,凡是过期数据,而且已经传输给PMC产生报表,那么在PEC层的生产数据会清理,这样让负责车间执行层的PEC始终处于数据不增长的状态,一直处于高频率执行车间的各种操作;而报表统计,历史数据查询,需要大数据、高消耗运算的,均在PMC层,包括历史数据库的迁移。这里特别要提到,如果要实现PMC集中化管理,企业的ERP、PDM等与MES接口系统,也需要实现集团化管理,例如ERP就不能每个工厂各一套系统,而必须也用集中式部署,否则会造成一套MES PMC要开发多个不同ERP的接口。


    4  多工厂接口架构


        PEC层提供多种与车间设备接口方式,特别针对常用的设备,已有插件配置,可直接配置完成连接,例如阿特拉斯\马头的拧紧设备、Fanuc\西门子数据机床、梅特勒\赛多利斯的电子称,这样可以让多工厂的PEC能尽量功能统一,维护简单,以下是PEC常用接口:如图6所示。

    图6 自动化接口服务 

        在PEC和PMC之间的数据传输,采用MQ消息机制传输,确保数据传输的稳定与高效,一个集团PMC可支持与多个工厂的PEC接口通讯,即使是某个工厂的生产模式非常特殊,那么它的PEC系统,能独立运行,基础数据、计划等可以用导入方式,例如企业在国外投资一个组装工厂,生产计划不稳定,完全人工制定,产量也不大,那么就只需要部署一个简易的PEC车间系统,不需要和集团PMC系统接口。


        以下是集团PMC和车间PEC的接口模型:如图7所示。

    图7 集团PMC和车间PEC的接口模型 


        PMC,PEC多工厂架构完成后的方案如下:如图8所示。

    图8 PMC,PEC多工厂架构完成方案 


        这里特别要强调从设备到上位数据传递的变化,即要按数据频率,分散在设备层、车间控制层、MES层、ERP层,而且越往设备层,数据传输频率越高,数据缓存越小;例如设备停线数据,如果是设备瞬间中断的毫秒级数据,在设备层只会有短暂的脉冲信号存储,而到了秒级的停线信号,则会发给车间PLC层,在PLC里做一定缓存,显示在车间HMI显示屏幕,提醒车间注意,而如果是分钟级别的停线信号,则要发给MES,在MES存储,维护停线原因,并做分析班次、车间的停线分析报表,而ERP需要的停线数据,则需要到月数据,年数据;这样的数据设计分布,会把高频率的信息交互交给底层处理,而减少上位系统的处理压力。这个设计模型,也贯穿在SmartWork的多工厂模型中,从而提高了MES平台的稳定性。如图9所示。

    图9 层次设计模型


    5 多工厂对象建模


        关于在构建PEC车间执行层时,如何能满足一个集团多个不同制造形态,必须要在MES平台依据ISA95要求的4类9大模型来进行生产建模,这样才能灵活配置生产过程,而不是为一个生产形态而开发一套系统,那样就无法做到一个集团下MES系统的高度整合。HanThink SmartWork即是按ISA95来构建工厂对象,用对象配置,以及提供对象API方法,快速构建工厂生产流程:如图10所示。

    图10 HanThink SmartWork


    6 总结


        集团制造业选择集中式部署还是分布式部署,取决于MES要实现什么样的目标,以及规划的MES方向。如果MES重点在车间控制,与设备高度集成,那么毫无疑问是用分布式部署,集团报表管理模式;如果MES重点在生产管理,统一生产协调,而把设备采集、控制已分布到各个设备供应商完成了;而且多工厂的生产模式比较统一,那么MES可以集中部署,方便维护与管理。



    人工智能赛博物理操作系统

    AI-CPS OS

    人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。


    AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。


    领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:

    1. 重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?

    2. 重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?

    3. 重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?

    AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:

    1. 精细种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。

    2. 智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。

    3. 高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。

    4. 不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。

    5. 边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。

    AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:

    1. 创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;

    2. 对现有劳动力和实物资产进行有利的补充和提升,提高资本效率

    3. 人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间


    给决策制定者和商业领袖的建议:

    1. 超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;

    2. 迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新

      评估未来的知识和技能类型;

    3. 制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开

      发过程中确定更加明晰的标准和最佳实践;

    4. 重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临

      较高失业风险的人群;

    5. 开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。


    子曰:“君子和而不同,小人同而不和。”  《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。


    如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!


    新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。



    产业智能官  AI-CPS


    用“人工智能赛博物理操作系统新一代技术+商业操作系统“AI-CPS OS”:云计算+大数据+物联网+区块链+人工智能)在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链


    长按上方二维码关注微信公众号: AI-CPS,更多信息回复:


    新技术“云计算”、“大数据”、“物联网”、“区块链”、“人工智能新产业:智能制造”、智能金融”、“智能零售”、“智能驾驶”、智能城市新模式:“财富空间“工业互联网”、“数据科学家”、“赛博物理系统CPS”、“供应链金融”


    官方网站:AI-CPS.NET



    本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!



    版权声明产业智能官(公众号ID:AI-CPS推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com





    展开全文
  • 数学模型神经网络在程序化交易模型构建中的运用探讨 作者:唐中 目前,程序化交易已经成为国外投行和金融机构交易的主流手法,因为程序化交易是追求稳定持续的盈利模式,能够实现交易的稳定化,从而杜绝人工交易中的...

    数学模型神经网络在程序化交易模型构建中的运用探讨

    作者:唐中

    目前,程序化交易已经成为国外投行和金融机构交易的主流手法,因为程序化交易是追求稳定持续的盈利模式,能够实现交易的稳定化,从而杜绝人工交易中的诸多不确定性和规避人性情绪化的干扰,虽然程序化交易本身只是一个工具,用人的思想加上电脑的执行,但是真正专业的程序化模型设计过程却不那么简单。

    就交易策略而言,一般分为两大类,一是人工策略交易即人工下单交易;二是系统策略交易。系统策略交易一般又分为人工系统策略交易和计算机程序化系统策略交易。

    计算机程序化系统策略交易又分为半智能程序化系统交易和全智能程序化系统交易。本文所探讨的就是后者,即数学模型神经网络如何在全智能程序化系统策略中发挥作用。

    神经网络:我们在此所称的神经网络一般指人工神经网络,是一种旨在模仿人脑结构及其功能的信息处理系统。人工神经网络是一种应用类似于大脑神经联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activationfunction)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。人工神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。

    神经网络的基本构成:神经网络主要是由神经元构成,而神经元是按照一定拓扑结构广泛互联形成的,并按照一定的学习规则,通过对大量样本数据的学习和训练,把网络掌握的知识以神经元之间的连接权值和阈值的形式储存下来,利用这些知识可以实现某种人脑功能的推理机,这种推理机通过机械化运作方式发挥功能。人工神经元是对生物神经元的一种形式化描述,它对生物神经元的信息处理过程进行抽象,并用数学语言予以描述,对生物神经元的结构和功能进行模拟,并用模型图给以表达。单个的人工神经元的功能是简单的,只有通过一定的拓扑结构将大量的人工神经元广泛连接起来,组成庞大的人工神经网络,才能实现对复杂信息的处理与储存,并表现出各种优越的特性。

    人工神经网络图:人工神经网络图:

    神经网络结构:就数学模型而言,神经网络结构一般分为两大类,即层次型结构和互联型结构,层次型结构的神经网络将神经元按功能分为若干层,一般有输入层、中间层和输出层,各层顺序连接。输入层接受外部的输入信号,并由各输入单元传递给直接相连的中间层单元。中间层是网络的内部处理单元,与外部没有直接联系。神经网络所具有的模式变换能力,如模式分类、模式完善、特征提取等,主要是在中间层进行的。根据处理功能的不同,中间层可以有多层也可以为简单层。由于中间层单元不直接与外部输入输出打交道。故常将神经网络的中间层称为隐含层。输出层是网络输出运行结果并与显示设备或执行机构相连接的部分。

    典型神经网络结构图:典型神经网络结构图:

    人工神经网络的特点和优越性:主要表现在几个方面:第一,具有自学习功能。例如实现实现图像识别时,只在先把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提供经济预测、市场预测、效益预测,其应用前途是很远大的。第二,具有联想存储功能。用人工神经网络的反馈网络就可以实现这种联想。第三,具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算量,利用一个针对某问题而设计的反馈型人工神经网络,发挥计算机的高速运算能力,可能很快找到优化解。第四,应用领域十分广泛,这些领域主要包括:模式识别、信息处理、知识工程、专家系统、优化组合、自动化控制,以及本文所探讨的金融市场程序量化交易模型构建等等。随着神经网络理论本身以及相关理论、相关技术的不断发展深入,神经网络未来的应用定将更加深入广泛。就金融领域自动化交易模型而言,笔者也只是试着探讨而已,有不足之处还望读者多多理解。第五,神经网络可以用作分类、聚类、预测等,通过历史数据的训练,神经网络可以学习到数据中隐含的知识,在问题中找到某些特征以及对应的评价数据,用这些数据来训练神经网络,进而达到自适应功能,其应用较广泛的就是BP神经网络。

    数学模型中常用的两种神经网络:在数学建模中,常用的神经网络主要有两种:一种是基于误差反转算法的前馈神经网络,即BP神经网络,主要用来实现非线性映射;另一种是SOM自组织特征映射神经网络(SOM),主要用来聚类和模式识别。它们两者在内在结构上有所区别,下面就分别对其进行简要说明:

    BP神经网络:人工神经网络有很多模型,但是目前应用较广泛的是前馈神经网络中的误差逆传播学习算法(Error Back Propagation),简称为BP神经网络。它是前馈神经网络中的核心部分。基本算法包括2个方面,即信息的前向输入和误差的反向输入,计算实际输出时是按从输入到输出的方向进行,而权值和阈值的修正从输出到输入的方向进行。其结构图如下:

    BP神经网络基本结构图BP神经网络基本结构图

    BP网络结构是信号前向传播导入,经输入层到中间隐含层实现正向传播,若输出层得到期望值,则学习算法结束。若未得到期望值则反向传播,将误差信号按原连接通路反向计算,根据误差梯度下降法再调节前各层的权值和阈值,权值和阈值随着更多正向信息变量和反向信息变量的不断进入从而始终处于动态调节之中,目的就是使修改后的网络最终输出能接近最佳期望值。通俗点比喻就类似一个人的成长经历,在成长过程中不断纠正错误,不断吸取教训,还不断总结成功经验,以免下次再犯同样错误。其模型结构图见下:

    BP网络结构BP网络结构

    在这里我想特别强调权值和阈值的概念,因为它们很重要,关系到网络最后的结果。权值和阈值是神经元之间的连接,将数据输入计算出一个输出,然后与实际输出比较,误差反传,不断调整权值和阈值。理论上而言,BP网络以其优良的非线性逼近性能,在模式识别、智能控制、非线性优化等领域都有大量应用,近年也有不少人用BP神经网络应用在股指期货日内短模自动化交易上。BP网络的理论优势主要表现在学习速度和泛化能力上,甚至不需要过多样本,较适合非线性特征,学习速度表现在满意地逼近训练样本所花费的时间上,泛化能力表现在对未训练样本的逼近程度上,既能够根据训练集的表现高度拟合未来数据即预测功能,这是一个神经网络是否优良的根本考验,BP神经网络在理论推导上似乎完全能做到。

    可是真的是这样吗?为什么很多运用BP网络神经模型构建起来的交易模型实践效果并非如训练集效果那样好甚至出现巨大误差呢?

    泛化能力并没有得到充分体现,这又是什么原因呢?就此笔者浅谈点个人看法如下:

    1、  很多人过于盲信BP神经网络的数据自适应纠错、数据容错和数据泛化能力,特别疏于对历史样本数据的收集、层次筛选及数据内含性质甄别,缺乏对研究标的样本数据含有的内在本质规律进行挖掘和体验,导致样本数据噪声过大、结构不合理不科学。通常而言,样本数据M增加,泛化能力增加。

    样本数据训练效果好,泛化效果也越好。但这种趋势有个极限和度,当达到某个极限时,随着训练能力的提高,预测能力反而下降,陷入两个极端,要么样本数据存在严重不足和缺陷,要么样本数据过多过细出现过拟现象。

    这两种现象都是学习了过多数据样本细节,过于注重数据现象,而不能反映样本内含有的本质性规律,这也是BP神经网络的缺陷,过大强调因数据而预测数据,过于放大自适应预测,却不注重样本数据内在性质上本质规律的挖掘,自然容易走偏,甚至在某些特定阶段拟合出错误的规律,尤其不适应中线趋势波段交易模型构建。

    2、  采用BP网络设计程序化交易模型很容易陷入“自下而上”的模型理念构建陷阱,导入过大数据噪声,这是程序化交易模型设计者要尽量避免的。

    通常而言,在程序化模型主体设计理念上分为“自上而下和自下而上两种”,前者是理念优先,后者是数据优先。后面会讲到它们之间的区别。

    3、  由于学习速率是固定的,因此网络的收敛速度慢,需要较长的训练时间。对于一些复杂问题,BP算法需要的训练时间可能非常长,这主要是由于学习速率太小造成的。

    4、  其次,BP算法可以使权值收敛到某个值,但并不保证其为误差平面的全局最小值,这是因为采用梯度下降法可能产生一个局部最小值。

    5、  网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。因此,网络往往存在很大的冗余性,在一定程度上也增加了网络学习的负担。

    6、  网络的学习和记忆具有不稳定性。也就是说,如果增加了学习样本,训练好的网络就需要从头开始训练,对于以前的权值和阈值是没有记忆的。但是可以将预测、分类或聚类做的比较好的权值保存。

    基于上述原因,简单采用BP神经网络运用于金融市场的程序化交易模型的构建主体还是有一定的局限性,需要结合其他神经网络效果应该会更好。

    SOM自组织特征映射神经网络:生物学研究表明,人的大脑皮层中存在许多不同功能的神经网络区域,每个功能区域完成各自的特定功能,在接受特定信息刺激时也会做出相应特定的反应,这种特定细胞对特定信号的特别反应并不是天生的而是后天训练形成的。

    自组织特征映射神经网络模拟大脑神经系统功能,是一种无监督竞争试学习的前馈网络,在训练中能无监督自组织学习,它通过学习可以提取一组数据中的重要特征或某种内在规律,按离散方式进行分类,网络可以把任意高维的输入映射到低维空间,并且使得输入数据内部的相似性质表现为临近的特征映射,并保持其拓扑结构不变,这种分类反映了样本集的本质区别,大大简化了一致性准则中的人为因素。

    在多数情况下,人在认识的过程中没有预知的正确模式,人获得大量知识常常是靠“无师自通”,即通过对客观事物的反复观察、分析与比较,自行揭示其内在规律,并对具有共同特征的事物进行分类归类,对于人的这种学习方式,基于有导师学习策略的神经网络(BP)是无能为力的。

    所以,自组织神经网络的无导师学习方式更类似于人类大脑中生物神经网络的学习,其最重要特点是通过自寻找样本中的内在规律和本质属性,自组织自适应地改变网络参数与结构,这种学习方式大大拓宽神经网络在模式识别、分类、聚类方面的应用。自组织网络结构属于层次型网络结构,有多种类型。

    自组织特征映射是其中之一,它们的共同特点是竞争层。一般自组织神经网络是输入层、竞争层、输出层结构,输入层接受外界信号,向竞争层传输,竞争层负责对该输入模式进行分析比较、找出规律、正确分类。

    SOM自组织神经网络结构图SOM自组织神经网络结构图

    产生模型过拟合的一般原因:

    A、数据抽样时没有足够正确考虑到市场基本特点,导致抽出的数据样本不能有效足够代表市场运行逻辑或基本特征(市场运行规律),这往往是BP网络模型所忽略的;

    B、数据样本噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系,即忽略了本质,模型设计始终没抓住核心价值;

    C、  在决策树模型搭建中,如果我们对于决策树的生长没有合理的限制和修剪的话,决策树的自由生长有可能每片叶子里只包含单纯的事件数据(event)或非事件数据(no event),可以想象,这种决策树当然可以完美匹配(拟合)训练数据,但是一旦应用到新的业务真实数据时,效果就不理想。样本训练集尤其关键条件不要过度细化,要适当限制和修剪。

    D、在建模时的“逻辑假设”到了模型应用时已经不能成立了。常用模型都是在假设的基础上才可以搭建和应用的,常用的假设包括:假设“历史数据可以推测未来,市场历史会重演”,假设业务环节没有发生显著变化,假设建模数据与后来的应用数据是相似的,等等。如果上述假设违反了业务场景或者环境发送了变化的话,根据这些假设搭建的模型就有可能无法有效应用。

    BP与SOM优劣:在金融市场中的量化模型构建中到底应采用BP还是SOM?这要看投资标的、交易理念及模型构建者的投资经验而定了,笔者个人认为SOM神经网络特征映射应更适合有一定投资经验和交易理念的人,这更有利于思考市场运动的本质,而非特定阶段的数据拟合,从而提前避免数据陷阱过拟合,更贴近实战性和适应性。

    所以SOM神经网络对模型构建者而言一般要求具备一定的投资理念和经验作为基础,也就是先理念后建模。具体而言,SOM神经网络首先在数学建模中根据广泛性的历史样本理化出性状,并对样本进行正确的分类和归类,通过对已知的样本所蕴含的分类知识进行学习、提炼出某种基本的规律和特征,再利用这种分类规律特征效验交易理念。

    SOM网络是直接从所提供的样本内部学习分类知识,提炼出蕴含在样本中的相关知识,并将这些知识储存在网络的连接之中即拓扑结构互联,利用这些知识可以对未知的样本进行归类,建立推理机,为了防止数据陷阱和过拟合,提炼出的样本特征规律,要放在不同的训练集测试并同时具有广度性和深度性。

    全智能程序化交易模型系统的构建思路:搞全智能程序化交易模型设计,是绝对离不开神经网络知识的运用的,当今的市场走势更加复杂多变,若想用一种过于简单的某个突破理念就想在当今变换复杂的市场面前盈利已成为历史,精明的交易者越来越多,波动特性越来越复杂多变,面对现今更加复杂变换的市场,必须要运用更加复杂的知识工具,才能不断适应市场。因此,数学模型中的神经网络知识运用必不可少。

    只是若单纯采用BP神经网络构建模型是有一定缺限的,它的作用主要体现在样本训练集阶段,SOM网络更多可以达到检验理念和优化理念作用,因为理念一定是本质性的(下面会具体阐述),若程序化模型完全依靠数学模型神经网络而忽略市场运动的本质性,很容易陷入过拟合状态和数据陷阱,实盘效果一般不会理想,这是程序化交易的另一弊病。

    因此,如何在运用数学模型神经网络知识的同时又要避免陷入数据陷阱应是程序化模型设计的主要方向。

    程序主体设计理念:要解决上面的问题,首先要解决程序化设计理念问题,这是决定模型方向的问题,否则很容易陷入数据陷阱。在程序化主体设计理念上,一般分为“自上而下”的理念构建和“自下而上”的理念构建。“自上而下”的理念构建是先有交易理念,这个交易理念往往是建立在多年实战基础上,是经年累月反复的市场观察、体会、领悟和实践得出的初步经验,这个经验具有普适性、本质性,以此作为模型理念主要架构,再通过理念反推导构建交易系统,并将其程序化。

    比如索罗斯的交易系统,便是由他的反射理论推导构建出的交易程序。相反,一个无经验的新手,就很容易陷入数据陷阱和过度拟合状态,因为他们普遍不具备“自上而下”构建模型理念的能力经验,即对市场缺乏深刻的认识、领会及经验,只能盲目“自下而上”构建模型理念。

    而“自下而上”的建模理念往往不具有未来适应性或者实盘误差大,只是纯粹依据一堆某个特定时期的数据理化出的所谓知识和训练集,往往导入过多无关的、非本质的数据变量,偏离模型核心价值,导致数据噪声过大,没有考虑到模型关键本质性的特征和信息及其由此构建起来的投资理念,这种纯数学训练集构建起来的模型一到真实的实盘运用场景就很容易表现不佳,因为市场波动特性和数据样板会随着时间的推移而出现复杂多变状态,市场不会出现2个完全一模一样的走势,历史会重演但从来不是简单的重复。这也就是为什么当下很多程序化交易模型实盘效果不佳的根本原因,过于注重数据理论推导忽略本质理念。

    交易系统的优化:有些程序化交易者反对优化,因为优化过度会使交易系统适用于过去而无用于将来,即优化陷阱。其实这也是一个“度”的问题,过于简单的模型已经不适应当下及未来市场,过于复杂的模型又有可能陷入过度拟合陷阱,因此,我个人认为这里的关键就是看你采用的是数据优化还是理念优化,自下而上的模型理念设计往往是数据优化。

    打个比方,一个交易系统设计的理念是顺势突破交易法,如海龟交易法(突破20周期高低点),数据优化就是寻找突破N周期的最合适数值,而理念优化则是寻找比单纯的突破法更优秀更高效的交易思维或理念或组合。

    任何模型交易理念的雏形首先是基于个人实战经验、观察和逻辑思考得来,而这种理念还需要通过海量数据检测才可以进一步检验出交易理念的优劣,而这个过程是离不开数学模型神经网络尤其SOM网络知识运用的,如合理抽样、样本理化、特征提炼、知识提炼、分类等,在这个过程中就可以进一步检验交易理念雏形是否正确以及进行必要的修正优化。

    运用“层次型拓扑结构和SOM神经网络”应该就可以达到这个目的,找到交易理念的不足和优劣之处,去其糟粕取其精华,进而才能进一步检验和确认模型的核心理念价值,这个核心交易理念是决定模型是否具有未来适应性和实盘性的保障,因为市场波动特性虽然多变,但万变不离其终,人类的本质特性几百年从未改变,市场也是一样。

    系统整合:一套成熟优秀的程序化交易模型一定是系统整合的结果,交易过程是一个完备的有机体系,包括:模型构建基本理念和方式、交易策略、方向识别、信息处理、信号传输、执行、止盈止损离市策略、风险控制/稳定性控制等等,每个子系统都不是各自单打独斗,单个子系统的不合理设计也会影响到整个交易系统的表现,整体系统表现往往取决于各个子系统最佳协调组合的结果,形成一套完整运行的交易体系,这个体系是否优秀可以从三个方面检验,即“外推、性质和量化”,“外推”是检验模型在实盘前是否具有盈利前景和未来适应性的一个重要方法,一般分为时间外推和品种外推,即把模型放在不同数据集、不同抽样时间段、多角度多层次进行交叉回测,放在多个品种上进行多品种程序回测;所谓“性质”就是要避免三个方向,一是尽量避免超高频率交易;二是尽量避免自下而上构建模型交易理念;三是模型设计内容要以接近实战为原则,信号执行方式最好采用收盘价模型,必须要考虑到市场实际情况及滑点损失和交易成本因素等;所谓“量化”就是模型最终要有数据做支撑,用回测指标说话,任何模型首先必须要经得起过去历史数据的回测检验并得到各种满意的量化指标,

    如:年化收益率、盈利率、本金回撤、动态权益回撤、动态损益回撤、胜率、盈亏比、夏普比率、交易成本及滑点预估,最后还要观察这些指标在不同的回测阶段是否具有明显的变化规律等等,任何模型若连历史数据回测都无法过关,那可以肯定不会适用于未来,虽然回测过关并不代表一定适应未来,但一套成熟优秀的模型一般在设计阶段都会提前过滤和规避掉实盘中可能面临的误差,也会经得起实盘考验。

    交易系统的实盘使用和维护:市场行情波动特征也是会变的,主要表现在波动特性和交易环境上。举例来说,2002到2005年,只要有个最单纯最简单的均线系统,就可以发财。2005年以后这样简单的系统获利已经不稳定,而09年以后,基本就不可能再用来获利了。

    又如2015年2月前,股指日间成交跳价单位一般不大都在1个点以内,止损控制很容易执行且不会产生过大滑点,可是到了2015年5月后,日间成交跳价单位变化甚至达到5个点、10个点也很普遍,这必然会大大增加日内高频交易的滑点成本,若不修正模型必然不会适应。前几年,做股指高频交易的人都发财了,一年十倍的都有,但是现在呢,高频交易已经属于自杀了。

    为什么?

    因为市场上精明的交易者越来越多了,当你的对手还在用肉搏的时候,你有一把手枪就可以称王,但是现在,别人都开上飞机了。以前套利盈利很容易,但是现在套利盈利越来越难,套利空间越来越少,因为参与套利的人越来越多且都是电脑程序化自动识别,稍有点套利空间立马就有交易者以最快的速度修补价差的不合理性,价差空间会被市场迅速修补,盈利机会越来越少。

    另外一个重要问题就是交易环境也是会变化的,比如今年,期货夜盘的大量推出,导致不同时间段的交易分布不再均匀,开收盘时间出现了扭曲,很多交易系统便不能适应了。所以交易系统必须时时对模型效果进行跟踪维护和修补,甚至必要时直接宣布它死亡。市场历史会不断重演这是毋庸置疑的,但是其表现方式又不完全简单重复,表现方式是会变化的,环境的不同会导致局部的差异,所以交易系统的跟踪维护绝对是必要的,模型也不是万能不变的,即使本质上的东西也会在某些特定环境发生阶段性变异。

    http://finance.sina.com.cn/money/future/fmnews/2015-11-09/detail-ifxknutf1639044.shtml

    展开全文
  • 在Linux下编写异步I/O的模型探讨

    千次阅读 2013-03-23 13:34:32
    在Linux下编写异步I/O的模型探讨 需要首先说明的是异步I/O和多路复用同步I/O(如通过select函数在连接池中选择任一完成的端口)是有本质差异的,虽然两种方式都能提高效率。 异步I/O的思想是在一个端口支持异步...
    在Linux下编写异步I/O的模型探讨
    

    需要首先说明的是异步I/O和多路复用同步I/O(如通过select函数在连接池中选择任一完成的端口)是有本质差异的,虽然两种方式都能提高效率。
    异步I/O的思想是在一个端口支持异步读写,读写异步的系统调用需要OS支持,比如Read、Write有异步的实现版本,则用户调用其Read、Write异步版本,如果端口暂时不可用,会立即返回到用户代码。可以针对同一个端口准备多个异步读写操作,充分利用端口资源以及减少用户在等待端口可用过程中被挂起的时间。

    一、Windows下的异步I/O的模型
    通过OVERLAPPED structure和WaitForMultipleObjects/WaitForMultipleEvents实现。
    示例代码如下:

    HANDLE hfile = CreateFile(..., FILE_FLAG_OVERLAPPED, ...);

    BYTE bBuffer[10]; 
    OVERLAPPED oRead = { 0 };
    oRead.Offset = 0;
    oRead.hEvent = CreateEvent(...);
    ReadFile(hfile, bBuffer, 10, NULL, &oRead);

    OVERLAPPED oWrite = { 0 };
    oWrite.Offset = 10;
    oWrite.hEvent = CreateEvent(...);
    WriteFile(hfile, "Jeff", 5, NULL, &oWrite);
     

    HANDLE h[2];
    h[0] = oRead.hEvent;
    h[1] = oWrite.hEvent;
    DWORD dw = WaitForMultipleObjects(2, h, FALSE, INFINITE);
    switch (dw _ WAIT_OBJECT_0) {
       case 0:   // Read completed
          break;

       case 1:   // Write completed
          break;
    }

    二、Linux下的异步I/O的模型
    在Linux下不存在OVERLAPPED structure及WaitForMultipleObjects/WaitForMultipleEvents等系统调用,所以需要自行封装一些函数,以方便实现异步操作。
    本课题基于Linux在内核实现了POSIX1003.1b标准定义的异步I/O函数。基本思想是当一个进程有异步I/O请求时,就为该进程创建一个队列来排队其所有的异步请求,并为该队列创建一个内核线程来完成队列中实际的I/O操作。异步I/O系统调用所做的工作只是将I/O请求加入调用进程的队列,如果调用该功能的进程是第一次发出异步I/O请求,则先要为该进程创建排队异步I/O请求的队列和相应的内核线程,然后进程直接返回而不用挂起等待I/O完成。当实际的I/O操作完成时,内核发一个信号通知进程I/O完成。
    2.1 异步请求控制块aiocb
    该结构是异步I/O系统调用的主要参数,其中包含了异步操作所需的所有信息,是最基本也是最重要的数据结构,包括要进行的操作(读或写)及其优先级,被请求的文件描述符、偏移量、字节数,缓冲区地址等。
    Struct aiocb
    {
    /*下面7项成员的值由用户提供,用来确定异步I/O请求的各个参数*/
    intaiofildes;/*文件描述符*
    /intaiolioopcode;/*I/O操作类型*/
    intaioreqprio;/*优先级*/
    void* aiobuf;/*缓冲区*/
    size_t aionbytes;/*字节数*/
    struct sigevent aiosigevent;/*信号量*/
    loff_t aiooffset;/*文件偏移量*/
    /*下面这些是内部成员,用户不需提供*/
    Kaio_key_t aiokey;
    Unsigned long aiotimes;/*实际I/O完成的时间*/
    int aioerror;/*aioerror的返回值*/
    ssize_t aioreturn;/*aioreturn的返回值*/
    }

    2.2 内核异步请求控制块kaiocb
    该结构是提供给内核的异步I/O信息,包含结构aiocb中的所有信息以及其它一些相关的数据结构。
    Structkaiocb
    {
    Struct aiocb* kaiouaiocb;/*用户提供的aiocb*/
    Struct file* kaiofilp;
    void* kaiobuf;
    size_t kaionbytes;
    loff_t kaiooffset;
    int kaiocmd;/*I/O操作:read|write|fsync*/
    int kaioerror;
    int kaioid;/*kaiocb描述符*/
    struct kaiocb* kaiohnext;/*hash表后指针*/
    struct kaiocb** kaiohpprev;/*hash表前指针*/
    struct liocb *kaioliocb;/*ListI/O控制块指针*/
    struct waitqueue **kaiosuspendwait;
    struct taskstruct *kaiotask;/*提出请求的进程*/
    struct kaio_list_head_kaio_ioq;/*异步请求队列头指针*/
    void*kaiokq;/*异步请求队列*/
    struct sigevent kaiosigevent;/*通知信号量*/
    unsigned long kaiotimes[AIOTIMES];
    #definek aiosettime(k,x)(k)->kaiotimes[(x)]=kaiotime()
    }
    2.3 异步请求队列
    该队列是一个双向循环链表。每个有异步请求的进程创建一个异步请求队列,该进程的所有异步请求都在该队列中排队。
    Struct kaio_queue
    {
    Spinlock_t kaioq_lock;
    Structkaiolisthead kaioq;
    Int kaioqref;
    Int threads;
    }
    2.4 算法
    以异步读aioread为例,该函数的功能是根据异步I/O控制块aiocb所提供的信息将指定的文件内容拷贝到指定的缓冲区中。
    算法 aioread
    输入:异步I/O、控制块aiocb
    输出:成功返回0,失败返回-1
    {
    if(进程第一次发出异步请求,还没有异步请求队列)
    为之创建一个异步请求队列kq;
    if(当前的异步请求数目大于系统规定的最大值)
    出错返回;
    if(aiocb指定的文件不合法)
    出错返回;
    根据aiocb设置内核异步I/O控制块kiocb各个域的值;
    调用kaiocbenqueue将请求入队;
    if(入队操作失败返回)
    出错返回;
    函数返回;
    }

    算法 kaiocbenqueue
    输入:异步请求队列kq、内核异步I/O控制块kaiocb
    输出:成功返回0,失败返回相应的错误号
    {
    将kaiocb插入异步请求队列kq的相应位置;
    if(kq还没有进行具体I/O操作的内核服务线程)
    调用kernelthread(handleio,kaiocb,0)为之创建一个内核线程; (其中handleio是线程的执行函数);
    函数返回;
    }


    算法 handleio
    输入:内核异步I/O控制块kaiocb
    输出:成功返回0,失败返回相应的错误号
    {
    while(队列不空)
    {
    执行文件底层的I/O操作fop->read;
    操作完成后将该请求从队列中删除;
    }
    给进程kaiocb->kaiotask发信号kaiocb->kaiosigevent,通知进程I/O操作完成;
    函数返回;
    展开全文
  • II型跷跷板模型是解决中微子质量问题根源的一种积极进取的新物理方案。 我们表明,该模型可以轻松容纳... 我们表明,即使在当前的大型强子对撞机运行中,对于特定的信号处理,该模型也可以使用5σ信号有效度进行测试。
  • 缺血再灌注致心律失常大鼠模型Ca2+/CaM/CaMKⅡ信号通路的变化,李喆,,目的 探讨缺血再灌注致心律失常大鼠模型心肌组织Ca2+/ CaM/CaMKⅡ信号通路的变化。方法 选取健康SD大鼠48只,以单盲法随机分为4组(n=12�
  • 地黄饮子对转tau基因果蝇AD模型PI3K/AKT/dTOR信号通路基因表达的影响,关慧波,刘莹,目的:探讨地黄饮子对转tau基因果蝇AD模型PI3K/AKT/dTOR信号通路基因表达的影响,探讨其防治阿尔茨海默病的药物疗效和作用机理。...
  • 针对信号控制交叉口进口道直左车道中左转车比例的计算模型,在结合我国现行交通规则和道路设计规范条件下,建立了一个完全不同于有关教科书中模型的新的计算公式.较之原模型,新模型形式简单,计算方便,克服了原...
  • 这篇文章主要是针对JVM处理并发的一些细节的探讨。 JAVA内存模型 对于我们平时开发的业务应用来说,内存应该是访问速度最快的存储设备,对于频繁访问的数据,我们总是习惯把它们放到内存缓存中,有句话不是说...
  • C# Socket网络编程TCP/IP层次模型、端口及报文
  • 地黄饮子对转基因果蝇AD模型mTOR信号通路中4E结合蛋白和p70核糖体S6蛋白激酶表达的影响,关慧波,刘莹,目的:研究地黄饮子对转Tau基因果蝇mTOR信号通路中4E结合蛋白(4E-BP)和p70核糖体S6蛋白激酶(p70S6K)表达的影响...
  • 1、TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用。http协议在应用层运行。 ...
  • 数字基带信号主要涉及基带编码、传输系统)

    万次阅读 多人点赞 2015-08-27 10:10:07
    数字基带信号的类型很多,本节以由矩形脉冲构成的基带信号为例,主要研究这些基带信号的时域波形、频谱波形以及功率谱密度波形。【remark: 信息是非实体,信源的信息必须外化后才能被信宿识别。数学是人类分析和表达...
  • 文章目录从CPU到内存模型内存模型如何确保缓存一致性并发变成需要解决的问题 (原子性、可见性、有序性)内存模型需要解决的问题Java内存模型JMM的API实现原子性 synchronized可见性 volatile 、 synchronized 、 ...
  • 文章目录1 Uplift Modeling与reponse model模型的差异1.1 增益模型与响应模型的差异1.2 增益模型与响应模型的混淆1.3 业务疑问与需求1.3.1 多维度建模1.3.2 一些使用场景1.3.3 实验室组和对照组 数据不均匀2 uplift ...
  • UDP高性能并发服务器模型

    千次阅读 2019-11-12 22:08:35
    但是由于设计的原因,UDP服务器默认不支持多线程并发的,本文用以探讨UDP服务器并发的实现。 我们先看下TCP 服务器 和 UDP 服务器的编程模型的差异 我们可以看到,对于TCP 服务器来说,有一个新的客户端连接的时候...
  • 语音信号采集与处理

    千次阅读 2020-11-09 15:39:49
    对采集音频信号并进行分析处理的技术和方法进行探讨,具有一定的意义。 1 绪论 1.1 课题的背景与意义 通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息的形式。语言是人类持有的功能,声音是人类...
  • 机器学习中的隐马尔科夫模型(HMM)详解

    万次阅读 多人点赞 2016-05-01 16:03:46
    本文介绍机器学习中非常重要的隐马尔可夫模型(HMM,Hidden Markov Model),它也是一种PGM。更准确地说,HMM是一种特殊的贝叶斯网络。HMM在自然语言处理、计算机视觉,以及语言识别方面都有重要应用。
  • 摘要:在分析高速数字电路设计中存在的几个主要问题的基础上,探讨了高速信号完整性所涉及到的基本理论研究了在PCB仿真设计实际应用中通常采用的两种模型方法,即IBIS模型和SPICE模型,分析了仿真模型和建模方法。...
  •  从信息传递的基本原理来说,射频识别技术在低频段基于变压器耦合模型(初级与次级之间的能量传递及信号传递),在高频段基于雷达探测目标的空间耦合模型(雷达发射电磁波信号碰到目标后携带目标信息返回雷达接收机...
  • 从信息传递的基本原理来说,射频识别技术在低频段基于变压器耦合模型(初级与次级之间的能量传递及信号传递),在高频段基于雷达探测目标的空间耦合模型(雷达发射电磁波信号碰到目标后携带目标信息返回雷达接收机)...
  • 游戏服务器架构探讨

    千次阅读 2013-01-05 22:46:27
    要描述一项技术或是一个行业,一般都会从...一来算是敦促自己对知识做个梳理,二来与大家探讨的过程也能够找到我之前学习的不足和理解上的错误,最后呢,有可能的话也跟业内的同行们混个脸熟,哪天要是想换个工作了也好
  • 地震信号的一些基本概念

    千次阅读 2018-12-23 20:25:31
    可控震源是指通过一个与大地紧密耦合的振动平板,以反作用方式向地下传送一组连续振动的弹性波信号(又称扫描信号),再经过对地面接收到的反射波信号的处理和辨识,用于解释地下地质目标的构造形态与产状。...
  • 针对具有超重尾特性的语音...从理论上探讨了混合拉普拉斯分布模型的参数估计,从原理与算法得以实现。通过最大期望(Expectation Maximization,EM)算法取得了良好效果。创新运用混合拉普拉斯模型研究语音信号处理。
  •  射频识别技术(Radio Frequency Identification,缩写RFID),射频识别技术是20世纪90年代开始兴起的一种自动识别技术,射频识别技术是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,298
精华内容 6,519
关键字:

信号模型主要探讨的是