我的工作簿有点复杂,但基本问题可以用一个简短的例子来说明。
假设我在Excel中有5个单元格:A,B,C,D和E.
A = 0
B = 5 * A
C = 0
D = 10 * C
E = B + D
在Excel求解器函数中,我选择单元格E作为要最大化的目标,将单元格A和C作为可变单元格。此外,我添加了单元格E不得超过10的约束,以及单元格A和C必须为整数的第二个约束。
理想的解决方案是单元格A中的值应为0,单元格C中的值应为10.但是,在此问题的更复杂版本中,Excel无法找到可选解决方案。
当前公式的样子我希望Excel可以找到正确的解决方案,如果excel只使用自然数来找到最佳解决方案。例如,Excel目前会查看A = 0.01和C = 9.99的结果。相反,Excel应严格比较变量选择的结果,例如A = 1和C = 9.
如何使Excel求解器功能仅以自然数运算?
答案 0 :(得分:1)
我建议您保留当前的单元格,并在它们旁边创建一个镜像集。每个镜像单元格将等于原始单元格的圆形版本。即:RoundedA将具有以下公式:
=ROUND(A,0)
然后,在进行数据分析时,求解这些单元格的舍入版本,并将变化的变量作为“原始”单元格之一。
修改强> 如下所述,您可能需要“欺骗”数据验证以创建所需的值。
假设A1将成为您的“测试”数据验证单元格。 B1是永久空白单元。设置另一个单元格,比如C1,等于:
=randbetween(1,10)
这将创建1到10之间的随机整数。将“变量”单元格设置为等于C10。因此,您的可变单元格将始终是介于1和1之间的随机数。 10(或者你可以设置“1”等于你的其他变量的最小数量,“10”等于你的其他变量的最大数量。这将创建回答你的问题所需的范围。)
然后,当您进行数据验证时,请尝试获取A1 = TRUE。通过弄清楚细胞的“测试”条件来做到这一点。像“当X = 0时,我知道我的所有变量都是正确的”。即将A1设置为:
=if(X=0,1,0)
然后通过更改B1(您的空白,不相关的单元格)进行数据验证,等待A1 = 1.这有意义吗?它将C1转换为LOWVALUE和HIGHVALUE之间的随机循环变量,始终使用整数。当A1 = 1时(当某个值X = 0时发生),数据验证将停止。 B1将无用地旋转,直到数据验证找到某些东西(或者如果找不到任何东西,它会在几百次尝试后停止)。
答案 1 :(得分:0)
要使求解器尝试更大的增量,请将目标单元格除以大数,这样,求解器尝试的每个增量都将更大。 (例如,它将目标单元格改变+ -0.00001-在这种情况下,将目标单元格除以100000或更多)。