历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2021年10月18日 | 序列预测算法降低钻井测量时间与风险

2021-10-18 来源:eefocus

为了优化钻井流程并降低作业成本,Baker Hughes的动力学与遥测(Dynamics & Telemetry)小组开发了一个序列预测算法,用于在钻井作业期间快速可靠的解码井下数据。这个已集成到公司地面系统的高级解码算法为随钻测量(measurement while drilling,MWD)方法提供了支持。使用MWD时,可以收集宝贵的方位数据和地层数据,以用来优化钻井流程。该系统支持更准确地定位井眼,这可以使钻井作业更具成本效益,并使操作员可以较少的非生产时间(NPT)钻更复杂的井。


工程团队使用一种桌面科学计算软件设计序列预测算法,将其自动转换为C代码,然后部署到属于地面系统一部分的一台实时PC上。在科学计算软件中开发和调试该算法后,工程师通过自动生成所需的C代码来加速实现过程。


此工作流程不再需要用两种语言维护和测试同一个算法,因此缩短了开发流程。更重要的是,此工作流程降低了用手工编写C代码的一种主要风险,即原始科学计算算法和最终设计中实现的C代码之间的差异。使用此工作流程的一大优势是小组在修复缺陷上所花的时间减少了。质量和开发速度的提升使小组坚定了在未来的项目中重用算法和开发流程的打算。


使用马尔可夫链(Markov Chains)进行序列预测

序列预测的一个常见应用是使用以前的数据来预估未来的数据点。序列预测算法在许多行业和许多情形中都会用到,例如基于测量数据的温度曲线外推,或者在与最大似然序列估算器进行数字通信时,从噪声信号中提取有用的信息。序列预测需要一个模型来预测未来数据,如马尔可夫链。使用马尔可夫链建模的系统占用有限的状态数,从而使未来的数据点仅取决于目前的状态而不是以前的状态。

序列预测算法降低钻井测量时间与风险

在图1中,使用马尔可夫链建模的序列预报器具有4个状态。从一个状态转换到另一个状态的可能性用小数表示。例如,从状态1转换为状态2的概率为0.95,而保持在状态1的概率为0.05。在转换时,可能会有一个或多个路径。图1中显示的序列预报器可作为有限的状态机来实现,它的最形象的表达就是格状图。

序列预测算法降低钻井测量时间与风险

图2显示的是一个可能的(预测的)状态序列。虚线箭头表示可能的转换,实线箭头表示实际预测的转换。此图显示可能的序列为[1 2 3 4 4 3 3 1]。请注意,仅显示部分可能的转换来进行说明。与著名的Viterbi算法类似,序列预报器通过基于外部质量标准计算路径度量来拒绝不大可能的序列路径。如果两个或多个路径在一个状态中相交,则累积并比较它们的路径度量值,将最佳路径选为幸存路径。


工程团队在技术计算软件中为序列预测实现马尔可夫链,以提高其地面解码软件的可靠性。


算法开发工作流程

在传统的手工编码工作流程中,会用C代码重写原始科学计算算法和测试框架,并且必须对C代码进行测试和调试。在新的工作流程中,C代码会从技术计算软件中自动生成,从而节约了时间并可防止编码错误(图3)。

序列预测算法降低钻井测量时间与风险

图3.传统的手工编码工作流程(左)和新的自动代码生成工作流程(右)

在一个典型的情景中,自动代码生成工作流程可将开发和测试最终产品中实现的算法的总时间缩短近40%(图4)。

序列预测算法降低钻井测量时间与风险

图4.各个流程阶段花费时间百分比

对于这个特定的项目,新的工作流程的开始是工程团队在科学计算软件中快速探索新创意。在确定最佳方法后,他们使用同一款软件来建立一个通用序列估算算法的原型。然后进一步扩展该算法,以用于MWD系统的地面PC上。在进行到下一个阶段之前,工程部门使用已纳入同一软件中的测试框架内的多种测试案例来测试算法,以验证它是否符合要求和规范。


通过自动代码生成来实现

传统手工编码流程的许多缺点迫使工程团队去寻找一种替代流程来开发序列预测算法。首先,手工编码非常耗时,并且在紧张的截止日期临近时,为了留出时间给重要而又耗时的集成测试,团队需要将开发时间缩短大约30%。其次,程序员可能会在原始科学计算算法细节上出现解读错误,从而将缺陷引入手写的C代码,造成需要额外的时间来进行调试和修复。


在新的工作流程中,通过自动代码生成可以消除这些缺点。在科学计算软件中,工程师们的工作侧重于在较高层次上开发和微调算法,不用过多地困在较低层次的实现细节上。然后,该团队只需一键点击就可以从原始设计自动生成C代码。由于该流程是自动执行的,因此在将算法转换为C代码时不会出现解析错误的情况。为了生成代码,需要花些时间来微调原始科学计算算法,但这属于一次性任务,如果在开发设计的开始阶段就考虑到代码生成,则可以进一步简化这项任务。


维护和测试算法

在传统的工作流程中,在开发后期对需求进行更改会影响原始设计及其实现。对算法的更新必须反映在C代码中,使用两种语言和环境维护并测试同一个算法及测试框架的成本会迅速成为阻碍因素。在开发周期的后期发现缺陷时,开发人员需要更新该算法的原始科学计算代码和C代码版本两者,还需要创建两套测试方案来验证缺陷是否已经解决。当然,还存在两个代码库产生差异的风险。时间限制经常会促使团队仅更新C代码。出现这种情况时,团队会再次受困于用C代码手工编码的所有缺陷,直到两个代码库一致。


使用自动代码生成,工程团队则可避免这些潜在的错误。当需求发生变化时,工程师只需要更新原始科学计算代码,然后重新生成C代码,将新变化反映到实现中。具体来说,团队无需对生成的C代码进行任何更改,因为在重新生成代码时这些更改会被覆盖。此外,工程团队也不再需要开发第二个测试框架,因此节约了额外的时间。用于测试科学计算代码的原始测试框架可以重用来测试C代码。


将算法集成到地面系统

C代码单元测试一结束,团队便将C代码编译到一个动态链接库(DLL)。然后,将DLL集成到地面解码软件。最后,小组在公司的基于C代码的测试基础架构中执行整个地面解码算法的系统测试。


在测试期间如果发现缺陷,小组发现很容易查明错误的源头。由于工程师将序列预测算法隔离到一个DLL中,因此很容易确定缺陷是集成问题的结果还是算法本身所导致。此外,C代码会映射回原始科学计算代码,并为您提供了在C代码中嵌入技术计算代码作为备注的选项,进一步加强了原始科学计算算法与最终实现之间的可追溯性。


结果

● 缺陷数量减少:该项目计划分配了三周时间来修复十个缺陷,而在生成的C代码中仅找到四个缺陷。因此,团队能够将多出的时间分配给项目的其他环节,例如整个地面系统的系统测试。

● 修复缺陷所需的时间缩短:由于整个功能测试框架在科学计算软件中可用,因此与传统的手工编码相比,团队能够更快地找到缺陷并予以解决。科学计算软件中提供的分析和调试工具加速了此流程。这些工具中有许多也用于测试和调试C代码。

● 代码和流程可以在未来的项目中重用:序列预测算法可以在未来的项目中重用。该算法可以以现有的形式随时现用,也可以在通过代码生成采用C代码重新实现之前,在科学计算软件中进行快速更新以用于其他应用情形。


结论

通过使用自动代码生成,工程师成功采用了一种新的工作流程。这种流程可以避免耗时且容易出问题的手工编码。地面解码软件(包括序列预测算法)接近最终版。在项目上实现的时间和成本节约使公司可以探索更多的机会,将自动代码生成工作流程应用到广泛的未来项目中。

推荐阅读

史海拾趣

Custom Mmic Design Services Inc公司的发展小趣事

为了进一步拓展国际市场,CMDS积极寻求与国外企业的合作。通过与国际知名电子企业建立战略合作关系,CMDS不仅获得了先进的技术支持和市场资源,还成功将其产品打入国际市场。同时,公司还积极参加国际展会和交流活动,与全球同行建立了广泛的联系和合作网络。这些国际合作不仅为CMDS带来了更多的商业机会,也提升了其在国际市场上的知名度和影响力。

D3公司的发展小趣事

D3公司非常重视企业文化的建设。公司倡导“以人为本、诚信经营”的企业文化,为员工提供良好的工作环境和发展机会。同时,公司还注重培养员工的团队协作精神和创新意识。在这种企业文化的熏陶下,D3公司的员工们团结一心、锐意进取,共同为公司的发展贡献力量。这种强大的团队力量,是D3公司在电子行业中不断取得成功的关键因素之一。

请注意,以上故事均为虚构,旨在展示电子行业中一家公司可能的发展路径和策略。在实际应用中,企业需要根据自身情况和市场环境来制定合适的发展战略。

Anaren Ceramics公司的发展小趣事

除了在经济方面取得显著成绩外,Anaren Ceramics公司还积极履行社会责任。公司注重环保和可持续发展,在生产过程中采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与社会公益活动,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了正能量。


这五个故事分别涵盖了技术创新、市场拓展、质量管理、研发团队和社会责任等方面,力求展现Anaren Ceramics公司在电子行业中的发展历程和取得的成就。请注意,由于这些故事是基于一般性情况和假设编写的,可能与实际情况存在出入。如需更具体和准确的信息,建议直接查阅相关公司资料或联系公司进行了解。

ADATA公司的发展小趣事

除了在经济方面取得显著成绩外,Anaren Ceramics公司还积极履行社会责任。公司注重环保和可持续发展,在生产过程中采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与社会公益活动,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了正能量。


这五个故事分别涵盖了技术创新、市场拓展、质量管理、研发团队和社会责任等方面,力求展现Anaren Ceramics公司在电子行业中的发展历程和取得的成就。请注意,由于这些故事是基于一般性情况和假设编写的,可能与实际情况存在出入。如需更具体和准确的信息,建议直接查阅相关公司资料或联系公司进行了解。

HBControls公司的发展小趣事
定期检查冰箱电源线、插头、插座等是否完好无损,避免老化、破损引起的电路故障。
Datakey Electronics公司的发展小趣事

随着数字化技术的快速发展,数字化转型已经成为企业提升竞争力的关键。Datakey Electronics紧跟时代潮流,积极推进数字化转型。公司引进先进的信息化管理系统和智能化生产设备,实现了生产过程的自动化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗。通过数字化转型,Datakey Electronics在激烈的市场竞争中保持了领先地位。

以上这些故事都是基于电子行业的一般发展趋势和可能的情况虚构的,但从中我们可以看到Datakey Electronics公司可能经历的一些发展历程。希望这些故事能够为您提供一些参考和启发。

问答坊 | AI 解惑

系统提示回收站已坏,要怎么修复

系统提示回收站已坏,要怎么修复…

查看全部问答>

求液晶模块的控制字(1621)

单屏2×16个字符,每个字符5×10(5×7)个黑点。这个模块的一些命令字比如清屏,换行,满屏等等命令字有没有谁知道,谢谢谁贴出来…

查看全部问答>

飞凌的6410开发板功能介绍--给需要的朋友一个参考:)

     产品采用”核心板+底版”结构,板对板之间选用高质量进口连接器,坚固耐用!镀金工艺可保证常年运行不氧化!核心板尺寸仅5CM*6CM(业内最小!),引出脚多达320个;具有CAN总线、RS-485总线、稳定适用的VGA/TV输出(内部 ...…

查看全部问答>

关于VS2005 智能设备

安装了visual studio 2005, 怎么才能用C++开发PDA上的程序?PDA操作系统为WinCE4.2 C++的智能设备里,没有WinCe,用了C#也是不行…

查看全部问答>

有关台达伺服接送脉冲频率的问题,请高手指点???

我在使用台达伺服的时候遇到一个问题:我的脉冲输出频率大约为0.45M的时候,也就是450K的时候,我的机械会产生顿挫。 我的怀疑是台达伺服的脉冲接收频率不高导致。请高手指点一下:台达伺服的最高接收脉冲频率是多少?松下的是500K。…

查看全部问答>

关于申请开发板,忽然想到一个问题。。。。

大家申请开发板的各个项目都很好,但这里面的大部分项目都需要扩展该块开发板,这样势必会给开发板焊上排针或排母。     由于我们这次的活动是采取“试用制”的,如果前一个拿到板子的同学扩展了排母,但是后一个同学需要扩展了排针那 ...…

查看全部问答>

申请LM3S8962 评估套件

希望可以早点拿到这款套件,努力在系统实现上再上一台阶,谢谢! [ 本帖最后由 shanghz 于 2010-10-31 17:06 编辑 ]…

查看全部问答>

MSP430 定时器中断使用总结!

最近两天琢磨了下MSP430的定时器,发现还是挺麻烦的,在这里把学习心得记录下来: 在MSP430G2211上只有TIMER A中断,所以在这里我们讨论TIMER A ,TIMER B应该和TIMER A差不多。          对于每一个定 ...…

查看全部问答>

怎么屏蔽启动TIMx时瞬间产生的更新中断?

                                 第一个连接少个问号无效,可以点右下角的那个 …

查看全部问答>

DIY大赛已进入实施阶段,大家的进展如何呢?

建议大家及时贴出相关进展的照片、资料等,遇到问题也可以及时提出,争取早日做出高质量的DIY作品。…

查看全部问答>