PID调节 和 堆垛机的入库分配
上学的时候,学校浴室的那一排淋浴头基本没法用;因为温度基本没法掌控,一旦有人开一个或关一个或调节一下冷热水的阀门,其他淋浴头都会立马水温失控;
所以,那时候,大家基本都是拿个盆接水做缓存;否者不是被冻坏就是被烫伤;
当时想,大学教授们知识那么渊博,怎么不用他们顶尖的自动控制理论做一个自动控制的东西,先把大家洗澡淋浴的水温调好;
当然,现在浴室里没这个问题,互相不会干扰;也不知道通过什么原理控制的,难道是各自出水口是独立的;
在自动控制理论里,最经典的就是PID调节,线性,积分,微分;每种调节加一个系数;
举个简单的例子,我们目的是想控制电机速度恒定在100转/秒,可以通过输入电压的大小调节(假设电压和转速线性关系); 比如空载的时候,速度没提高10转/秒,就需要提高1V电压;
那么我们每5秒采样一次,一旦发现转速超过了5转/秒,就降低0.5v,一旦发现减慢了10转/秒,就提高1V;
但是,电机是有负载的,忽大忽小,不受控制的;这样仅仅靠线性调整,效果就不行了;
为了更多的捕获规律,就要更多的看趋势,这种趋势就需要多个采样周期加起来判断综合判断;这是积分调控;
这就类似于,咱们看股票的时候,使用10日,30日均线判断趋势,用来指导下一步的操作;
还有一种可能性,电机接受到一个忽然大变化的负载变化,导致速度骤升骤降,也就是加速度突然有了大的变化,也就是导数突然陡峭;这就要微分调控;
这就类似一个老股民,红着眼睛盯着日线的变化,一旦有个突然的曲线变化,就立马做相应的仓位调整;
如果把每次变化的调节输入信号值做一个差量Δ,这样方便计算机做程序编写;
那么 Δu(k)=Ae(k)-Be(k-1)+Ce(k-2)
其中:
k-当前采样次数;
Δu(k)- 相对上个采样周期的输入变化值
e(k)- 当前采样输出与额定的误差;e(k-1)是上一个周期的;e(k-2)上上周期的;
A,B,C -调节的系数;
咋一看,和斐波那契数列有点像,只是斐波那契数列的系数都为1,以前看过一个电影上的一个数学题,也和斐波那契数列有点像,比斐波那契复杂,知识不够,当时没推导出其通通项公式,
刚才搜了一下,居然找到这个帖子了:
电影《极限空间》里的题目延伸
斐波那契数列太出名了,因为它跟黄金分割点搞在一起;
股票里的什么波动理论,好像也用上了黄金分割点;这就感觉像古代算命用上的阴阳五行似的;有点扯淡;
如果能用数学的方法研究出股票规律,那不是早发财了,就算用上大数据分析历史规律,估计也没什么毛用;
PID分析,又让人容易联想倒电路里的阻抗感抗容抗,貌似也有相似之处;想控制输出曲线的高度,用电阻控制,想控制曲线的平滑度,需要电容串并联的滤波;
PID的调节,也很像人生目标的调整;我们不断判断努力的结果和目标的差,不断调整努力方向和程度;
你获得的成果,往往和自我的调节能力有关;
遗传算法也是一种基于反馈的算法,这一点上也和PID有共同点
不断的做交叉和变异; 举个简单的例子,你家里想养眼睛大的猫;那么你先购买100条猫;
繁殖后,保留眼睛最大的100条,其他送人,一代代下去,你就逐渐获得相对邻居明显的大眼猫;
遗传算法一直是广大工科研究生论文喜欢貌似高大上的话题,也有人将遗传算法和PID调节结合起来,
能让pid自适应获取合的参数,从而做到快速稳态和收敛;也不知道真的假的,也没精力去研究了;
老夫想,有没有高材生想到用遗传算法去控制堆垛机的分配,一搜,果然有,没看明白,不研究了;
下面说说堆垛机的入库分配, 也是在pid调节上有了点提示,做了一些简单的算法考虑;
堆垛机入库分配,其实也什么特别的,也很简单,但是控制要控制好各种细节;
老朽在这个上面有一些心路历程:
1. 各个巷道按照空余量等量分配;
也就是说,如果1巷道剩余100个位置,2巷道剩余90个位置,那么就让1巷道连续入10个,让它和2巷道相等;
这就类似太平天国早期的 天朝田亩制度,货位使用量均匀;
使用下来,发现问题很大,因为出库的不均匀,或者某个别堆垛机的临时故障或关闭等原因;
必然导致个别巷道剩余货位明显多于其他巷道;这样后面的货物就会集中入到该巷道;
某段时间的入库的均衡性被破坏,而入库的不均衡性导致了出库也不均衡,出库的不均衡又加剧了入库的不均衡;
就像小两口吵架一样,A破坏氛围,B就更加破坏,B的更加破坏导致了A的更加加破坏...;
不均衡的入出库会严重影响堆垛机协同作业的效率,而且集中入到某台堆垛机,会导致输送机来不及动作,从而兜圈,
严重的时候,会让线体堵死;
后来改进了一下,按sku分组来考虑,但是只是缩小了粒度,集中不均衡的入出库一样会有;
2. 各个巷道绝对轮流值日;
不管各个巷道的空余量,每个巷道轮流值日,这样的好处是,任何一段时间内,入库的均衡行是能保证的,
虽然不排除有些巷道库存量会高一些,但是这样它的出库概率也会更高,所以总的来说: 入库,出库,库存量 这三个指标
在各个巷道内都是一个相对平衡的状态;
但是后来有了一些干扰因素:比如某类SKU专门入某个巷道,这样这个巷道在参与轮流值日,就会“吃亏”;
比如,我上小学的时候,因为学校离家近,都是我放学锁门,这样我参与扫地的就可以两周一次;
所以就针对这种特殊性,我给每个堆垛机设置了不同权重; 在轮流值日的时候,既要考虑交叉,又要考虑权重;
而故障的恢复后又要享受不需要补充值日的待遇;
算法参考之前问的这个:
困扰多年的问题,轮流值日扫地算法
但是这个算法,有个最大缺点,是个开环系统,没有考虑库存量,也没又考虑线体正在入库中的分配情况,不接受反馈信号,做的单一判断;
虽然在库存快爆仓的时候,改变算法,以最大空余量代替轮流值日的方法,以防止库存爆仓;
但是没有用到类似PID这样的控制理论,根据输出信号反馈做动态判断的做法,总是让人惴惴不安;
就如古代皇帝自认为神勇,不听大臣们劝告一样,一意孤行总会出事的;
随着各种项目的特殊性,越来越觉得轮流值日的算法有很多局限性;比如有的入库口有多个位置;
有的位置适合所有堆垛机都可以分配,有的从路线上看,只适合分配某几台,否者它要绕很大的圈子,得不偿失;
有的输送机因为入口堵塞,可能要兜圈,这就破坏了线体上缓存的载体的入库均衡性;
不考虑这些因素,而是一味的平均轮流,肯定会有问题;
于是,老夫痛定思痛,还是要接受反馈,改进算法吧,做一个双闭环控制:
1.考虑因为部分堆垛机走捷径入库倒部分堆垛机的存量不均衡;
2.考虑线体上缓存的载体的分配情况(如果线路圈子大,有多个捷通,缓存的数量也不小)
3. 多闭环信号综合考虑;
分配优先级顺序是:
1.堆垛机状态正常的优先(联机,无异常)
2. 可用货位小于30(可设置,用来防止快爆仓)的特殊处理,优先级降到最低;
3.特殊入口位置,优先分配固定的某几台堆垛机(主要是为了尽量走捷径,提高线体运作效率)
4.入口无货的优先(防止有入口堵塞现象,尽量不分配这样的堆垛机)
5.线体上去往相同堆垛机最少的优先分配(防止某一个堆垛机被集中入库)
6.可用货位数量越多的优先,按100(可设置)个一组划分(平衡因某些入口固定去某几台堆垛机而导致的各台堆垛机的可用货位数量差异太大)
7.按照分配时间轮流值日(本来是最重要的分配原则,如今被作为最低优先级来考虑)
经典自动控制理论,运筹学(线性规划,0-1决策,排队论),信号的时域频域分析,甚至当初被爱因斯坦否定的量子力学都能跟物流规划扯上关系;
当然,你就干巴巴的什么都不联想也行,就是少了联想,干活无趣了一些;
10多年前,看那个还珠格格上说的话,乾隆问紫薇,她娘恨不恨他,紫薇说:不恨,她娘感谢上苍,给她有了个可想可盼的念想,不然生命就像一口枯井,了无生机;
所以说,人生最悲哀的不是贫穷,是没有那个“画饼”,说的文雅一点,就是没有理想;
我们要努力工作,往往多些看似有趣而实际飘渺的念头,偶然回味一下,有点意思而已;否者真的是一口古井; 现在是云的时代,想起了徐志摩的<我是一片云>,好像有一句叫:偶然投进你的波心;
是波就会有涟漪,就会遵守波的发散性和衍射原理,偶尔搞点发散性的古怪关联想法,心里有些涟漪,聊以自慰而已;
No comment