第一步:是先去掉 20230.61, 因为没有任何数据可以组合出0.01的尾数,所以可以肯定20230.61不可能出现在结果当中 第二步:用规划求解求G列的数据组合,要求取最接近C列总和的最大值,发现得到的结果只比C列最大值少1 第三步:看看G列还没有选中的数据,能不能组合出刚好比 已经选中的数据大1 的结果 这一步可以用规划求解,逐一把已经选中的数据+1(设为数组Y)作为求解目标,不过这样比较慢。 由于剩下数据不多,所以我是用多项式展开做的,把剩下的数据去掉明显不合要求的,然后展开多项式 (1+x^???)*(1+x^???)...... 这样的展开式就包含了所有数据组合结果了,我在展开式的结果中逐一查找有没有等于数组Y的数值即可,刚好找到一个,所以就做出来了 其实如果数据复杂的话,第一步和第三步都不一定走得通,所以说有点运气了 这个附件更清晰地说明了如何多次规划求解,求得最大值是一样的,不过数据组合不一样,实际上有可能求得多个合要求的数据组合
0IiWiWXs.rar
(11.45 KB, 下载次数: 21)
我的做法也不是很方便,主要是Excel的规划求解不是很聪明,有时间试一下Lingo做看看会不会好一点 这里是以前一个做财务的朋友问过类似问题 http://club.excelhome.net/viewthread.php?tid=316017&px=0 这里是学习规划求解最基础的一个贴,其他难一点的贴可以搜索论坛 http://club.excelhome.net/dispbbs.asp?boardid=1&replyid=506555&id=93606&page=1&skin=0&Star=1
[此贴子已经被作者于2008-5-12 2:05:12编辑过] |