Sorry, ignore the last part. What I should have said, is the inequality has the opposite sign.>= bvec (not <= bvec)On Mon, Sep 21, 2020 at 10:05 PM Abby Spurdle <spurdle.a at gmail.com> wrote:> > 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 at 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 at 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.
One more thing, is bvec supposed to be a matrix? Note you may need to provide a reproducible example, for better help... On Mon, Sep 21, 2020 at 10:09 PM Abby Spurdle <spurdle.a at gmail.com> wrote:> > Sorry, ignore the last part. > What I should have said, is the inequality has the opposite sign. > >= bvec (not <= bvec) > > > On Mon, Sep 21, 2020 at 10:05 PM Abby Spurdle <spurdle.a at gmail.com> wrote: > > > > 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 at 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 at 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.
Thank you for your response! Bvec is supposed to be a matxit. I'm following the solve.QP ( https://www.rdocumentation.org/packages/quadprog/versions/1.5-8/topics/solve.QP ). I'm not sure what would be the best way to solve a quadratic programming problem in R. ma 21. syysk. 2020 klo 13.20 Abby Spurdle (spurdle.a at gmail.com) kirjoitti:> One more thing, is bvec supposed to be a matrix? > > Note you may need to provide a reproducible example, for better help... > > On Mon, Sep 21, 2020 at 10:09 PM Abby Spurdle <spurdle.a at gmail.com> wrote: > > > > Sorry, ignore the last part. > > What I should have said, is the inequality has the opposite sign. > > >= bvec (not <= bvec) > > > > > > On Mon, Sep 21, 2020 at 10:05 PM Abby Spurdle <spurdle.a at gmail.com> > wrote: > > > > > > 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 at 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 at 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. >[[alternative HTML version deleted]]