00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "BonTMINLP2OsiLP.hpp"
00010 #include "BonTypes.hpp"
00011 #include "OsiSolverInterface.hpp"
00012 #include "BonTMINLP2TNLP.hpp"
00013 #include "CoinPackedMatrix.hpp"
00014
00015 #include <vector>
00016 #include <sstream>
00017 #include <climits>
00018
00019 using namespace Ipopt;
00020
00021 namespace Bonmin {
00022
00023
00024 void
00025 TMINLP2OsiLP::initialize_jac_storage(){
00026 assert(IsValid(model_));
00027 int n;
00028 int m;
00029 int nnz_jac_g;
00030 int nnz_h_lag;
00031 TNLP::IndexStyleEnum index_style;
00032
00033 model_->get_nlp_info( n, m, nnz_jac_g, nnz_h_lag, index_style);
00034 jCol_.resize(nnz_jac_g);
00035 iRow_.resize(nnz_jac_g);
00036 value_.resize(nnz_jac_g);
00037
00038 model_->eval_jac_g(n, NULL, 0, m, nnz_jac_g, iRow_(), jCol_(), NULL);
00039 if(index_style == TNLP::FORTRAN_STYLE){
00040 for(size_t i = 0 ; i < iRow_.size() ; i++){
00041 iRow_[i]--; jCol_[i]--;
00042 }
00043 }
00044
00045 const_types_.resize(m);
00046 model_->get_constraints_linearity(m, const_types_());
00047
00048 }
00049
00050 }
00051