首页> 中国专利> 一种寿险精算模型多线程并行计算方法

一种寿险精算模型多线程并行计算方法

摘要

本发明公开一种寿险精算模型多线程并行计算方法。所述方法包括:设置多个计算线程,将寿险精算模型的所有计算模块复制到每个计算线程;寿险精算模型开始运行后,从评估数据库中为每个计算线程输入一个记录条数不超过设定阈值的数据块;为完成输入数据块计算任务的每个计算线程输入新的数据块,直到处理完评估数据库中的所有记录。本发明能够明显减小不同计算线程完成全部计算任务的耗时差异,从而减小结果汇总的等待时间,提高寿险精算模型的运行速度。

著录项

  • 公开/公告号CN112734583A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 深轻(上海)科技有限公司;

    申请/专利号CN202110054321.X

  • 发明设计人 陈曦;陈森;

    申请日2021-01-15

  • 分类号G06Q40/08(20120101);

  • 代理机构11253 北京中北知识产权代理有限公司;

  • 代理人卢业强

  • 地址 201315 上海市浦东新区中国(上海)自由贸易试验区康桥东路1号16幢

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本发明属于寿险精算技术领域,具体涉及一种寿险精算模型多线程并行计算方法。

背景技术

寿险精算评估工作需要使用寿险精算模型进行。用于寿险评估工作的寿险精算模型是以保险公司销售的产品为基础,使用精算和统计学专业方法,定量刻画保险公司未来包括保费和理赔支出等在内的各项现金流、负债、偿付能力成本、利润以及现金流和利润的折现值的数学模型。精算模型通常由一系列计算模块组成,而每个计算模块最重要的基本组成单元为时间序列,比如未来每个单位时间段的死亡人数、预计死亡理赔金额以及保险公司的日常管理成本等。一个精算模型通常由数十个到数百的计算模块构成,包含数千个到数万个时间序列。

在进行具体的寿险评估工作时,评估人员将寿险精算模型对接公司的评估数据库。该数据库包含了公司所有的有效保单的信息,通常有几十万条到几百万条记录。针对每条记录,精算评估模型将计算出所有涉及的计算模块的结果。对于需要输出的计算模块,精算评估模型会将它们的计算结果汇总。由于涉及的计算模块多、计算复杂、数据量大,寿险评估过程耗时很长,最长可达几十小时甚至上百小时。为此,现有技术一般采用多个计算线程平行运行方式降低运算时间。例如,将评估数据库划分成多个子数据库,并将它们分别连接至不同的计算线程。这种方法虽然能够有效提高计算速度,但也存在一定问题,比如,由于每个子数据库的数据记录数量以及针对这些记录的预测的复杂程度不同,因此每个计算线程完成计算任务的耗时长短是不同的,有时这种耗时长短的差别可能会很大,而最后的结果汇总需要等所有线程的计算任务都完成后都能进行,从而会导致因等待一两个耗时很长的计算线程而影响寿险评估的整体速度。

发明内容

为了解决现有技术中存在的上述问题,本发明提出一种寿险精算模型多线程并行计算方法。

为实现上述目的,本发明采用如下技术方案:

一种寿险精算模型多线程并行计算方法,包括以下步骤:

步骤1,设置多个计算线程,将寿险精算模型的所有计算模块复制到每个计算线程;

步骤2,寿险精算模型开始运行后,从评估数据库中为每个计算线程输入一个记录条数不超过设定阈值的数据块;

步骤3,为完成输入数据块计算任务的每个计算线程输入新的数据块,直到处理完评估数据库中的所有记录。

与现有技术相比,本发明具有以下有益效果:

本发明通过设置多个计算线程,从评估数据库中为每个计算线程输入一个记录条数不超过设定阈值的数据块,为完成输入数据块计算任务的每个计算线程输入新的数据块,直到处理完评估数据库中的所有记录,明显减小了不同计算线程完成全部计算任务的耗时差异,减小了结果汇总的等待时间,提高了寿险精算模型的运行速度。

附图说明

图1为本发明实施例一种寿险精算模型多线程并行计算方法的流程图。

具体实施方式

下面结合附图对本发明作进一步详细说明。

本发明实施例一种寿险精算模型多线程并行计算方法,流程图如图1所示,所述方法包括以下步骤:

S101、设置多个计算线程,将寿险精算模型的所有计算模块复制到每个计算线程;

S102、寿险精算模型开始运行后,从评估数据库中为每个计算线程输入一个记录条数不超过设定阈值的数据块;

S103、为完成输入数据块计算任务的每个计算线程输入新的数据块,直到处理完评估数据库中的所有记录。

在本实施例中,步骤S101主要用于设置多个计算线程,将寿险精算模型的所有计算模块复制到每个计算线程。将所有的计算模块复制到每个计算线程,主要是考虑到对于绝大部分计算数据点而言,其计算过程需要用到所有的计算模块。当然,存在少数个别情况,比如某个产品没有死亡给付,其计算过程确实用不到死亡给付的计算模块。但考虑到很难确定某个线程是否会被分配到特定产品的数据点,同时计算模块的复制过程不会产生很多资源开销,所以本实施例把所有计算模块复制到每个线程上。

在本实施例中,步骤S102主要用于为每个计算线程输入一个数据块。所述数据块包含来自评估数据库的数量很少(小于设定阈值)的几条数据记录,俗称小数据块。评估数据库包含了所有的有效保单的信息,通常有几十万条到几百万条记录。现有技术是将评估数据库划分成多个子数据库,并将它们分别连接至不同的计算线程。这种方法存在的问题是,由于针对不同产品的数据记录进行计算的复杂程度不同,即使给每个子数据库分配相同数量的数据记录,每个计算线程完成计算任务的耗时长短也是不同的。有时这种耗时长短的差别可能会很大,从而会导致因等待一两个耗时很长的计算线程而影响寿险评估的整体速度。为此,本实施例每次只给每个计算线程输入一个小数据块,每个计算线程完成输入小数据块的计算后再输入新的小数据块,直到完成评估数据库中所有数据记录的计算。采用上述机制后的最大等待时间,小于计算速度最慢的一个计算线程完成一个小数据块计算所用的时间Tm,对应最恶劣的情况——其它计算线程均已完成计算,而该计算线程刚刚开始新的一个数据块的计算。由于小数据块的数据量很小,因此Tm也很小,等待时间将会大大减小。如果只从使等待时间最小考虑,数据块越小(包含的数据记录的数量越少)越好;但当数据块太小时,需要频繁为每个计算线程输入数据块,从而在一定程度上影响运行速度,因此数据块大小应折衷考虑。在本实施例中,为了处理简便,可使每个数据块包含相同数量的数据记录;当然,也可以根据实际情况使每个数据块包含不同数量的数据记录。

在本实施例中,步骤S103主要用于为完成输入数据块计算任务的每个计算线程输入新的数据块。由于一个数据块包含的记录条数较少,因此每个计算线程很快就会完成一个数据块的计算任务,这就需要不断地为它们输入新的数据块,直到处理完评估数据库中的所有记录。

作为一种可选实施例,所述S102还包括:启动一个线程,用于将从评估数据库中获取的一定数量的所述数据块存入缓存区,并从缓存区为每个计算线程输入一个数据块。

本实施例给出了一种通过设置用于存放数据块的缓存区提高运行速度的技术方案。由于评估数据库包含的记录条数惊人,需要占用很大的存储空间,因此一般以数据库文件的形式保存在硬盘上。众所周知,在硬盘上进行数据读写的速度明显慢于在内存上进行数据读写的速度。因此,为了提高运行速度,本实施例不直接从评估数据库读取数据块输入到计算线程,而是设置一个内存缓存器,启动一个单独的线程,将从评估数据库读取的一定数量的数据块存入缓存器,再从缓存器读取数据块输入到计算线程。

作为一种可选实施例,所述方法还包括:实时监测每个计算线程完成一个数据块计算的耗时,并根据所述耗时自动调整输入到每个计算线程的数据块包含的记录条数,使每个计算线程的所述耗时近似相等。

本实施例给出了一种自动调整数据块大小的技术方案。如前述,由于不同产品的数据记录进行计算的复杂程度不同,即使每个数据块包含相同数量的数据记录,各个计算线程完成一个数据块的计算任务花费的时间也不同。为了进一步减小等待时间,本实施例通过实时监测每个计算线程完成一个数据块计算的耗时,对于耗时较长的计算线程,适当减少其输入的数据块包含的记录条数;对于耗时较短的计算线程,适当增加其输入的数据块包含的记录条数,使所有计算线程的所述耗时趋于相等。

上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所做出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号