直到最近,我的R使用仅限于使用ggplot绘图等。目前,我正在尝试使用lpSolve解决R的线性问题,这被证明是相当挑战。我试图获得与MS Excel中的Solver相似的结果。
我得到了什么:
A:带有观察结果的20x6矩阵。
> head(Filtered)
C1 C2 C3 C4 C5 C6
1 15.6 17.6 12.0 12.0 27.8 15.0
2 20.0 18.2 10.7 9.3 17.8 24.0
3 20.5 19.5 11.3 10.8 17.2 20.7
4 21.3 20.9 11.6 10.5 19.7 15.9
5 26.7 28.7 14.9 10.2 8.9 10.5
6 25.5 28.1 14.7 9.9 9.9 11.9
B:带有观察结果的20x1载体。
> measSSA
[1] 19.4 29.3 29.5 33.9 51.0 45.0 30.8 39.9 31.3 41.3 33.1 32.6 36.9 35.6 41.3 27.7 35.0 27.8 34.6 13.4
c:具有约束决策变量的6x1向量
> c
[1] 0.95 2.79 3.91 5.74 5.29 5.64
d:具有约束决策变量的6x1向量
> d
[1] 0.0022 4.0000 10.7000 21.1000 44.5000 70.6000
然后,我根据A和向量c和d中的相应行计算B中每个元素的模拟值。
Constant = 0.00377
Result = t(t((Constant*A)%*%diag(c))/d)
Simulated = rowSums(Result)
我当时想要做的是最小化B和模拟矢量之间的均方误差,这将给我最佳拟合。
MSE = sum((B-Simulated)^2)/20
我想用lpSolve做的是改变向量c和d的值以最小化MSE。然而,虽然我能够将向量c和d作为约束变量放入lpSolve,但我无法将MSE设置为最小化目标。我该怎么做呢?
谢谢!