static void install_interface(MCP *m) { MCP_SetInterface(m, &interfac); return; }
static void install_interface(MCP *m) { MCP_SetInterface(m, &m_interface); MCP_SetPresolveInterface(m, &p_interface); return; }
int path_main( int n, int nnz, double *z, double *f, double *lb, double *ub, char **var_name, char **con_name, void *f_eval, void *j_eval) { // solve status: return value int status; // creating a Problem instance problem.n = n; problem.nnz = nnz; problem.z = z; problem.f = f; problem.lb = lb; problem.ub = ub; problem.var_name = var_name; problem.con_name = con_name; problem.f_eval = f_eval; problem.j_eval = j_eval; if (var_name == NULL) { mcp_interface.variable_name = NULL; } else { mcp_interface.variable_name = variable_name; } if (con_name == NULL) { mcp_interface.constraint_name = NULL; } else { mcp_interface.constraint_name = constraint_name; } // Output Interface #if defined(USE_OUTPUT_INTERFACE) Output_SetInterface(&outputInterface); #else /* N.B.: the Output_SetLog call does not work when using a DLL: * the IO systems of a .exe and .dll do not automatically interoperate */ Output_SetLog(stdout); #endif // Information instance Information info; info.generate_output = Output_Log | Output_Status | Output_Listing; info.use_start = True; info.use_basics = True; // Options Interface Options_Interface *o; o = Options_Create(); Path_AddOptions(o); Options_Default(o); Options_Read(o, "path.opt"); Options_Display(o); // Preprocessing if (n == 0) { fprintf(stdout, "\n ** EXIT - solution found (degenerate model).\n"); (status) = MCP_Solved; Options_Destroy(o); return status; } double dnnz; dnnz = MIN(1.0*nnz, 1.0*n*n); if (dnnz > INT_MAX) { fprintf(stdout, "\n ** EXIT - model too large.\n"); (status) = MCP_Error; Options_Destroy(o); return status; } nnz = (int) dnnz; fprintf(stdout, "%d row/cols, %d non-zeros, %3.2f%% dense.\n\n", n, nnz, 100.0*nnz/(1.0*n*n)); nnz++; // preparing an MCP instance and interfaces MCP *m; m = MCP_Create(n, nnz); MCP_SetInterface(m, &mcp_interface); Output_SetLog(stdout); // SOLVE status = Path_Solve(m, &info); // Preparing return values double *tempZ; double *tempF; tempZ = MCP_GetX(m); tempF = MCP_GetF(m); int i; for (i = 0; i < n; i++) { z[i] = tempZ[i]; f[i] = tempF[i]; } // destroy MCP_Destroy(m); Options_Destroy(o); return status; }