excel 批量“规划求解”(其它方法也行)解四元一次方程组
Subtest()DimMaxRowAsInteger,iAsIntegerDimStrFormula1AsString,StrFormula2AsStringMaxRow=Range("A65536").End(xlUp).RowFori=2ToMaxRowRange("I2")="=SUMPRODUCT(E2:G2,OFFSET(J1:L1,"&i-1&",))"Range("I3")="=SUMPRODUCT(E3:G3,OFFSET(J1:L1,"&i-1&",))"Range("I4")="=SUM(OFFSET(J1:L1,"&i-1&",))"SolverResetSolverOkSetCell:="$I$4",MaxMinVal:=3,ValueOf:="1",byChange:=Replace("$J$2:$L$2","2",i)SolverAddCellRef:="$I$2",Relation:=2,formulaText:="$A$"&iSolverAddCellRef:="$I$3",Relation:=2,formulaText:="$B$"&iSolverSolveNextEndSub
先在模块中引用 规划求解 工具 引用 点选 SOLVER
EXCEL关于规划求解方法显示所有解的问题,举最简单的列子但足以说明
规划求解只是求出一个解就结束的!你可以改变一下B1的值=4(初值),再去求解试一试!
视频的例子给一个你!http://www.tudou.com/programs/view/B5mmR5Ux7Ew求EXCELl中的已知数总和,数值,求变量范围数值,使用规划求解方法?
在得到精确解的前提下,用更短的小数位数来完成解答。我们把上下限都放大10的n次方倍去求整数解除。目标是让n的值尽量地小。得到的最终结果是:332.5*14.7378+52.98*12.1525+333*2.0365+52.98*4.9=6478.23
后面我用Mathematica来求解,在这样的放大倍数下有361742种不同的解,上面的方法只求得其中的一种。Mathematica求解数的源代码如下:
n = 10000;
Solve[{33225/100*x1/n + 5298/100*x2/n + 333*x3/n + 5298/100*x4/n ==
647823/100, 144 n/10 <= x1 <= 15 n, 12 n <= x2 <= 122 n/10,
2 n <= x3 <= 21 n/10, 47 n/10 <= x4 <= 49 n/10}, {x1, x2, x3, x4},
Integers] // Length
求助:利用Excel自动规划求解,要用哪种函数或方法呢?
可以办到
1.在A1:J1分别输入100,115,130,150,170,190,215,240,270,300这几个数字2.在K1,L1输入你的两个变量3.在M1输入=SUMPRODUCT(A1:J1,A2:J2)+K1+L14.在M2输入=SUM(A2:J2)5.进入规划求解.目标单元格引用M1选择"值为",输入965(你的固定量)可变单元格引用A2:J2约束条件有4个.1.A2:J2>=12.A2:J2<=03.A2:J2=INT4.M2=3最后一步按"求解"然后在A2:J2会出现三个1.1所对应的上一行的单元格就是你要求的数字.用excel2007线性规划求解,公式方法都没问题,就是点求解键后运算时间好久不出结果...
如果没有问题,很有可能是计算量很大,需要迭代很久
如果有问题,那就另当别说了,你最好贴出来你的题目