为了优化钻井流程并降低作业成本,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代码重新实现之前,在科学计算软件中进行快速更新以用于其他应用情形。
结论
通过使用自动代码生成,工程师成功采用了一种新的工作流程。这种流程可以避免耗时且容易出问题的手工编码。地面解码软件(包括序列预测算法)接近最终版。在项目上实现的时间和成本节约使公司可以探索更多的机会,将自动代码生成工作流程应用到广泛的未来项目中。
上一篇:提高电力系统稳定性主要从哪两方面着手
下一篇:丹佛斯的FC302变频驱动器的性能及应用研究
推荐阅读
史海拾趣
随着通信技术的不断进步,对微波器件的性能要求也越来越高。Analog Microwave Design公司敏锐地捕捉到了这一市场变化,开始致力于研发更高性能的微波器件。经过多次试验和改进,公司成功开发出了一款具有低损耗、高稳定性的微波放大器,这一创新产品在市场上引起了热烈反响。公司凭借这一技术突破,迅速扩大了市场份额,并树立了行业内的技术领先地位。
深圳市格莱尔电子有限公司成立于2005年,初期专注于电感产品的研发与生产。在创始人及团队的共同努力下,公司迅速在行业内崭露头角。随着技术的不断积累和市场需求的扩大,格莱尔逐渐扩大生产规模,并于2012年在湖北投资建厂,自建两座工厂,厂房面积达2万平方米,员工人数增长至500人。这一系列的举措不仅提升了公司的生产能力,也为其后续的发展奠定了坚实的基础。
面对日益严峻的环境问题,宜源科技公司积极响应国家环保政策,致力于绿色环保和可持续发展。公司采用先进的生产工艺和设备,减少生产过程中的污染排放。同时,宜源科技还积极推动绿色产品的研发和推广,为客户提供更加环保、节能的电子产品解决方案。这些努力不仅有助于保护环境,也为公司的可持续发展奠定了基础。
随着产品质量的不断提升和市场份额的逐步扩大,Califia Lighting开始积极寻求与国际市场的合作。他们与多个国家和地区的合作伙伴建立了稳定的合作关系,将产品出口到全球各地。同时,公司还参加了多个国际电子照明展会,与全球同行交流学习,进一步提升了公司的国际影响力。
随着技术的不断进步和市场需求的日益增长,EEMB集团开始加大研发投入,力求在锂电池技术上实现更大的突破。经过不懈努力,公司成功研发出多款具有高性能、高安全性和长寿命特点的锂电池产品,并获得了多项国家专利。这些技术成果不仅提升了公司的市场竞争力,也为公司赢得了更多客户的青睐。同时,公司也积极开拓国际市场,产品逐渐出口到美国、日本、俄罗斯等国家。
我有一个WINDOWS MOBILE的PDA,用的三星CPU,有高手能把这个系统改成WINCE.NET么?当然是要付费的,价钱商量. 我有一个WINDOWS MOBILE的PDA,用的三星CPU,有高手能把这个系统改成WINCE.NET么?当然是要付费的,价钱商量. 联系我QQ:86163938 MSN:myfm3a@hotmail.com 急… 查看全部问答∨ |
|
DirectDraw和DirectShow如何协调,正十分迷茫中 我开发一个游戏,采取独占模式,想在DIRECTDRAWSURFACE表面开辟一块区域用于播放视频,现在是没有办法看见视频播放的画面, 但是如果我把DirectDraw相关的代码去掉,只保留播放视频的代码,视频是能够正常播放的。另外请教高手知道如何使用MediaPl ...… 查看全部问答∨ |
一、变频恒压供水的特点1. 节能,可以实现节电20%-40%,能实现绿色用电。2. 占地面积小,投入少,效率高。3. 配置灵活,自动化程度高,功能齐全,灵活可靠。4. 运行合理,由于是软起和软停,不但可以消除水锤效应,而且电机轴 ...… 查看全部问答∨ |
购买或者黑金FPGA开发板换购ARM开发板,野火,神舟均可,多退少补。 本帖最后由 ddllxxrr 于 2016-1-7 16:56 编辑 我的FPGA板子是今年4月份在黑金官方淘宝店买的 RMB399 换购野火开发板或者神舟开发板。 不愿换购的话。 RMB 270 收野火(+液晶+jlink) RMB 200收神舟(+液晶+jlink) 可以的话 加QQ 41110180 ...… 查看全部问答∨ |
MSP430G2开发板 ,LaunchPad实验板 元件 学习 TPS77301DGK品牌TI封装MSOP8 MSP430G2开发板 ,LaunchPad实验板 元件 学习 TPS77301DGK品牌TI封装MSOP8 大概:TPS77301DGK升降压稳压管复位IC供应小结 1.5-- 5.5v 常用的电源电压监督员(中职),或重置输出电压。 可能相关 :当前级接上高阻抗的后级它主要提供适切的输出电压 ...… 查看全部问答∨ |
- 提出你的电源问题&技术解答,提升自我电源知识,赢取好礼
- 有奖直播:TI 的故事—— IC 创世纪
- 物联网、汽车、AI全覆盖——世平集团恩智浦解决方案大秀场
- Microchip 有奖问答,信号增益或滤波的原始传感器应用方案
- 体积小、功耗低、安全性高,专用加密芯片ATSHA204 精彩专题,答题有好礼!
- 有奖学习 | 探索泰克 4 系列 BMSO 强大功能,还能参与“叠叠乐”省钱大作战!
- 下载有礼|是德科技电子书 《通过了解测试精度的基础知识, 提高良率并降低风险》,不做“差不多先生”
- 下载安森美半导体工业物联网工业解决方案,百份好礼送!
- 瑞萨电子最新触控微控制器R7F0C208入门套件免费申请,参与申请还能赢好礼!