当码农有10多年了,由建筑行业软件,各种MIS,通用物流定制平台,CCTV客户端(是闭路电视,不是央视喔)啥都做过。最后小试一下创业,不过那都是闹着玩的,不到一年就回到码农的队列,重拾搬砖的行当。近些年一直在制造业,做过ERP,当过小组负责人。有人问为什么不转纯管理?是能力不足,气质不佳还是人品低下?我觉得都有些且不全吧。反正无论是当管理还是做技术,我还是觉得手里拿点实在的东西心里才踏实。并不是说管理不是一个好技能,而是本人遇机问题,机会不多,所以大多数时间都是在做搬砖,砖搬多了,当然想试一下,看能不能搞个自动化机械出来,总不能搬到退休那天吧,码农到底多少岁退休呀?看来如果再不练就点拿得出手来的东西,到时候我就只能退,无法休了。那些奋斗于500强,30岁而立之年已赚足退休资本的农场主们不在此列。

  好了,唠叨了半于,回来说说粘点边的。上面说了,老农啥都搞,那也就是说没啥精的了。跟同行们说我是在制造业里做IT的,可人家习惯性地府视俺:工厂里的IT?说是ERP,不就是进销存嘛,能有啥技术含量?。嗯,觉得也是,不过要知道,当你深入到一个行业里去,无论是做什么,你都会觉得,你进的是天坑,你遇到的都是世界难题。毕竟那些说这个简单那个没技术的人,通常都只是在隔山观火走马观花(这两成语是这么用吗?体育老师还要兼顾数学,所以本农的语文水平有限呀。)在企业里我做过营业模块,也做过生产模块,其实当你深入其中,去跟各种业务逻辑细节搏斗时,你就会感觉到:妈的,今年的诺贝尔软件奖舍我其谁?其实世界上没有好做的软件,觉得好做,只是你的系统简单而已,而不是哪个行业简单。好了,既然ERP这么简单,老农我也觉得这不是我的菜呀(其实是能力不足,没办法深入到ERP的业务里罢了).好在现在整个中国都在闹智能制造,我觉得也可以在制造业做点大家觉得有小许牛B的事了(原谅我做了点小梦)。先不说这一轮的人工智能热潮会不会如2000年的互联网热一样,火一下就没了。但有些进步是大家都能看得到的,起码谷哥他家的狗在围棋上把人类给秒了。

  关于智能制造,在其中一个环节,就是让计算机把一些以前还是需要有经验,IQ还可以的人才能做的东西,帮忙给做了;而不仅仅是通过网络控制机器手来代替人手。能被机器手代替的,更多的是重复劳动,另外就是机器手的高精度操作远超人类。但是,例如做生产计划这类需要很高“智能”才能做的事情,在人工智能的背景下,应该也会慢慢有成果出现了。说到生产计划,可能大家遇到最多的都是MPS(主生产计划),它只是一个很高层次的计划,只能计划到车间(顶多是产线),时间上最多只能精确到天;更多的算是企业层面的计划,不太具有实操性。要满足智能制造中,实现对机台进行分钟级(甚至秒级)的生产指令下达。光靠MPS肯定不可行的,事实上MPS下达到车间后,会有相应的调度部门来对MPS进分解,形成调试指令。把工单再分配给操作班/组,而这个生产指令在很多情况下,还不是精确的完全可执行的信息,很多还只是“主体信息”,到了机台的操作班/组,还需要班/组长根据机台的实际情况进行一些额外的处理,才能形成真正的操作指令。所以,一些很复杂的细节逻辑,其实是下压给了调度部门和机台班组。但要实现智能制造,要提高生产自动化程度,这一系列的复杂转换,就不可能由人逐层地下发。因为:1.在速度上来说,人对复杂问题的处理速度远跟不上计算机,特别是涉及大量计算、判断的信息处理时;2. 能做出一套好的MPS就已经是不错的生产计划员了,已经需要对业务非常熟悉,对各种情况的预判准确率要达到一定的程度;这是需要丰富的经验和试错经历的。3. 当完成了MPS要分解成调试指令甚至是操作指令时,这个过程就不可能只靠人类来实现,因为里面涉及的计算和逻辑判断太多,太复杂,远超过人类可以处理的范围。4.就算花大量的人力物办做出一套可行的调试指令,但要在可行的基础上实现相对最优,那就不是人可以做到的了,这就涉及一个数学上的NPC问题,我在下一篇文章里会说明。

  因此,要实现上面说的那些复杂、不可能靠人力实现的工作,就需要依赖计算机了。但计算机也只是按人的指令要求进行计算和判断而已呀,所以归根到底还是需要人的智慧。而在这个场景下,实际上是需要依赖人类对数学的运用来实现这么一些复杂的系统。Google那只会下围棋的狗(现在人家已经站在这个星球的围棋顶端开卷孤独求败了),其实不就是人类给它实现了一大堆的数学逻辑嘛。可我并没有这个水平,我们怎么办呢?怎么样能完成上面看起来很牛的工作呢?其实现在业界已经在研究并且有些比较成功的应用了,那就是APS,APS的核心就是在有限的资源条件下,实现相对最优的资源配置。为什么我老是讲相对最优,而不说最优呢?还是得下篇来说。APS这个核心是怎么实现的呢?那就需要一个很牛的引擎。也许会有同学问,业务规则我都知道呀,条件限制我都得到了,那我自己按业务规则写出来,然后就用这个来跑,把结果跑出来,形成一系列的调试指令不就行了吧?扯什么引擎,什么相对最优呢?没错,如果是这样的话,估计这部分同学也是觉得别人的系统很简单,没啥技术含量了。事实上业务规则分两种,很多个层次。层次先不说,我们先说种类。一种是硬规则(相对应的制约,后面的篇章里会叫做硬约束),和种是软件规则(相对应的制约,后面的篇章里会叫做软约束)。硬规则就是一些不能违反的规则,例如一个产品所使用的原料必然是指定范围内的,需要使用指定的机台进行生产,否则就不可能生产出来,或出来的必然是报废品。而有一些是软规则,就是一些规则老板们希望都不要违反,违反了会让他掉钱的,但客观事实出现了一些情况,没办法完全保证所有规则都 遵循,部分规则也只能放弃坚守了,也就是相害相遇取其轻。例如:同样的产品,可以用两种机台生产,有一个机台的成本非常高,是用来生产专用产品的,普通产品在正常情况下是不会用那个机台生产的,如果普通产品放上去,必然亏本。但如果现在正是旺季,而一个很重要的客户给订单过来,要一个生产普通产品,如果不用这个天价机台生产,那铁定是无法按期交货了,会影响后以后的合作,这时候老板也只能亏一次,起用这个天价机台了。但是生产得越多亏得越多,老板就要求调度员们绞尽脑汁,力求尽量少用这个天价机台。每天都有天量的生产要求要处理,你当计划员、调度员们是神呀?所以篇到一个认为差不多可以了的生产方案就往上报呗,老板也如愿以偿地保住了客户亏了不少钱。可是过两天老板会发现,其实有更好的方案可以更少地使用天价机台,甚至还有一个无需使用天价机台的方案,他会去把计划员、调度员们捉来杀掉拜旗吗?(只有码农才有这个待遇吗?).问题是:1、在短时间内,人类能找到这个方案吗?不一定,其实是很难,非常难。2. 计划员、调度员们找到的方案有人去挑战吗?不一定(基本上没人有这个能力),因为你也不知道他们出的方案是不是最优?甚至他们自己也不知道。除非他们把所有可能的情况都列举一次,在现实情况下,不要说他就这一个方案做到退休能不能穷举,就算全公司的人一起来列举计算,算到地球毁灭那一天,也不一定能找到。这个时候排程引擎就派上用场了。而其中的核心就是一些数学算法。就如上面所说的,这么多的情况,计算机也只是一个一个去试,一个一个去计算呀,那如果可能的情况足够多,你把全世界都用来挖矿(比特B)的电脑都拿来跑也不一定能跑完呀。这就对了,引擎的作用就是当可能情况无限大的时候,并不会无序地一个一个试,而是集成一些算法,有策略地找,虽然也不一定能找到,但在相同的时间内找到相对最优方案的机会,相对人来说,还是超N个数量级的。其中就集成了一些例如Tabu search算法,遗传算法,退火算法和爬山算法等。我们的主角Optaplanner就是这么一个集成了这么多数据工具的一套开源软件。一下篇我们就开始对Optaplanner进行学习。惊不惊喜?意不意外?:)

  首次发文,文笔不通,有砖尽管砸,老农受得了!

浅尝一个排程引擎Optaplanner,前序。的更多相关文章

  1. crontab 例行性排程

    那么我们就来聊一聊 crontab 的语法吧![root@www ~]# crontab [-u username] [-l|-e|-r]选项不参数:-u :只有 root 才能迚行这个仸务,亦即帮其 ...

  2. 例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: ...

  3. 第十六章、例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式 ...

  4. linux备忘录-例行性工作排程 (crontab)

    例行性工作排程 例行性工作排程分为两类 at at是只执行一次就结束的指令安排.要想使用at,必须要有atd服务的支持. crontab crontab是每隔一段时间自动执行的指令安排.crontab ...

  5. Linux学习-循环执行的例行性工作排程

    循环执行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的. 另外, 由于使用者自己也可以进行例行性工 ...

  6. 浅尝Spring注解开发_Servlet3.0与SpringMVC

    浅尝Spring注解开发_Servlet 3.0 与 SpringMVC 浅尝Spring注解开发,基于Spring 4.3.12 Servlet3.0新增了注解支持.异步处理,可以省去web.xml ...

  7. 浅尝ECMAScript6

    浅尝ECMAScript6 简介 ECMAScript6 是最新的ECMAScript标准,于2015年6月正式推出(所以也称为ECMAScript 2015),相比于2009年推出的es5, es6 ...

  8. 浅尝key-value数据库(一)——一览NoSQL

    浅尝key-value数据库(一)——一览NoSQL 最近由于一个项目的关系,研究了一下key-value数据库这个最近很火的概念.本系列从项目需求的角度分析并测试了几个key-value数据库的性能 ...

  9. 易普优APS 5.0高级计划排程系统助力工业4.0智能工厂建设

    (一)智能工厂建设核心 <中国制造2025>明确提出要推进制造过程智能化,智能工厂是实现智能制造的重要载体.作为智能工厂,在生产过程应实现自动化.透明化.可视化.精益化的同时,产品检测.质 ...

随机推荐

  1. SSIS 延迟验证(DelayValidation)

    验证是一个事件,该事件在Package执行时,第一个被触发,验证能够避免SSIS引擎执行一个有异常的Package或Task.延迟验证(DelayValidation)是把验证操作延迟到Package ...

  2. 用LSTM分类 MNIST

    LSTM是RNN的一种算法, 在序列分类中比较有用.常用于语音识别,文字处理(NLP)等领域. 等同于VGG等CNN模型在在图像识别领域的位置.  本篇文章是叙述LSTM 在MNIST 手写图中的使用 ...

  3. python写外网收集信息器

    简单化,知道IP去扫描ip import socket from socket import * a=input('请输入域名:') try: ip=gethostbyname(a) print('[ ...

  4. deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II 听课笔记

    1. 误差分析(Error analysis) 误差分析的目的是找到不同误差源的比重,从而指引我们接下来往哪个方向努力改进.NG建议手工统计随机100个错误的误差源,比如对于猫分类器,错误的照片可能是 ...

  5. Android扫码二维码、美女瀑布流、知乎网易音乐、动画源码等

    Android精选源码 QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生...   一个简洁好看的loading弹窗   Android用瀑布流展示美女图片源码   Android知乎阅读 ...

  6. HtmlHelper总结

    HTML helper是在视图页面上操作HTML元素时可以调用的方法,还包括URL helper和AJAX helper.这些帮助方法都为了使得操作HTML更加容易.分为两类:a.编辑和输入帮助类b. ...

  7. Linux apache的运行用户和用户组

    我们在安装apache后,有时在上传文件的时候,提示没有权限或者是不可写,我们都会去查文件夹的权限. 通过ls -l /var/www/html/website可以很直观的看出我们文件和文件夹的权限, ...

  8. ios 继承关系图

  9. J.U.C ThreadPoolExecutor解析

    Java里面线程池顶级接口是Executor,但严格意义上讲Executor并不是一个线程池,而是一个线程执行工具,真正的线程池接口是ExecutorService.关系类图如下: 首先Executo ...

  10. SSH中post提交表单action中文乱码问题

    我的问题对应的解决方案是:web.xml中filter的顺序问题[置顶].需要将编码过滤器放置在所有过滤器之前. 在解决这个问题途中学习到的东西: 解决方案总结(post中文乱码): 前后台编码方式一 ...