Ejemplo n.º 1
0
static void install_interface(MCP *m)
{
  MCP_SetInterface(m, &interfac);
  return;
}
Ejemplo n.º 2
0
static void install_interface(MCP *m)
{
  MCP_SetInterface(m, &m_interface);
  MCP_SetPresolveInterface(m, &p_interface);
  return;
}
Ejemplo n.º 3
0
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;

}