问题:老汉饲养了17头牛,临终需要将遗产分配给3个儿子。要求老大分1/2,老二分1/3,老三分1/9,如何分配,能尽可能遵守老汉的遗志?
这个问题,大部分家庭都曾经教育过自己的孩子们。比较巧妙的方法,就是17不能被2、3、9整除,但是,先加上一头牛,凑够18头,问题迎刃而解。等到按比例分完了,发现恰好余出来一头牛,很完美的方法。
衍生问题(1):如果是总数是23呢?是29呢?好像大家又不会了。好像这个问题是前无古人、后无来者的个案,纯粹的数学游戏。有没有普适性的解决方法呢?
衍生问题(2):这种分法,真的是绝对公平的吗?如果不公平,谁吃亏呢?
今天我们尝试用Excel的规划求解,解决这两个衍生的难题。
上面绿色的部分,是“可变单元格”,是需要Excel求解之后才会产生数值的,但在编写第C、D、E、F列的公式时,请你认为这3个绿色的区域不是空值,而是实际存在的数值。
这个问题有2个约束条件:(1)牛不能分割,必须是整数(int),(2)牛必须分完(绿格数值之和为17)。
我们先计算严格按照老汉的遗志,牛可以分解时的理论比例(即上述的C列),计算公式见D列。
于是,问题转化为:兄弟3人实际分的牛,与按照严格比例分的牛,相应差值的平方的和最小。E列的公式见F列。
在Excel规划求解中,目标单元格是唯一的,多目标规划问题,好像当前Excel还不能实现,不过可以设法转化为单目标的问题。
E6格是目标单元格的位置,当3个绿格什么也不输入的时候,E6=107.93。
EXcel规划求解的思路,就是当E6取最小值的时候,我们应当在3个绿色格中,各填入什么数字?
我们打开数据→规划求解,就会弹出下面的对话框:
(1)在“设置目标”后面的斜上红箭头上点一下,选中$E$6这个单元格。
(2)在“到:”后面点选“最小值”
(3)在“通过更改可变单元格”后面的斜上红箭头上点一下,选中底纹为绿色的3个单元格;
(4)输入约束条件。这个步骤是最关键的,约束条件不完整,结果就不正确。
约束条件的计算符号,可以是≤、=、≥、整数(int)、二进制(bin)、dif(差分)。
其中二进制,就好像一个婚介所为一大群人介绍对象一样。A可以选择B结婚,A也可以不选择B结婚,但是如果A如果选择了B,就不可能再选择其他人去结婚。所以遇到A×B交叉格的位置,只允许电脑给出0(不结婚)或者1(结婚)的答复。仔细想想,其实现实中的许多问题,难度已经超越了上述的分牛问题,现在的电脑只要有个office装上了,实际上就能解决类似于婚介所的网状恋问题,比琼瑶小说中的“三角恋”复杂得多,也同样能够算出来。
按下面输入好,点击确定就可以了。
计算结果,确实与我们传说中的最优解是一致的:9—6—2头,不过,每个人分的牛数,均高于遗嘱分配比。究其原因,是因为老汉设定的3个比例之和,本来就不等于1。
那么,我们钻牛角尖,究其细微差异,仍然是老大占便宜最多(0.5),老二次之(0.33),老三最少(0.11)。
当然,我们用的是差值平方和的函数,也可能使用绝对值之和等其他函数,这样计算出来的吃亏与占便宜的量又不一样。
转载本文请联系原作者获取授权,同时请注明本文来自李为争科学网博客。
链接地址:https://wap.sciencenet.cn/blog-3612267-1482973.html?mobile=1
收藏