Dear, I am using the solnp command (package Rsolnp) for a problem with equality and inequality constraints. I am not getting convergence for my problem but apart that I get 1 warning per iteration saying: ?In cbind(temp, funv) : number of rows of result is not a multiple of vector length (arg 1)?. I checked for equality and inequality functions and they seem fine to me. Where this message comes from? Interestingly also is that using different seed values the direction of optimization of my (negative-value) function is always for maximization. How can this occur? Below you may find the code for ease of consultation. Thanks in advance, My best regards, Diogo Andr? Alagador Univ. ?vora, Portugal ## the code: ################################################################### ################################################################### ## DATA N=7 BR=12 br=c(1,1,2,3,2,1,1,2,1,1,1,1) A=c(1,0,0,0,1,0,0,0,0) B=c(0,0,0,0,1,0,0,0,0) C=c(1,1,0,1,0,0,1,0,0) D=c(0,1,0,0,1,0,0,0,0) E=c(0,0,1,0,0,0,0,0,0) F=c(0,0,1,0,1,0,1,0,0) G=c(0,1,1,0,0,0,0,0,0) H=c(2,1,0,1,2,0,1,0,0) I=c(0,2,3,0,2,0,1,0,0) J=c(0,1,3,0,1,0,1,0,0) K=c(0,1,2,0,1,0,1,0,0) L=c(1,0,0,0,2,0,0,0,0) mat=rbind(A,B,C,D,E,F,G,H,I,J,K,L) CELL=dim(mat)[2] ################################################################### ################################################################### ## MAX FUNCTION budget=2 library(Rsolnp) # the objective function to maximize #NOTE: by default the solver minimizes the objective. therefore the original minus sign is not used obj=function(x){ all1=sum(mat%*%x) Hp=0 for (j in 1:BR){ p_b=mat[j,]%*%x/all1 Hp=Hp+p_b*log(p_b)*br[j] } return(Hp) } # the equality constraint function: equal1=function(x){ all2=sum(mat%*%x) sum_pterm=sum(mat[1:N,]%*%x/all2) sum_x=sum(x) return(c(sum_pterm,sum_x)) } # the right hand side for the constraint eqB=c(1,budget) # the inequality function inequal1=function(x){ all3=sum(mat%*%x) p_b=mat[1:BR,]%*%x/all3 return(as.vector(p_b)) } #the lower limit for inequalities ineqLB=rep(0.00001,BR) #the upper limit for the inequalities ineqUB=rep(1.00001,BR) # the lower and upper bounds for the variables LB=rep(0,CELL) UB=rep(1,CELL) #the seed for variables cells0=rep(.3,9) #solving the problem sol=solnp(cells0,fun=obj,eqfun=equal1,eqB=eqB,ineqfun =inequal1,ineqLB=ineqLB,ineqUB=ineqUB,LB=LB,UB=UB,control=list(outer.iter=400)) cells=sol$pars cells equal1(cells)