int GLPKPrintFromSolver(int lpcount) { if (GLPKModel == NULL) { FErrorFile() << "Cannot print problem because problem does not exist." << endl; FlushErrorFile(); return FAIL; } string Filename = CheckFilename(FOutputFilepath()+GetParameter("LP filename")); int Status = glp_write_lp(GLPKModel,NULL,ConvertStringToCString(Filename)); if (Status) { FErrorFile() << "Unable to write problem to file due to error in writing function." << endl; FlushErrorFile(); return FAIL; } Filename = CheckFilename(FOutputFilepath()+GetParameter("LP filename")+itoa(lpcount)); Status = glp_write_lp(GLPKModel,NULL,ConvertStringToCString(Filename)); if (Status) { FErrorFile() << "Unable to write problem to file due to error in writing function." << endl; FlushErrorFile(); return FAIL; } return SUCCESS; }
void ProcessMolfiles() { string fullfile = FOutputFilepath()+"MolfileInput.txt"; ifstream Input; if (!OpenInput(Input,fullfile)) { return; } ofstream Output; string outfile = FOutputFilepath()+"MolfileOutput.txt"; if (OpenOutput(Output,outfile)) { Data* NewData = new Data(0); Output << "id\tmolfile\tgroups\tcharge\tformula\tstringcode\tmass\tdeltaG\tdeltaGerr" << endl; GetStringsFileline(Input,"\t",false); while(!Input.eof()) { vector<string>* strings = GetStringsFileline(Input,"\t",false); if (strings->size() >= 2) { Species* NewSpecies = new Species("", NewData, false); NewSpecies->ReadFromMol(FOutputFilepath()+"molfiles/"+(*strings)[1]); NewSpecies->PerformAllCalculations(true,true,true,true,true); string cues = NewSpecies->CreateStructuralCueList(); findandreplace(cues,"\t","|"); Output << (*strings)[0] << "\t" << (*strings)[1] << "\t" << cues << "\t" << NewSpecies->FCharge() << "\t" << NewSpecies->FFormula() << "\t"; Output << NewSpecies->FCode() << "\t" << NewSpecies->FMW() << "\t" << NewSpecies->FEstDeltaG() << "\t" << NewSpecies->FEstDeltaGUncertainty() << endl; delete NewSpecies; } delete strings; } Output.close(); } Input.close(); }
int CPLEXPrintFromSolver() { int Status = 0; if (CPLEXenv == NULL) { FErrorFile() << "Cannot print problem to file because CPLEX environment is not open." << endl; FlushErrorFile(); return FAIL; } if (CPLEXModel == NULL) { FErrorFile() << "Cannot print problem to file because no CPLEX model exists." << endl; FlushErrorFile(); return FAIL; } string Filename = CheckFilename(FOutputFilepath()+GetParameter("LP filename")); Status = CPXwriteprob (CPLEXenv, CPLEXModel,Filename.data(), "LP"); if (Status) { FErrorFile() << "Cannot print problem to file for unknown reason." << endl; FlushErrorFile(); return FAIL; } return SUCCESS; }
int CPLEXInitialize() { int Status = 0; //First I open the CPLEX environment if it is not already open if (CPLEXenv == NULL) { CPLEXenv = CPXopenCPLEX (&Status); } if (CPLEXenv == NULL || Status) { FErrorFile() << "Failed to initialize CPLEX environment. Check license server on aterneus." << endl; FlushErrorFile(); return FAIL; } //Now I set any environment variables Status = CPXsetintparam(CPLEXenv, CPX_PARAM_SCRIND, CPX_ON); Status = CPXsetdblparam(CPLEXenv, CPX_PARAM_WORKMEM, 50); Status = CPXsetstrparam(CPLEXenv, CPX_PARAM_WORKDIR, FOutputFilepath().data()); Status = CPXsetintparam(CPLEXenv, CPX_PARAM_NODEFILEIND, 2); Status = CPXsetdblparam(CPLEXenv, CPX_PARAM_TRELIM, 50); if (Status) { FErrorFile() << "Failed to set screen indicators to on." << endl; FlushErrorFile(); return FAIL; } if (GetParameter("CPLEX solver time limit").length() > 0 && GetParameter("CPLEX solver time limit").compare("none") != 0) { Status = CPXsetdblparam (CPLEXenv, CPX_PARAM_TILIM, atof(GetParameter("CPLEX solver time limit").data())); if (Status) { FErrorFile() << "Failed to set CPLEX time limit." << endl; FlushErrorFile(); return FAIL; } } //I set the number of processors to run on if allowed to // SYSTEM_INFO sysinfo; // GetSystemInfo( &sysinfo ); // int numCPU = sysinfo.dwNumberOfProcessors; Status = CPXsetintparam(CPLEXenv, CPX_PARAM_THREADS, 1); Status = CPXsetintparam(CPLEXenv, CPX_PARAM_PARALLELMODE, 0); Status = CPXsetintparam (CPLEXenv, CPX_PARAM_MIPDISPLAY, 0); //Next I clear out any models that currently exist if (CPLEXClearSolver() != SUCCESS) { return FAIL; //error message already printed } //Now I create a new CPLEX model CPLEXModel = CPXcreateprob (CPLEXenv, &Status, "LPProb"); Status = CPXchgprobtype(CPLEXenv, CPLEXModel, CPXPROB_LP); if (Status || CPLEXModel == NULL) { FErrorFile() << "Failed to create new CPLEX model." << endl; FlushErrorFile(); return FAIL; } return SUCCESS; }