0

我有代码

INJ.1<-"I01 I02 I03 I04 I05         
2.78E+02    1.82E+03    3.62E+02    2.90E+02    7.73E+02
7.92E+02    1.21E+03    9.33E+02    6.32E+02    5.10E+02
2.30E+03    7.54E+02    9.60E+02    6.29E+02    1.05E+03
3.61E+03    3.05E+02    7.77E+02    5.87E+02    1.02E+03
3.89E+02    1.35E+03    7.66E+02    4.00E+02    7.43E+02
1.31E+03    1.63E+03    8.95E+02    3.85E+02    1.10E+02
1.39E+03    1.16E+03    9.07E+02    4.99E+02    2.48E+02
1.94E+03    1.09E+03    8.34E+02    5.22E+02    2.48E+02
2.04E+03    1.11E+03    7.85E+02    2.67E+02    4.27E+02
1.06E+03    1.36E+03    8.80E+02    6.13E+02    7.16E+02
1.40E+03    1.29E+03    8.65E+02    6.17E+02    9.79E+02
1.20E+03    1.68E+03    6.78E+02    6.10E+02    9.30E+02
1.45E+03    1.49E+03    7.66E+02    3.81E+02    1.07E+03
1.16E+03    1.58E+03    1.09E+03    5.33E+02    8.38E+02
1.33E+03    1.38E+03    9.10E+02    6.29E+02    8.80E+02

"
INJ<-as.matrix(read.table(text=INJ.1, header=T))
PRD.1<-"P01                
981.32019             
1062.5702             
1439.7673             
1694.0723             
1085.1016             
1243.6089             
1191.5941             
1302.2167             
1333.5266             
1242.0212             
1342.6954             
1371.2767             
1394.1171             
1400.7926             
1373.1791             
"
PRD<-as.matrix(read.table(text=PRD.1, header=T))
tao=as.matrix(c(1,1,1,1,1))
lambda=as.matrix(c(0.0251879,0.1599486,0.1812318,0.2626731,0.3355733,0.3221295,-1.3343501))
i.dash=matrix(ncol=ncol(INJ), nrow=(nrow(INJ)))
fn1 <- function (tao){
  for (i in 1:ncol(INJ))
    for (j in 1:nrow (INJ))
      temp=0
  for (k in 1:j)
    i.dash[j,i]=(1/tao[i])*exp((k-j)/tao[i])*INJ[k,i]+i.dash[j,i]



  target = abs(700-sum(colSums(i.dash)))
}
ini=c(1, 1, 1, 1, 1)

ans1<-optim(par=ini,fn1,hessian=TRUE)

我需要优化函数中tao显示的值。除了我注意到函数内部的矩阵计算fn1没有完成之外,代码一直给出相同的初始值。除了主要问题是如何解决这种情况以实现 o 的最小值之外,我还有不止一个问题target

  1. 我们可以在函数内部发出非计算命令,例如:分配和创建矩阵、向量操作和操作..等吗?
  2. 退出函数后这些更改是否可用?
  3. 就我而言,我values首先在某些计算中使用参数来准备目标函数,然后对它们进行优化,这是 R 中可接受的方法吗?
  4. 我希望有人能给我一个开始优化此功能的起点。
4

0 回答 0