华罗庚:优选法方法平话及补充
今年是中国优选法统筹法与经济数学研究会(中国“双法”研究会)发起人、首任理事长华罗庚先生(1910.11.12-1985.6.12)诞辰110周年。我们将选择推送部分华罗庚先生在应用数学和科学普及方面的文章,以缅怀华罗庚先生为国家为人民鞠躬尽瘁的精神,以及将数学方法应用于国民经济领域所做出的巨大贡献。
华罗庚先生1965年开始研究优选法,“从当时的几十种方法中,根据我国的实际情况,通过去其装璜,删其枝节,反复证明比较,重其实用效果而筛选出来”,1969年完成《优选法平话》,1971年5月《优选法平话》由科学出版社出版,署名齐念一。经修改补充后,《优选法平话及其补充》随后由国防工业出版社出版,并在推广“双法”期间大量重印。本文也收录于《华罗庚科普著作选集》(上海教育出版社,1984年10月)。
优选法平话及其补充
“优选法”平话
§1 什么是优选方法?
优选的方法的问题处处有,常常见。但问题简单,易于解决,故不为人们所注意。自从工艺过程日益繁复,质量要求精益求精,优选的问题也就提到日程上来了。简单的例子,如:一枝粉笔多长最好?每枝粉笔都要丢掉一段一定长的粉笔头,单就这一点来说,愈长愈好。但太长了,使用起来既不方便,而且容易折断,每断一次,必然多浪费一个粉笔头,反而不合适。因而就出现了“粉笔多长最合适”的问题,这就是一个优选问题。
蒸馒头放多少碱好?放多了不好吃,放少了也不好吃,放多少最好吃呢?这也是一个优选问题。也许有人说:这是一个不确切的问题,何谓好吃?你有你的口味,我有我的口味,好吃不好吃根本没有标准。对!但也不完全对!可否针对我们食堂定出一个标准来!假定我们食堂有一百人,放碱多少,这一百人有多少人说好吃,统计一下,不就有了指标吗?我们的问题就是找出合适的用碱量,使食堂里说好吃的人最多。
这只是引子,是比喻。实际上问题比此复杂,还有发酵问题等等没有考虑进去呢!同时,这样的问题老师傅早已从实践中摸清规律,解决了这一问题了,我们不过用来通俗说明什么是优选方法而已。
优选方法的适用范围是:
怎样选取合适的配方,合适的制作过程,使产品的质量最好?
在质量的标准要求下,使产量最高、成本最低,生产过程最快?
已有的仪器怎样调试,使其性能最好?
也许有人说我们可以做大量试验嘛!把所有的可能性做穷尽了,还能找不到最好的方案和过程?大量的试验要花去大量的时间、精力和器材,而且有时还不一定是可能的,举个简单的例子,一个一平方公里的池塘,我们要找其最深点。比方说每隔一公尺测量一次(如图1),我们必须测量1000X1000,共一百万个点,这个问题不算复杂,只有横竖两个因素。多几个:三个、四个、五个、六个更不得了!假定一个因素要求准两位,也就是分100个等级,两个因素就需要即一万次,三个就需要即一百万次,四个就需要一亿次;就算你有能耐,一天能做三十次,一年做一万次,要一万年才能做完这些实验。
优选方法的目的在于减少实验次数,找到最优方案。例如在一个因素时,只要做14次就可以代替1600次实验.上面所说的池塘问题,有130次就可以代替一百万次了(当然我们假定了池塘底都不是忽高忽低的)。
§2 单因素
我们知道,钢要用某种化学元素来加强其强度,太少不好,太多也不好。例如,碳太多了成为生铁,碳太少了成为熟铁,都不成钢材,每吨要加多少碳才能达到强度最高?假定已经估出(或从理论上算出)每吨在1000克到2000克之间。普通的方法是加1001克,1002克,……,做下去,做了一千次以后,才能发现最好的选择,这种方法称为均分法。做一千次实验既浪费时间、精力,又浪费原材料。为了迅速找出最优方案,我们建议以下的“折叠纸条法”。
请牢记一个数0.618。
用一个有刻度的纸条表达1000~2000克(图2),在这纸条长度的0.618的地方划一条线(图3),在这条线所指示的刻度做一次实验,也就是按1618克做一次实验。
然后把纸条对中迭起,前一线落在另一层上的地方,再划一条线(图4),这条线在1382克处,再按1382克做一次实验。
两次实验进行比较,如果1382克的好一些,我们在1618处把纸条的右边一段剪掉,得(图5):
(如果1618克比较好,则在1382克处剪掉左边一段)。再依中对折起来,又可划出一条线在1236克处(图6):
依1236克做实验,再和1382克的结果比较.如果,仍然是1382克好,则在1236处剪掉左边:
再依中对折,找出一个试点是1472(图7),按1472克做实验,做出后再剪掉一段,等等。注意每次留下的纸条的长度是上次长度的0.618(留下的纸条长=0.618 X 上次长)。
就这样,实验、分析、再实验、再分析,矛盾的解决和又出现的过程中,一次比一次地更加接近所需要的加入量,直到所能达到的精度。
从炼钢发展的历史也可以充分地看出“优选法”的意义,最初出现的生铁,含碳量达4%,后来熟铁出世了,几乎没有含碳量。在欧洲18世纪70年代前,熟铁还是很盛行的。各种钢的出现,就是按客观要求找到最合适的含碳量的过程。例如:可以冷压制成汽车外壳的钢是含碳量0.15%的低碳钢。做钢梁的大型工字钢所要求的是含碳量的软钢。通过热处理可以硬化制成车轴、机轴的是含碳0.5%的中碳钢。做弹簧、锤、锉、斧又需要含碳1.4%的高碳钢。各种合金钢就更需要选择配方了。
以上不过拿钢来做例子,像配方复杂的化学工业、生产条件复杂的电子工业等,那就更需要优选方法了。
§3 抓主要矛盾
事物是复杂的,是由各方面的因素决定的,因而必须考虑多因素的问题。但在介绍多因素的“优选法”之前,我们应该学习毛主席的论断:“任何过程如果有多数矛盾存在的话,其中必定有一种是主要的,起着领导的、决定的作用,其他则处于次要和服从的地位。”
“优选法”固然比普通的穷举法(或排列组合法)更适合于处理多因素的问题,但必须指出,随着因素的增多实验次数也随之迅速地增加(尽管比普通方法的增加率慢得多),因此,为了加快速度节约人力、物力,减少实验次数,抓主要矛盾便成为关键的关键;至少应当尽可能把那些影响不大的因素,暂且撇开,而集中精力于少数几个必不可少的、起决定作用的因素来进行研究。
举例来说:某金属合金元件经淬火后,产生了一层氧化皮,我们希望把氧化皮去掉,而不损害金属表面的光洁度。有一种方法叫做酸洗法,就是用几种酸配成一种混合液,然后把金属元件浸在里面,目的在短时间内去掉氧化皮,不损失光洁度。
选择哪几种酸的问题,这儿不说了。只说,已知要用硝酸和氢氟酸,怎样的配方最好?具体地说要配500毫升酸洗液,怎样配?
看看因素有多少:硝酸加多少?氢氟酸加多少?水加多少?什么温度?多长时间?要不要搅拌,搅拌的速度和时间?一摆下来有7个因素,每个因素就算它分为10个等级,用穷举法就要做
次试验,即一千万次,就算优选法有本领,只要万分之一的工作量,那也要做一千次,太多啦!
请看搞这项实验的同志是怎样按照毛主席抓主要矛盾的指示来分析问题的。
总共是500毫升,两种酸的用量定了,水的量也就定了,所以水不是独立因素。
其次,配好了就用,温度的变化不大,温度不考虑。
再其次,时间如果指的是配好后到进行酸洗的时间,我们也不考虑这时间,因为配好就洗;如果指酸洗所需要的时间,那不是因素而是指标,这次搞出的酸洗液只要三分钟,所以也不成问题。
最后,搅拌不搅拌就暂不考虑。
结果就只有两个因素:硝酸多少?氢氟酸多少?因此,只用一天时间做14次试验就把问题解决了。否则就要成月成年的时间了。
再补充说明一下这样分析的用意:三种配比有时会误解为三个因素,实际上只有两个因素(变数)是独立的。
酸洗的时间长短,不是因素而是指标,就是说,该时间不是自变数,而是因变数。
采用“优选法”的同志必须注意:在分析问题的时候,要弄清楚到底有哪些是独立变数,经验告诉我们这都是易于发生的错误。还必须再强调一下,在分析出哪些因素是独立变数之后,还要看其中哪些因素是主要的。
假如有两个因素要考虑,一个是含量1000克到2000克,另一个是温度
。
我们处理的方法:把纸对折一下,例如是在1500克处对折,在固定了1500克的情况下,找最合适的温度,用单因素方法(即§2的方法)找到了在“X”处。再横对折,在5500度时用单因素的方法(即§2的方法),找到最合适的含量在“Ο”处(图8)。比较“Ο”与“X”两处的实验,哪个结果好。如果在“X”处好,则裁掉下半张纸(如果在“Ο”处好,则裁掉左半张)。在余下的纸上再用上法进行。
当然因素越多,问题越复杂,但在复杂情况中含有灵活思考的余地,例如:当我们找到“X”处后,我们放弃对折法,而用通过“X”的横线,在这条横线上作试验,用§2的方法找到“ù”处最好,再通过在“ù”处的竖线上做实验(图9),等等。
例如,某工厂曾处理的问题就是本节提出来的、采用酸洗液洗去金属元件的氧化皮的问题。经过分析后,将问题变为:配500毫升酸洗液;问:水、硝酸和氢氟酸各放多少效果最好?
根据经验和有关资料,他们原先拟定:硝酸加入量在0-250毫升范围内变化,氢氟酸在0-25毫升范围内变化,其余加水。这是一个双因素的问题。
这样的试验,如果采用排列组合的方式进行。若硝酸0-250毫升按5毫升分一等份,共分成50个等份。氢氟酸由0-25毫升按2毫升分一等份,共分成13等份。如此需要进行50X13=650次试验,这是既花时间又花物力的试验。我们用“优选法”得出的结果,氢氟酸的取值是33毫升,竟超出所试验的范围之外。因此,就是做遍650次也找不到这样好的酸洗液。
用“优选法”指导试验,第一步固定氢氟酸配比在变化范围0-25毫升的正中,假定加入量为13毫升,先对硝酸含量进行优选。具体方法是,把0-250毫升标在一张格子纸条上,用纸条长度表示试验范围。从0开始,按0.618的比例先找到第一个试验点甲为155毫升,作一次试验。然后将纸条对折起来,从中线左侧找到甲的对称点乙为95毫升,作第二次试验(见图10)。对比甲、乙二试验结果,知道甲比乙好,立即剪掉乙点左侧的纸条(即淘汰小于95毫升的试验点),得出新的试验范围(即95至250毫升),再将剩下纸条对折起来,找到甲的对称点丙为190毫升,作第三次试验(见图11)。对比丙与甲的结果,知道甲比丙好,即将丙点右侧的纸条剪掉(即淘汰大于190毫升的试验点),又得出新的试验范围(95-190毫升),再同样对折找甲的新对称点作新的试验(见图12)。如此循环,到第五次试验即找到硝酸配比最优为165毫升,第二步将硝酸含量固定为165毫升,用同样方法对氢氟酸加入量进行优选,发现氢氟酸含量在边界点25毫升时,酸洗质量较好,说明原来给出的范围不一定恰当,决定在25-50毫升范围再进行优选,到第九次试验,找到氢氟酸最优点为33毫升。至此,共试验十四次,所找到的配方已经能很好地满足生产的需要了,因此试验结束。否则,还须再次将氢氟酸含量固定为33毫升,再用同样方法对硝酸含量进行优选,如此做下去。直到找到最优配方为止。这个例子说明,用“优选法”不仅能够多快好省地找到最优方案,而且可以纠正根据经验初步确定的范围不当的错误。
附记
1.上述合金酸洗液的选配问题,在过去两年里,曾进行过两次试验。一九六八年的试验失败了,一九六九年经过许多次试验,总算找到一种酸洗液配方,勉强可用;但酸洗时间达半小时,还要用刷子刷洗。
这次采用优选方法,不到一天时间,做了十四次试验,就找到了一种新的酸洗液配方。将合金材料放入这种新的酸洗液中,马上反应,三分钟后,氧化皮自然剥落,材料表面光滑毫无腐蚀痕迹。
2.令x代表硝酸量,y代表氢氟酸量;根据经验和有关资料,假定:
如果没有经验和有关资料,只有如下条件(图13):
们如何处理?也就是如何进行选配?在这种情况下,上述的双因素方法仍可应用,但应注在三角形之外的点不在考虑之列。更好的方法是改换变数:
也就是我们令
代表加入酸的总数量而令
代表硝酸占总酸量的成分并作为自变量,于是问题仍然归结为在长方形:
中求最优方案的问题。
(初看时,此节可略去。在有些实践经验,充分拿握了一两个因素的方法之后,再试看试用这一节。)
也许有人说,“折纸法”由于纸只有长和宽,只能处理两个因素的问题,两个因素以上怎么办?学过数学的可以用“降维法”三个字来处理,只要理解了怎样降维,就可以迎刃而解了。以上两个因素问题的处理方法就是把“二维”降为“一维”的方法。
我们以上的根据是对折长方形,现在抽象成为“对折”长方体,也就是把长方体对中切为两半。大家知道共有三种切法,在这三个平分平面上,找最优点,都是两个因素(固定了一个因素)的优选问题。这样在三个平分面上各找到了一个最优点。在这三点处,比较哪个点最好,把包有这一点的1/4长方体留下,再继续施行此法。
举例说:如图14,如果在立方体
中找最优点。在三个平面:
上,各用双因素法找到最优点:
看这三个点中哪个最好,如果
最好,而且
则在长方体
中找下去,等等。总之,留下来的体积是原来体积的1/4.
在实际操作过程中,在定出两平面上的最优点后,可以经比较,先去掉一半,然后再处理另一平面。
特殊性问题
§1 一批可以作几个试验的情况
例如,一次可以做四个试验,怎么办?根据这一特点,我们建议用以下的方法:
1.把区间平均分为五等份(图15),在其中四个分点上做试验。
2.比较这四个试验中那个最好?留下最好的点及其左右,然后将留下来的再等分为六份(图16)。再在“X”做实验。
3.继续留下最好的点及其左右两份区间,再用同法,这样不断地做下去,就能找到最优点。
这是某工厂的工人老师傅所建议的方法,实质上,可以证明,这是最好的方法。但须注意,对于每批偶数个实验,这样均分是最好的,然而对于每批奇数个实验的情况,则就比较麻烦些(每次一个就是0.618),这儿不叙述了。
有些资料上认为,“优选法”只适用于每次一个实验.每次多个试验只好用老方法“实验设计”,这种看法是值得商讨的。
在实践中遇到这样的问题。某一产品依靠某种贵重金属。我们知道,采用16%的贵重金属生产出来的产品质量合乎要求。我们向,可否少些、更少些呢?使产品自然符合要求。这样来降低成本。
我们建议用以下的平分法,而不用0.618法。我们在平分点8%处做试验。如果8%仍然合格,我们甩掉右边一半(不合格甩掉左边一半)。然后再在中点4%处做试验,如果不合格,就甩掉右边一半。再在中点6%处做实验,如果合格,再在4%与6%之间的5%处做实验,仍然合格。留有余地,工厂里照6%的贵重金属进行生产。
这一方法在一些工厂都早已用上了。
我们的问题是两个因素:一个是温度,一个是时间。炉温难调,时间易守。根据这一特点,我们采用“平行线法”(图18),先把温度固定在0.618处,然后对不同的时间找出最佳点,在“Ο”处。再把温度调到0.382处,固定下来,对不同的时间找出最佳点,在“X”处。对比之后,“Ο”处比“X”处好,我们划掉下面的部分。然后用对折法找到下一次温度该多少,……
这个方法是某工厂结合实际的创造。
为由B上升到A的陡度(图19)。
在某化工厂,我们遇到过这类问题。这是一个双因素的问题(图20),我们在横线上做了两个实验(①、②)之后,我们立刻转到竖线上去,又做了两个实验(③、④)。我们发现④点特好,②点特差;在这种情况下我们就不再在横、竖二线上作实验了。我们在②与④的连线上⑤点做了一个试验,结果更好,超过了我们的要求。
总起来这是陡度问题。可以计算①到④,②到④,③到④的陡度;看那个最陡,就向那个方向爬上去。
这个方法在某工厂曾经用过:从已有的实验数据中发现了很陡的方向,这个方向正是寻找最优方案的方向。在这个方向上实验,我们找到了最满意的点。
§5 瞎子爬山法
瞎子在山上某点,想要爬到山顶,怎么办?从立足处用明杖向前一试,觉得高些,就向前一步,如果前面不高,向左一试,高就向左一步,不高再试后面,高就退一步,不高再试右面,高就向右走一步,四面都不高,就原地不动。总之,高了就走一步,就这样一步一步地走,就走上了山顶。
这个方法在不易跳跃调整的情况下有用,当然我们也不必一 步一步按东南西北四个方向走,例如在向北走一步向东走一步后,我们得出z0,z1, z2 三个数据(图21),由此可以看到z1由到z2的陡度是z2–z1,而由z0到z2的陡度是
,如果
我们为什么不好尝试在
的方向上走一段试试看(图22),点愈多,愈可以帮助我们找向上爬的方向。
这个方法适合于正在生产着而不适于大幅度调整的情况。
也许有人说,你所讲的只适用于“单峰”的情况。多峰(即有几个点,其附近都比它差)的情况怎样办?我们建议:
1.先不管它是单峰还是多峰,就按单峰的方法去做,找到一个“峰”后,如果符合要求,就先开工生产,然后有时间继续再找寻其它可能的更高的“峰”(即分区寻找)。
2.先做一批分布得比较均匀疏离的实验,看其是否有“多峰”的现象出现,如果有“多峰”现象,则按分区寻找。如果是单因素,最好依以下的比例划分(图23):
例如,三个分点,可以取之如(图24):
这留下来的成为(图25):
的形式,这就便于应用0.618法。
但不要有所顾虑,我们的方法不会比穷举法即排列组合法更吃亏些。充其量不过是,用“优选法”后,你再补做按穷举法原定要做的一些试验而已。
在实际工作中,尤其在探索未知的科研项目,已经见到过一些比较复杂的问题。比方出现鞍点(即马鞍形的中间点,该点对左右而言它是极大,对前后则它又是极小)的情况。这要按常规做法,会发生一辈子都做不完的情况。但用“优选法”在一两周即完成了。在化工系统碰到过不少这种例子。
补充
我们扼要地在第一部分平话中讲了一般性的方法,在第二部分列举了一些特殊性的方法。在“用”的过程中,如对以上两部分仍不能满足,可以参考这第三部分。如果读者一时不能全懂,不要急,拣能用的就用。在不断实践,不断思考的过程中,会有所前进的。至于看理论完整的专书,最好是在有些实际经验之后。
对学过数学的人来说,这是一个求函数的最大(或最小)值的问题。例如:某一质量指标T取决于三个因素的大小,也就是
问题的中心在于变化范围
内求函数
的最大值。也许有人认为这是在微积分书上早已见到并熟悉了的问题。但实际上,有一个能行不能行的问题。首先,你必须知道函数
的表达式,即使知道了
的解析式,还要解联立方程:
这可能是超越方程,求解并不容易;即使解出来了,还要判断并且研究它是不是整个区域内的最大值。
但简单的
不常见,还可能未被发现,甚至根本写不出来。例如上面平话部分所提到的,“说好吃的”人数百分比是用碱量的一个怎样的函数?
也许有人建议,用统计回归找出一个公式,然后再求极大值。但统计学总是需要大量试验,计算也不简单,而且用回归得出来的函数往往简单得失真(经常假定是一次二次的)。我们既有做大量实验的打算,为什么不直接采用优选方法呢?何况这样做,试验次数还可大大减少!
0.618是
的三位近似数,根据实际需要可以取0.6,0.62,或比0.618更精确的值。
W这一个数有一个特殊性,即
W与 1-W把区间 [0, 1]分成如下图(图26)的形式:
不管你丢掉那一段 ([0, (1-W)]或[W, 1]) ,所余下的包有一点,其位置与原来两点之一(1-W或W)在[0, 1]中所处的位置的比例是一样的。具体地讲,原来是 0<1-W<W<1 丢掉右边一段 ([W, 1])后的情况是:
这不正是 [0, 1] 缩小W倍的情况吗?
同样,丢掉左边一段 ([0, (1-W)]) 后的情况是:
1-W<W=(1-W)+W(1-W)<1,
这区间的总长度还是 W,而W与1的距离是1-W的W倍。
这方法是平面几何学上的黄金分割法,因而这个“优选法”也称为黄金分割法,在中世纪欧洲流行着依黄金分割法做的窗子最好看的“奇谈”(也就是用0.382:0.618的比例开窗子最好看)。
读者不要以为上一节已经回答了
的来源了。
问题更准确的提法应是:在区间[a,b]内有一个单峰函数f(x)我们有如下的方法找到它的顶峰(并不需要函数f(x)的真正表达式)。
先取一点x₁做实验得f(x₁) ,再取一点 x₂做实验得f(x₂),如果y1>y₂,则丢掉 [a, x₁] ,(如果y1<y₂,则丢掉[x₂, b] )。在余下的部分中取一点 x₃(这点x₃也可能取在x₁, x₂之间)做试验得y₃=f(x₃),如果y₃<y₂,则丢[x₃, b],再在余下的(x₁, x₃)中取一点x₄(图27),……不断做下去,不管你怎样盲目地做,总可以找到的 f(x)最大值。但问题是:怎样取x₁, x₂……使收效最快(这里,效果是对f(x)任意而言的),也就是做试验的次数最少。要回答这一问题,还需要一些并不高深的数学知识(例如;《高等数学引论》第一章的知识),不在这儿详谈了。但必须指出,外国文献上的所谓证明并非证明。
§4分数法
在我国数学史上关于圆周率π有过极为辉煌的一页。伟大的数学家祖冲之(公元前429-500年)就有以下两个重要贡献。其一,是用小数来表示圆周率:
其二,是用分数
来表示圆周率,它准到六位小数,而且其分母小于33102的分数中没有一个比它更接近于π。
这种分数称为最佳渐近分数(可参考:《从祖冲之的圆周率谈起》)。
我们现在处理
也有两种方法,其一是小数法0.618,其二是分数法,即上述所引用的小书上的方法,可以找到这数的渐近分数:
这些分数的构成规律是由:
1,1,2,3,5,8,13,21,34,55,89,144,……得来的,
而这个数列的规律是:
1+1=2,1+2=3,2+3=5,3+5=8,5+8=13,8+13=21,13+21=34,……
是否要这样一个一个地算出?能不能直接算出第n个数呢Fn?一般的公式是有的,即
(读者可以参考《从杨辉三角谈起》,有了这个公式,读者也可以用归纳法直接证明)。读者也极易算出:
由渐近性质,读者也可以看到分数法与黄金分割法的差异不大,在非常特殊的情况下,才能少做一次实验。
如果特别限制试验次数的情况下,我们可用分数来代替0.618,例如:假定做十次实验,我们建议用89/144,如果做九次实验用55/89等等。这种情况只有试验一次代价很大的情况才用。
对技术精益求精,不管是黄金分割法或是分数法,都只比较一下大小,而不管已做试验的数值如何。我们能不能利用一下,例如在试得三个数据后,过这三点作一抛物线,以这抛物线的顶点作下次试验的根据。确切地说在三点处各试得数据,我们用插入公式
这函数在
处取最大值。因此我们下一次的选点取x=x₀(但最好是当y₂比y₁和y3大时,这样做比较合适)。同时当x₀=x₂时,我们的方法还必须修改。
变数多了,问题复杂了,也就困难了。但问题愈复杂,就愈需要动脑筋,也愈有用武之地。第二部分中曾经提到过,我们并不要做完一条平分线后再做另一条,而是可以在每条线上做一两个试验就可以利用“陡度”了。也有人建议:第一批试验不在对折线上做,而在0.618线上用单因素法求出这直线上的最优点。这建议好,下一批实验可以少做一个。我们也提起过,在温度难调,时间好守的情况下,用平行线法,这些“变着”都显示着,在复杂的情况下,更需要灵活思考。
我们还是从两个变数谈起。
我们假定在单位方
中做实验,寻求f(x,y)的最大值。从几何角度来看,f(x,y)可以看成为在f(x,y)处的高度。如果把f(x,y)取同一值的曲线称为等高线,f(x,y)=a的曲线称为高程是a的等高线。这样两个变数问题的几何表达方式就是更有等高线的地形图。
我们再回顾一下,以往我们在一直线上求最佳点的几何意义。例如,如图29,在x=0.618的直线⑴上,照单因素方法做实验:找到最佳点在A处,数值是a 。这一点是一等髙线(高程为a)的切点。再在通过A的、平行于x轴的直线上找最佳点,这点在B处,数值是b。这样b>a,而且点是等高线的切点。再在通过B平行于y轴的直线上找最佳点等(图30)……。这一方法就是一步一步地进入一个高过一个的等高圏,最后达到制高点的方法。
注意:有人认为,找到一点横算是最优,竖算也最优,这样的点称为“死点”,因为以上的方法再也做不下去了。实际上,这是误会,这不是“死点”,而是最有意义的点(读者试从
就可以看出这点所处的地位了)。
有了几何模型,就可以启发出不少方法,第二部分所讲的陡度就是其中之一。例如还有:最陡上升法(梯度法),切块法,平行切线法等等。
多变数的方法不少,不在这儿多叙述了。但必须指出:资本主义国家流行了很多名异实同,巧立名目,使人看了眼花缭乱的方法。为专名、为专利,这是资本主义制度下所产生的自然现象。但我们必须循名核实、分析取舍才行。
§7统计试验法
把一个正方形(或长方形),每边分为一百份,总共有一万个小方块,每块取中心点,共一万个点。我们的目的是:找出一点,在哪点实验所得的指标最好。
如果我们考虑容易一些的问题,找出一点比8000点的指标都好,我们建议用以下的方法:
把这些点由一到一万标起号来。另外做一个号码袋,里面有一万个号码。摸出哪一个号码就对号做试验,这方法叫做统计试验法。也就是外国文献上所谓的蒙特卡罗(Monte-Carlo)法。
它的原理是:一个袋内装有2000个白球,8000个黑球,摸出一个白球的可能性是2000/10000=0.2=20%;摸出一个黑球的可能性是:
1-0.2=0.8
连摸两个都是黑球的可能性是:
连摸四个都是黑球的可能性是:
连摸八次全是黑球的可能性是:
连摸十次全是黑球的可能性是:
也就是连摸十次有白球的可能性是:
也就是差不多十拿九稳的事了。
结合以上的问题,我们随机做十次试验,有89%的把握找到一点比8000点的指标都好。
这方法的优点在于,不管峰峦起伏,奇形怪状都行,因素多少关系也不大。
缺点在于毕竟是统计方法,要碰“运气”,大数规律、实验次数多才行。
其中还包括一个“摸标号”的问题。除在上面所介绍的号码袋外,还有所谓“随机数发生器”。一种是利用盖格计数器计算粒子数,看奇、偶,用二进位法来决定的;另一种是利用噪声放大器。这些机器有快速发生随机数的优点,但就做实验的速度而言,并不需要如此快速地产生随机数。
更好的方法是数论方法(见华罗庚与王元《数值积分及其应用》,科学出版社,1963年)。这一方法既不需要任何装置,而且误差不象上述所讲的两种机器那样是概率性的,而是肯定性的。这一方法,读者务必要分析接受,不要轻易应用。
把[0,1]均分为n+1分,做n个试验,可以知道最优点在2/(n+1)长的区间内。如果约定的精度是δ,则我们需要做的试验次数便是使得2/(n+1)<δ,也就是n 的数量级是1/δ.
对黄金分割法来说,做n 次试验可以知道最优点在一个长度为
的区间内,如果要求它小于δ,不难算出
也就是说n 的数量级变成为
对k个变数来说,均分法的数量级是
上面讲过的由黄金分割法处理的多变数的方法需要试验次数的数量级是
我们有达到数量级为
的方法。
实质上我们还有数量级为
的方法。而k在指数上不好,我们又跃进了一步,得出数量级为
但千万注意,并不是理论上最精密的方法,也在实际上最适用。最重要的是根据具体对象,釆用简快适用的方法。
注意:预先估计精度δ,并不是完全可靠的。有时平坦些,很大的间隔都不易分辨高低,有时陡些,很小间隔就有着差异,也就是说,我们所能处理的是x的分隔,而实际上要辨别的是我们还不知道y=f(x)的大小。因而,这儿的估计只能作为参考而已。以“分数法”而言,其优点是在试验次数估计得一个不差时,而恰巧是数列Fn中的一个数时,可以比“黄金分割法”少做一次,但如果合乎要求的数据提前来了,也就不少做了。如果不够而还要做下去,就反而要多做一两次了。