[R] Quadratic programming

Abby Spurdle @purd|e@@ @end|ng |rom gm@||@com
Mon Sep 21 12:05:24 CEST 2020


Are you using the quadprog package?
If I can take a random shot in the dark, should bvec be -bvec?


On Mon, Sep 21, 2020 at 9:28 PM Maija Sirkjärvi
<maija.sirkjarvi using gmail.com> wrote:
>
> Hi!
>
> I was wondering if someone could help me out. I'm minimizing a following
> function:
>
> \begin{equation}
> $$\sum_{j=1}^{J}(m_{j} -\hat{m_{j}})^2,$$
> \text{subject to}
> $$m_{j-1}\leq m_{j}-\delta_{1}$$
> $$\frac{1}{Q_{j-1}-Q_{j-2}} (m_{j-2}-m_{j-1}) \leq \frac{1}{Q_{j}-Q_{j-1}}
> (m_{j-1}-m_{j})-\delta_{2} $$
> \end{equation}
>
> I have tried quadratic programming, but something is off. Does anyone have
> an idea how to approach this?
>
> Thanks in advance!
>
> Q <- rep(0,J)
> for(j in 1:(length(Price))){
>   Q[j] <- exp((-0.1) * (Beta *Price[j]^(Eta + 1) - 1) / (1 + Eta))
> }
>
> Dmat <- matrix(0,nrow= J, ncol=J)
> diag(Dmat) <- 1
> dvec <- -hs
> Aeq <- 0
> beq <- 0
> Amat <- matrix(0,J,2*J-3)
> bvec <- matrix(0,2*J-3,1)
>
> for(j in 2:nrow(Amat)){
>   Amat[j-1,j-1] = -1
>   Amat[j,j-1] = 1
> }
> for(j in 3:nrow(Amat)){
>   Amat[j,J+j-3] = -1/(Q[j]-Q[j-1])
>   Amat[j-1,J+j-3] = 1/(Q[j]-Q[j-1])
>   Amat[j-2,J+j-3] = -1/(Q[j-1]-Q[j-2])
> }
> for(j in 2:ncol(bvec)) {
>   bvec[j-1] = Delta1
> }
> for(j in 3:ncol(bvec)) {
>   bvec[J-1+j-2] = Delta2
> }
> solution <- solve.QP(Dmat,dvec,Amat,bvec=bvec)
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list