Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 程序人生

【Access小品】一根光缆引发的血案--至zch、dbaseIIIer二同志书

时 间:2012-08-22 12:40:07
作 者:煮江品茶   ID:10802  城市:武汉
摘 要:【Access小品】一根光缆引发的血案--至zch、dbaseIIIer二同志书
正 文:

zch、dbaseIIIer两同志:
 

  关于zch同志提出的光缆开料问题,我已在相关文章和回复中进行了论述。但二同志还有些模糊和错误的认识和观点,需要进一步拨乱反正。因此就此问题与二位进一步交流一下。这次交流我主要想谈两个方面的内容,其一叫做前提与结果,其二叫做策略选择。

 

一、关于前提与结果的讨论

 

  什么是前提?前提是我们解决问题前的假设或者公理。任何学科都建立在一种假设的前提之下,任何问题也都有建立在假设和前提之下。没有假设和前提学科本身就不能成立,问题本身就不成立。就此问题来看,也是有假设和前提的,只是假设和前提有些是显性的有些是隐形的,有些是定量的有些是定性的。那么这个开料问题到底有哪些前提和假设呢?我想可以这样归纳一下:

 

  1、额定损耗率、额定损耗额和可回收余料的长度在每次开料前是确定的,这种确定是基于需求方(施工委托方或者公司内部的技术部门等)的要求。只是不同批次的开料,这组数据可能会不一样。特别注意,不同批次的开料时要求的数据不一样,并不等同于当次开料的参数不确定,这是两个完全不同的概念。由此确立了一个前提,那就是额定损耗率、额定损耗额和可回收余料的长度每次开料计算前具有确定性。

 

  2、仓库管理人员偏好多发出短料,以减少保管的根数;施工人员偏好多领用长料,以降低消耗和减少开料次数。但开料的计算一般由仓库管理人员进行,因此在领发过程中,仓库管理人员决策权较大。因此也就确立了开料方案以尽量满足仓库管理人员的偏好为前提。

 

  3、光缆的使用上具有不可熔接和一次开料不导致剩余材料报废的特性,以及较长周期内所有施工方案中存在统计学意义上的最短截取长度。因此存在递延损耗的前提,也即可将能利用的余料不视为损耗,而递延到最后一次开料小于最短截取长度时再计算损耗。

 

  4、材料长度和成品长度的均不定长,不符合线性规划或其他已知规划求解的模型要求。因此确立了需要建立新的计算模型才能进行优化求解的前提。

 

  什么是结果?结果是在一定的前提下,通过一种计算模型得到的解或者解集。对于复杂的问题,结果是分阶段得到的。得到分阶段的结果,需要用到不同的前提和假设,需要输入不同的参数。从一个阶段到另为一个阶段,需要根据前提和假设采取不同的策略,使得最小的输入得到最需要的结果。

 

二、关于策略选择的问题

 

 什么是策略?策略是一种规则,一种确定的方法。多数管理问题在不同阶段都会存在多种可选的策略和可选的方法。这样说有些抽象,我们来看实例中两个最重要运算阶段的策略问题。第一个阶段是形成组合方案的阶段;第二个阶段是可选开料组合的进一步优化阶段。

 

  第一个阶段存在两种策略。第一是按照所有成品来计算组合;第二种是按照一定的分组标准来计算分组后的组合;第一种策略能精确的得到全部的组合结果,并由此得到所有的开料方案,但当成品数量较大时,组合结果集巨大到不可计算;第二种策略不能得到所有的组合结果,但计算量可控制在允许的范围内。那么第一种计算的策略一定是不可行的。问题只在于判断第二种计算策略是否在获取需要的数据上是否成立。结论是成立的,判断的过程已经阐述过,在此不赘述。我们观察到这个阶段只存在两种策略,而且是非此即彼的互斥关系,在两种策略中选择并不困难。问题是这是普遍面临的策略选择情形吗?答案是否定的。否定的原因我们来看第二种策略的问题。

 

  第一个阶段结束后,我们能得到数量庞大的开料组合,这些组合中一定存在更优的选择。那么选择的标准或者说规则或者说方法,就是一种策略。把庞大的开料组合的选择看成是遵循策略的选择,与直接在这些组合中凭肉眼的选择完全不同。这种不同不仅表现为选择数量上的巨大差异,而且表现为思维逻辑上的巨大差异。就实例来讲,实际只存在15种不同的选择策略,其中三种基本策略(损耗率最小、损耗额最小和消耗库存根数最多),并由此三种基本策略组合出12种复合策略。是不是这15种策略都有意义和价值呢?当然不是!我们可以前提和假设,以及策略之间形成结果的差异性作出判断。实际上只有两种策略是有价值的,其一是消耗库存根数最多前提下损耗率最小;其二是消耗库存根数最多前提下损耗额最小。由此以来,我们既不必在所有记录中凭肉眼去选择成百上千条记录,也不必在15种优选方案前茫然不知所措。而只需按照偏好做二选一的判断。更有甚者,可以忽略两种选择之间的差异,而仅确定一种策略,从而剥夺用户的选择权利,让他们留出时间来吸烟喝茶好了。

 

  上述的分析,就不难看出dbaseIIIer同志在阐述问题的时候,是没有分清楚什么是前提什么是结果,什么是输入什么是输出了。也没有搞明白该怎么样向用户呈现数据,以及如何将用户的判断与程序人员的判断区分开来。将胡子眉毛抓在了一起,也就造成了剪不断理还乱状况。给用户选择的权利本身并没有错误,但给用户无从选择的选择甚至是不必要和错误的选择,是断然错误的做法。程序编写人员只有将用户视为傻瓜和懒汉,才有可能写出好的程序。如果将应该由程序编写人员做出的判断移交给用户,那一定写出的是失败的程序。



  当年一个馒头引发了一部电影的血案,今日里一个光缆引发了一个Access血案。今日里的这个血案,似图通过一个具体的问题,告诉同志们程序编写中的一些看起来不大关乎程序的问题以及处理的思路和方法。这些不大关乎可能恰巧是一个程序编写人员特别需要关注的问题,所以我用了一个恐怖的标题来提醒同志们。

 

以下示例较原文进行了运算速度上的优化:

  点击下载此附件

 




Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助