将冲击建模为R中的最大化

时间:2014-05-26 22:06:18

标签: r dynamic-programming mathematical-optimization maximize markov-chains

我目前正在尝试编写一个代码来解决100x100状态空间中的消耗路径,这可能会受到生产中的冲击。我目前有

 ###################################Part 3.1###################################################

nonpersist<-matrix(c(.5,.5,.5,.5),nrow=2,ncol=2) 
persist<-matrix(c(.9,.1,.3,.7),nrow=2,ncol=2) 



space<-seq(length=100, from=0, to=7.2) ##Create a sequence of 100 values ending at the                      point where value goes negative
alpha<-0.3 #take alpha as given
beta<-0.98 #take beta as given
vprime <- c(1:100) ##create a vector length 100 to be replaced later
t_vj <- c(1:100)  ##create a vector length 100 to be replaced later
A <- c(rep(4,100))
random<-c(runif(100))
iterater<-function(space){  ##create a function to perform the iteration
  for(i in 1:100){  
    for(j in 1:100){  
      if((A[i]*(space[i]^alpha)-space[j])<0){
          t_vj[j]=-99
      }
      else if(random[i]<.5){
              A[i]<-4
              t_vj[j+1] <- (log(A[i]*(space[i]^alpha)-space[j])+ beta*t_vj[j])
      }
      else{
              A[i]<-20
              t_vj[j+1] <- (log(A[i]*(space[i]^alpha)-space[j])+ beta*t_vj[j])
      }
    }
  }
  vprime[i]<-max(t_vj)  
  plot(space,vprime, xlab="State Space", ylab="Value")
}
iterater(space)  #call the function

不幸的是,目前正在产生图http://i.stack.imgur.com/UXoUt.png

这不是我们在非线性函数中应该期待的。

有什么想法吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你需要

vprime[i] <- max(t_vj)

出现在第一个for循环中。具体来说,iterater函数的最后3行应如下所示:

  vprime[i]<-max(t_vj)
}
plot(space,vprime, xlab="State Space", ylab="Value")

enter image description here