1、用“小范围搜索法”求“线性规划问题”的最优整数解笔者对教科书中的全部 7个线性规划的实际应用问题进行了研究和分类。其中 1个问题(教科书第 61页例 3)的最优解不是整数解,最优解有且只有一个,最优解显然在边界折线的顶点处,此为第一类问题;有 3个问题(教科书第 64页练习第 2题、第 65页习题 7.4第 3题,第 66页研究课题与实习作业)的最优解为整数解,最优整数解有且只有一个,最优解整点显然在边界折线的顶点处,此为第二类问题;另有 3个问题(教科书第 63页例 4、第65页习题 7.4第 4题、第 87页复习参考题七 A组第 16题)的最优解为整数解,最优整数解可能不止一个,最优解整点
2、不在边界折线的顶点处,或虽在边界折线的顶点处但并不显然,此为第三类问题。第一、第二类问题的最优解可以通过解一个二元一次方程组直接得到,学生比较容易掌握。第三类问题的最优解不能通过解一个二元一次方程组直接得到,必须通过观察图形或计算检验去寻找,学生不容易掌握,学习困难比较大。为了解决这类寻找最优整数解的困难,笔者采用“小范围搜索法”进行教学。该方法的优点在于,把在大范围同寻找最优整数解转化为在小范围内寻找最优整数解,而且在通过观察图形作出准确判断有困难的情况下,通过计算检验作出准确判断的工作量比较小。其步骤为(1)在边界折线顶点附近的小范围内搜索一个可行域内的年整点;(2)过该点作一条斜率为 (
3、其中 A,B 分别为目标函数中变量 x,y 的系数)的直线,与可行域边界折线相交得到一个小范围的区域;(3)在这个小范围区域内继续搜索全部最优整数解。用“小范围搜索法”成功解题的关键是分析,要把分析贯彻于解题的全过程,观察图形要分析,计算检验也要分析,通过分析充分发掘线性约束条件和线性目标函数的特殊性,使搜索范围缩到最小,计算的工作量减到最小。下面以教科书中的题目为例,说明“小范围搜索法”的运用。例 1 教科书第 65页习题 7.4题,题目略。本题的线性约束条件线性目标函数 z=200x+150y,其中 x,y 分别为大房间与小房间的间数。作出可行域如图 1。(1)搜索一个可行域内邻近边界折线
4、顶点的整点。解方程组得到点 A( , ),由于点 A的坐标不是整数,故不是最优解。由于要使目标函数取最大值,因此要寻找可行域右上侧靠近边界或边界上的整点。与点 A邻近的整点共有 4个(2,8),(2,9),(3,8)与(3,9),显然点(2,8)是可行域内的整点,点(3,9)不是可行域内的整点。记点(a,b)处的目标函数的值为 z(2,8),所以还应检验点(2,9)与(3,8)是否在可行域内。注意到目标函数 z=200x+150y=150(x+y)+50x,而 2+9=3+8,所以必有 z(3,8)z(2,9),所以应先检验点(3,8)是否在可行域内。观察与计算都表明该点在可行域内。记点(3,
5、8)为 B,B 即为搜索到的可行域内邻近边界折线顶点的整点。(2)作出可行域内的小范围搜索区域。算出 z(3,8)=1800,过 B作直线 200x+150y=1800 4x+3y=36.解方程组得到点 C(0,12),C 为整点。解方程组得到点 D(4, ),ACD 即是新的搜索区域,在 SACD(包括边)内可以搜索到全部最优解整点,该搜索区域比可行域大大缩小,如图 2。(3)在ACD(包括边)内整点只有 B(3,8)与 C(0,12),由于 B,C 在一直线上,所以 z(0,12)= z(3,8)=1800,B,C 均为最优解整点,1800 为目标函数的最大值。若要通过计算检验在ACD(包
6、括边)内搜索,由于 x0,4),y( ,12,所以选择 x的整数值检验可使计算量小些,令 x=0,1,2,3,即可得到ACD(包括边)内的全部整点只有 B(3,8)与 C(0,12)。显然,“小范围搜索法”的计算量要比把可行域内的整点逐一代入计算检验大大减少。至此用“小范围搜索法”解题已全部完成,但在此解题过程中还可以有新的发现。注意到点 C(0,12)即为直线 6x+5y=50与 y轴的交点,直线 5x+3y=40与 x轴的交点为(8,0),这两个点都在可行域内,且都是可行域边界折线的顶点,又 z(8,0)=1600z(0,12),所以在以实施“小范围搜索法”的第一步操作时,即可选定点 C,
7、再过点 C作直线 200x+150y=1800 4x+3y=36,同样可以得到ACD。这就是第二种搜索方法。显然第二种搜索方法比前面的第一种搜索方法更简便。只是第二种搜索方法在观察图形时不易发现,因为观察图 1总让人觉得应该在点 A( , )附近找一个整点比较好。这正是观察的局限性。观察是认识事物的开端和基础,其重要性是不容忽视的。但观察不容易深入事物的本质,总不如思维的深刻严密,也不如计算的准确可靠。例 2 教科书第 85页复习参考题七 A组第 16题,题目略。本题的线性约束条件线性目标函数 z=160x+252y,其中 x,y 分别为 A型车和 B型车的辆数。作出可行域如图 3。(1)搜索
8、一个可行域内邻近边界折线顶点的整点。解方程组得到点 A(7, ).解方程组得到点 A( ,4).A,B 两点都是可行域边界折线的顶点,但它们都不是整点,所以不是最优解。由于要使目标函数取最小值,因此要寻找可行域左下侧靠近边界上的整点。显然点(7,1)与(3,4)都是可行域内的整点,又 z(7,1)=1607+2521=1372,z(3,4)=1603+2524=1488, z(7,1)z(3,4),故点(7,1)优于点(3,4)。记点(7,1)为 C,点C 即为搜索到的可行域内邻近边界折线顶点的 整点。(2)作出可行域内的小范围搜索区域。过 C点直线 160x+252y=1372 40x+63
9、y=343.解方程组得到 设点(3.4,3.3)为 D,得到ACD,在ACD(包括边)内可以搜索到全部最优解整点,该搜索范围比可行域大大缩小,如图 4。(3)在ACD(包括边)内,整点只有(7,1)与(5,2),由于点(5,2)在线段 CD的下方,故必有z(5,2)z(7,1),记点(5,2)为 E,E 即为最优解整点。z(5,2)=1605+2522=1304 即为目标函数的最小值。若要通过计算检验在ACD(包括边)内搜索,由于 x(3.4,7,y1,3.3),所以选择 y的整数值检验可以使计算量小些,令 y=1,2,3,即可得到ACD(包括边)内的全部整点只有 C(7,1)与 E(5,2)。显然,“小范围搜索法”的计算量比将可行域内的整点逐一代入计算检验大大减少。从上面的两个例子中可以看到,用“小范围搜索法”解线性规划应用问题,目标明确,思路清晰,步骤简明,操作性强,计算量小,准确可靠,既不会增解也不会失解,且不怕作图和观察的误差。笔者在用此法进行“简单线性规则”教学时,收到了较好的效果,学生感到容易理解接受,操作运用也方便。事实上,这种逐步缩小目标范围的搜索法是一种具有普遍意义的方法,对培养学生的探索精神,进行思维训练,提高分析问题、解决问题的能力很有好处。