diff options
Diffstat (limited to 'sci_gateway/cpp/sci_QuadNLP.cpp')
-rw-r--r-- | sci_gateway/cpp/sci_QuadNLP.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/sci_gateway/cpp/sci_QuadNLP.cpp b/sci_gateway/cpp/sci_QuadNLP.cpp index 2c484b7..ddca7cf 100644 --- a/sci_gateway/cpp/sci_QuadNLP.cpp +++ b/sci_gateway/cpp/sci_QuadNLP.cpp @@ -56,12 +56,11 @@ bool QuadNLP::get_bounds_info(Index n, Number* x_l, Number* x_u, Index m, Number //get value of objective function at vector x bool QuadNLP::eval_f(Index n, const Number* x, bool new_x, Number& obj_value){ unsigned int i,j; - Number temp; obj_value=0; - for (i=0;i<n;++i){ - for (j=0;j<n;++j){ - obj_value+=x[i]*x[j]*qMatrix_[n*i+j]; + for (i=0;i<=n;i++){ + for (j=0;j<=n;j++){ + obj_value+=0.5*x[i]*x[j]*qMatrix_[n*i+j]; } obj_value+=x[i]*lMatrix_[i]; } @@ -71,24 +70,30 @@ bool QuadNLP::eval_f(Index n, const Number* x, bool new_x, Number& obj_value){ //get value of gradient of objective function at vector x. bool QuadNLP::eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f){ unsigned int i,j; - for(i=0;i<n;i++){ + for(i=0;i<n;i++) + { grad_f[i]=lMatrix_[i]; for(j=0;j<n;j++) - grad_f[i]+=(qMatrix_[n*i+j]+qMatrix_[n*j+i])*x[j]; - } - return true; + { + grad_f[i]+=(qMatrix_[n*i+j])*x[j]; + } } + return true; +} //Get the values of constraints at vector x. bool QuadNLP::eval_g(Index n, const Number* x, bool new_x, Index m, Number* g){ unsigned int i,j; - for(i=0;i<m;i++){ + for(i=0;i<m;i++) + { g[i]=0; for(j=0;j<n;j++) - g[i]+=x[j]*conMatrix_[n*i+j]; + { + g[i]+=x[j]*conMatrix_[i+j*m]; } - return true; } + return true; +} // This method sets initial values for required vectors . For now we are assuming 0 to all values. bool QuadNLP::get_starting_point(Index n, bool init_x, Number* x, @@ -137,7 +142,7 @@ bool QuadNLP::eval_jac_g(Index n, const Number* x, bool new_x, int index=0; for (int var=0;var<m;++var) for (int flag=0;flag<n;++flag) - values[index++]=conMatrix_[n*var+flag]; + values[index++]=conMatrix_[var+flag*m]; } return true; } @@ -166,7 +171,7 @@ bool QuadNLP::eval_h(Index n, const Number* x, bool new_x, Index index=0; for (Index row=0;row < n;++row){ for (Index col=0; col <= row; ++col){ - values[index++]=obj_factor*(qMatrix_[n*row+col]+qMatrix_[n*col+row]); + values[index++]=obj_factor*(qMatrix_[n*row+col]); } } } |