工业生产活动的目标是利用原料生产产品,从而产生利润。原料经过一系列加工过程,包括物理反应和化学反应,最终形成产品,生产的理想状态是原料到产品的转换率是确定的,工厂想生产多少产品就知道需要准备多少原料,提高生产效率。
许多工艺原理和生产经验都表明,在简化情况下,可以认为原料用量和产品产量之间近似是线性关系。这样,每一种原料和每一种产品之间都会有一个与原料用量无关的恒定转换率,在化工界称为收率。
我们的目标是根据历史的原料量和产量计算出一个较准确的收率,然后在下一个生产周期(比如第二天)中根据原料用量预测产量,预测产量与实际产量越接近说明收率越准确。如下图:

反应在图上,目标就是使两条曲线尽可能重合。
怎么才能算出一个较准确的收率呢?
既然原料用量和产品产量之间近似是线性关系,而线性拟合又是非常成熟的技术,那么很容易想到,直接用历史数据进行线性拟合就可以解决问题了。
可是,现实情况并没有这么简单,由于数据的各种测量误差,直接使用线性拟合算法会得出非常荒唐的结果:
收率大于1,这意味着产品产量大于原料用量,凭空造出很多产品;
收率小于0,这更加离谱,原料越多反而产量越少。
这两种情况显然都违背了质量守恒定律,在现实场景中是不可能发生的,这样拟合出来的收率也没有任何用于预测的意义。
如此看来,原料和产品的拟合并不是完全无条件的,需要满足质量守恒定律,即所有产品产量小于原料用量且不会因原料增多而减少,这要求所有收率必须在[0,1]范围内。
质量守恒定律还要求任一种原料最终都转化成各种产品,不会有没有用掉的原料,也不会凭空产生产品,即各种产品对某一种原料的收率和等于1。
常规的线性拟合算法,只考虑拟合结果与目标最接近,并不考虑这些约束,所以当原始数据有误差时,拟合出荒唐的结果也就不奇怪了。
此外,工艺知识还提供了基础收率,它是个长期均值,直接用它预测“明天” 的产品产量效果很差,好比用年均气温去预测明天气温,显然无效,所以基础收率不能直接使用,只能作为参考,就像预测“明天”气温可以把年均气温作为参考一样,不能偏离特别远,否则即使拟合结果误差很小也不合适用于预测。
综上所述,约束条件有3个,分别是:
约束1:所有收率都在[0,1]范围内。
约束2:各种产品对某一种原料的收率和等于1。
约束3:不可以偏离基础收率太远。
我们的任务是研究如何在这些约束条件下利用原料和产品数据计算出较准确的收率,使其可以用于预测第二天的产量。
利用历史数据,考虑用不同的数学方法来满足3个约束条件:
我们可以把0和1作为边界,问题就转化成有边界的线性拟合,最优解一定会在边界或者是线性拟合结果处。把问题简单化以后就是我们中学时期解的二元一次函数在指定范围内的最大或最小值问题,如下图:

所幸实际生产中原料的种类不会特别多,穷举所有这些情况,最后找到误差最小的解即可满足收率范围在[0,1]内这一约束条件。
n种产品的收率和为1,意味着这些收率线性相关。有边界的拟合方法不能保证收率和不为1,可以将误差按权重线性分拆到各产品上修正收率,反复迭代即可满足收率和为1这一约束条件。如下图:

今天的气温和明天差别不大,可以把今天和一年的平均气温之差作为计算明天气温的参考,如下图:

同理,实际生产中,收率同气温一样也是渐变的,即今天的收率和明天的收率差别不会很大,可以把今天的收率和基准收率得到的产品产量之差作为计算明天收率的参考,以此作为有边界拟合时的边界,保证结果收率不偏离基础收率太远。如下图:

这样得到的收率就可以同时满足三个约束条件,而且准确性也高于基础收率。
把上面思路写成代码,就可以计算收率了。
| A | |
| 1 | [[30,8],[31,7],[38,10]] |
| 2 | [[2,13,23],[3,15,20],[11,13,24]] |
| 3 | [[0,0.5,0.5],[0.55,0.05,0.4]] |
| 4 | 0.1 |
| 5 | =mul(A1,A3) |
| 6 | =A2.(~--A5(#)) |
| 7 | =bd(A1,A2,A3,A4).(~.(~.(round(~,3)))) |
| 8 | =A6.~.((idx=#,bdfit(A1,A6.([~(idx)]),A7.(~(idx))).conj())) |
| 9 | =transpose(A8) |
| 10 | =func(A12,A9,A3) |
SPL提供了很多矩阵计算方法,可以高效的进行矩阵运算,搭配其强大的集合运算能力,可以高效的实现上述算法思路。
计算结果示例:
原料X:

产品Y:

基础收率B:

最终的收率W:

下面是直接用最小二乘法拟合得到的收率W’:

很显然,它的结果有的大于1,有的小于0,完全不满足约束条件,所以无法使用。
通过验证,W满足3个约束条件,为了进一步验证W的准确性,我们用它和基础收率B对比,以均方误差MSE作为评价标准,MSE越小,预测产品产量与实际产量差距越小,收率越准确。
先来看使用基础收率B,各出料的均方误差MSE:
MSE1=12.24
MSE2=16.24
MSE3=8.98
其中MSEj是第j个出料的MSE。
再看使用W,各出料的MSE:
MSE1=10.97
MSE2=5.13
MSE3=3.86
很明显,拟合后的W效果更好。
最后说明一下,本文只介绍优化产品收率的思路,具体的计算过程并没有详细描述。文中的代码也是示意性的,因为有边界的线性拟合、计算边界范围、线性变换等都需要大量的运算,都展示出来只会使文章变的臃肿且晦涩难懂,如果有读者对细节过程感兴趣,可以和我们联系沟通。
开发这类算法常常需要做大量实验来选择合适的函数计算式并调整参数,SPL编程的高效性会发挥巨大的作用,在同样的时间内能够尝试更多种方案。
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我有三个模型:User、Product、Offer以及这些模型之间的关系问题。场景:用户1发布了一个产品用户2可以向用户1发送报价,例如10美元用户1可以接受或拒绝提议我现在的问题是:用户、产品和报价之间的正确关系是什么?我如何处理那些“接受或拒绝”操作?是否有更好的解决方案?用户模型:classUser:productsend产品型号:classProduct:usersend提供模型:classOffer提前致谢:)编辑:我正在使用Rails3.2.8 最佳答案 警告:小小说来了第1部分:设置关联我建议阅读Railsguideo
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un
2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动
我一直在学习Ruby,所以我想我应该尝试一下项目中的一些Euler难题。尴尬的是,我只完成了问题4...问题4如下:Apalindromicnumberreadsthesamebothways.Thelargestpalindromemadefromtheproductoftwo2-digitnumbersis9009=91×99.Findthelargestpalindromemadefromtheproductoftwo3-digitnumbers.所以我想我会在嵌套的for循环中从999循环到100并测试回文,然后在找到第一个(应该是最大的)时跳出循环:final=nilrang
我正在使用Rails创建一个新产品,并想为每个产品添加一个类别。我有三个表:产品、类别和分类(存储产品和类别之间的关系)。我正在尝试使用嵌套属性来管理分类的创建,但不确定应如何更新我的Controller和View/表单,以便新产品也更新分类表。这是我的模型:classProduct:categorizationshas_attached_file:photoaccepts_nested_attributes_for:categorizations,allow_destroy:trueattr_accessible:description,:name,:price,:photovali
我需要计算我的Rails3应用中两个字段的乘积之和(即相当于Excel的sumproduct函数)。Rails中是否有一种方法可以帮助解决这个问题?如果没有,那么使用自定义sql的Rails代码是什么?例如,酒店有很多房间。房间具有sqft(平方英尺)、数量(该尺寸)和hotel_id的属性。我想计算给定酒店中所有房间的总平方英尺。在SQL中,对于Hotel.id=8,我相信以下语句会起作用:selectsum(rooms.sqft*rooms.quantity)asSumSqftfromroomsinnerjoinhotelsonrooms.hotel_id=hotels.idwhe