eval_f0 <- function(x){
x[1] <- t(t(as.array(unlist(x[1]))))
return(t(x[1])%*%x[1])
}
eval_q0_1 <- function(x){
return(c(-1*x[2],
(trd %*% t(t(x[3]))-t(t(x[4]))%*%Price+x[1])-x[5],
-1*x[5],
x[2]-1))
}
eval_q0_2 <- function(x){
return(c(Market.Share-x[2],
x[2]%*%(x[5]-(trd%*%x[3]-x[4]%*%Price+x[1])),
x[5]%*%(1-x[2])))
}
res1 <- nloptr( x0=list(rep(1, nrow(trd)), rep(1, nrow(trd)), rep(1, ncol(trd)), 1, rep(1, nrow(trd))),
eval_f=eval_f0,
lb = c(matrix(0, nrow = nrow(trd), ncol = 1),
matrix(0, nrow = nrow(trd), ncol = 1),
matrix(0, nrow = ncol(trd), ncol = 1),
matrix(0, nrow = nrow(trd), ncol = 1),
matrix(0, nrow = nrow(trd), ncol = 1)),
ub = c(matrix(Inf, nrow = nrow(trd), ncol = 1),
matrix(Inf, nrow = nrow(trd), ncol = 1),
matrix(Inf, nrow = ncol(trd), ncol = 1),
matrix(Inf, nrow = nrow(trd), ncol = 1),
matrix(Inf, nrow = nrow(trd), ncol = 1)),
eval_g_ineq = eval_q0_1,
eval_g_eq = eval_q0_2,
opts = list("algorithm"="NLOPT_LD_SLSQP")
)
ZXZhbF9mMCA8LSBmdW5jdGlvbih4KXsKICB4WzFdIDwtIHQodChhcy5hcnJheSh1bmxpc3QoeFsxXSkpKSkKICByZXR1cm4odCh4WzFdKSUqJXhbMV0pCn0KCmV2YWxfcTBfMSA8LSBmdW5jdGlvbih4KXsKICByZXR1cm4oYygtMSp4WzJdLAogICAgICAgICAgICh0cmQgJSolIHQodCh4WzNdKSktdCh0KHhbNF0pKSUqJVByaWNlK3hbMV0pLXhbNV0sCiAgICAgICAgICAgLTEqeFs1XSwKICAgICAgICAgICB4WzJdLTEpKQp9CgpldmFsX3EwXzIgPC0gZnVuY3Rpb24oeCl7CiAgcmV0dXJuKGMoTWFya2V0LlNoYXJlLXhbMl0sCiAgICAgICAgICAgICAgICAgeFsyXSUqJSh4WzVdLSh0cmQlKiV4WzNdLXhbNF0lKiVQcmljZSt4WzFdKSksCiAgICAgICAgICAgICAgICAgeFs1XSUqJSgxLXhbMl0pKSkKfQoKcmVzMSA8LSBubG9wdHIoIHgwPWxpc3QocmVwKDEsIG5yb3codHJkKSksIHJlcCgxLCBucm93KHRyZCkpLCByZXAoMSwgbmNvbCh0cmQpKSwgMSwgcmVwKDEsIG5yb3codHJkKSkpLAogICAgICAgICAgICAgICAgZXZhbF9mPWV2YWxfZjAsCiAgICAgICAgICAgICAgICBsYiA9IGMobWF0cml4KDAsIG5yb3cgPSBucm93KHRyZCksIG5jb2wgPSAxKSwKICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgoMCwgbnJvdyA9IG5yb3codHJkKSwgbmNvbCA9IDEpLAogICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeCgwLCBucm93ID0gbmNvbCh0cmQpLCBuY29sID0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4KDAsIG5yb3cgPSBucm93KHRyZCksIG5jb2wgPSAxKSwKICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgoMCwgbnJvdyA9IG5yb3codHJkKSwgbmNvbCA9IDEpKSwKICAgICAgICAgICAgICAgIHViID0gYyhtYXRyaXgoSW5mLCBucm93ID0gbnJvdyh0cmQpLCBuY29sID0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4KEluZiwgbnJvdyA9IG5yb3codHJkKSwgbmNvbCA9IDEpLAogICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeChJbmYsIG5yb3cgPSBuY29sKHRyZCksIG5jb2wgPSAxKSwKICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgoSW5mLCBucm93ID0gbnJvdyh0cmQpLCBuY29sID0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4KEluZiwgbnJvdyA9IG5yb3codHJkKSwgbmNvbCA9IDEpKSwKICAgICAgICAgICAgICAgIGV2YWxfZ19pbmVxID0gZXZhbF9xMF8xLAogICAgICAgICAgICAgICAgZXZhbF9nX2VxID0gZXZhbF9xMF8yLAogICAgICAgICAgICAgICAgb3B0cyA9IGxpc3QoImFsZ29yaXRobSI9Ik5MT1BUX0xEX1NMU1FQIikKICAgICAgICAgICAgICAgICk=