⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glpapi17.c

📁 著名的大规模线性规划求解器源码GLPK.C语言版本,可以修剪.内有详细帮助文档.
💻 C
📖 第 1 页 / 共 3 页
字号:
               return 1;            }            csa->in_res = argv[k];         }         else if (p("--min"))            csa->dir = GLP_MIN;         else if (p("--max"))            csa->dir = GLP_MAX;         else if (p("--scale"))            csa->scale = 1;         else if (p("--noscale"))            csa->scale = 0;         else if (p("-o") || p("--output"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No output solution file specified\n");               return 1;            }            if (csa->out_sol != NULL)            {  xprintf("Only one output solution file allowed\n");               return 1;            }            csa->out_sol = argv[k];         }         else if (p("-w") || p("--write"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No output solution file specifed\n");               return 1;            }            if (csa->out_res != NULL)            {  xprintf("Only one output solution file allowed\n");               return 1;            }            csa->out_res = argv[k];         }         else if (p("--bounds"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No sensitivity bounds output file specified\n");               return 1;            }            if (csa->out_bnds != NULL)            {  xprintf("Only one sensitivity bounds output file allowed"                  "\n");               return 1;            }            csa->out_bnds = argv[k];         }         else if (p("--tmlim"))         {  int tm_lim;            k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No time limit specified\n");               return 1;            }            if (str2int(argv[k], &tm_lim) || tm_lim < 0)            {  xprintf("Invalid time limit `%s'\n", argv[k]);               return 1;            }            if (tm_lim <= INT_MAX / 1000)               csa->smcp.tm_lim = csa->iocp.tm_lim = 1000 * tm_lim;            else               csa->smcp.tm_lim = csa->iocp.tm_lim = INT_MAX;         }         else if (p("--memlim"))         {  int mem_lim;            k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No memory limit specified\n");               return 1;            }            if (str2int(argv[k], &mem_lim) || mem_lim < 1)            {  xprintf("Invalid memory limit `%s'\n", argv[k]);               return 1;            }            glp_mem_limit(mem_lim);         }         else if (p("--check"))            csa->check = 1;         else if (p("--name"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No problem name specified\n");               return 1;            }            if (csa->new_name != NULL)            {  xprintf("Only one problem name allowed\n");               return 1;            }            csa->new_name = argv[k];         }         else if (p("--wmps"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No fixed MPS output file specified\n");               return 1;            }            if (csa->out_mps != NULL)            {  xprintf("Only one fixed MPS output file allowed\n");               return 1;            }            csa->out_mps = argv[k];         }         else if (p("--wfreemps"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No free MPS output file specified\n");               return 1;            }            if (csa->out_freemps != NULL)            {  xprintf("Only one free MPS output file allowed\n");               return 1;            }            csa->out_freemps = argv[k];         }         else if (p("--wcpxlp") || p("--wlpt"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No CPLEX LP output file specified\n");               return 1;            }            if (csa->out_cpxlp != NULL)            {  xprintf("Only one CPLEX LP output file allowed\n");               return 1;            }            csa->out_cpxlp = argv[k];         }         else if (p("--wpb"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No problem output file specified\n");               return 1;            }            if (csa->out_pb != NULL)            {  xprintf("Only one OPB output file allowed\n");               return 1;            }            csa->out_pb = argv[k];         }         else if (p("--wnpb"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No problem output file specified\n");               return 1;            }            if (csa->out_npb != NULL)            {  xprintf("Only one normalized OPB output file allowed\n");               return 1;            }            csa->out_npb = argv[k];         }         else if (p("--log"))         {  k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No log file specified\n");               return 1;            }            if (csa->log_file != NULL)            {  xprintf("Only one log file allowed\n");               return 1;            }            csa->log_file = argv[k];         }         else if (p("-h") || p("--help"))         {  print_help(argv[0]);            return -1;         }         else if (p("-v") || p("--version"))         {  print_version();            return -1;         }         else if (p("--luf"))            csa->bfcp.type = GLP_BF_FT;         else if (p("--cbg"))            csa->bfcp.type = GLP_BF_BG;         else if (p("--cgr"))            csa->bfcp.type = GLP_BF_GR;         else if (p("--primal"))            csa->smcp.meth = GLP_PRIMAL;         else if (p("--dual"))            csa->smcp.meth = GLP_DUAL;         else if (p("--std"))            csa->crash = USE_STD_BASIS;         else if (p("--adv"))            csa->crash = USE_ADV_BASIS;         else if (p("--bib"))            csa->crash = USE_CPX_BASIS;         else if (p("--steep"))            csa->smcp.pricing = GLP_PT_PSE;         else if (p("--nosteep"))            csa->smcp.pricing = GLP_PT_STD;         else if (p("--relax"))            csa->smcp.r_test = GLP_RT_HAR;         else if (p("--norelax"))            csa->smcp.r_test = GLP_RT_STD;         else if (p("--presol"))            csa->smcp.presolve = GLP_ON;         else if (p("--nopresol"))            csa->smcp.presolve = GLP_OFF;         else if (p("--exact"))            csa->exact = 1;         else if (p("--xcheck"))            csa->xcheck = 1;         else if (p("--nomip"))            csa->nomip = 1;         else if (p("--first"))            csa->iocp.br_tech = GLP_BR_FFV;         else if (p("--last"))            csa->iocp.br_tech = GLP_BR_LFV;         else if (p("--drtom"))            csa->iocp.br_tech = GLP_BR_DTH;         else if (p("--mostf"))            csa->iocp.br_tech = GLP_BR_MFV;         else if (p("--pcost"))            csa->iocp.br_tech = GLP_BR_HPC;         else if (p("--dfs"))            csa->iocp.bt_tech = GLP_BT_DFS;         else if (p("--bfs"))            csa->iocp.bt_tech = GLP_BT_BFS;         else if (p("--bestp"))            csa->iocp.bt_tech = GLP_BT_BPH;         else if (p("--bestb"))            csa->iocp.bt_tech = GLP_BT_BLB;         else if (p("--intopt"))            csa->iocp.presolve = GLP_ON;         else if (p("--nointopt"))            csa->iocp.presolve = GLP_OFF;         else if (p("--binarize"))            csa->iocp.presolve = csa->iocp.binarize = GLP_ON;         else if (p("--gomory"))            csa->iocp.gmi_cuts = GLP_ON;         else if (p("--mir"))            csa->iocp.mir_cuts = GLP_ON;         else if (p("--cover"))            csa->iocp.cov_cuts = GLP_ON;         else if (p("--clique"))            csa->iocp.clq_cuts = GLP_ON;         else if (p("--cuts"))            csa->iocp.gmi_cuts = csa->iocp.mir_cuts =            csa->iocp.cov_cuts = csa->iocp.clq_cuts = GLP_ON;         else if (p("--mipgap"))         {  double mip_gap;            k++;            if (k == argc || argv[k][0] == '\0' || argv[k][0] == '-')            {  xprintf("No relative gap tolerance specified\n");               return 1;            }            if (str2num(argv[k], &mip_gap) || mip_gap < 0.0)            {  xprintf("Invalid relative mip gap tolerance `%s'\n",                  argv[k]);               return 1;            }            csa->iocp.mip_gap = mip_gap;         }         else if (argv[k][0] == '-' ||                 (argv[k][0] == '-' && argv[k][1] == '-'))         {  xprintf("Invalid option `%s'; try %s --help\n",               argv[k], argv[0]);            return 1;         }         else         {  if (csa->in_file != NULL)            {  xprintf("Only one input problem file allowed\n");               return 1;            }            csa->in_file = argv[k];         }      }#undef p      return 0;}typedef struct { double rhs, pi; } v_data;typedef struct { double low, cap, cost, x; } a_data;int glp_main(int argc, const char *argv[]){     /* stand-alone LP/MIP solver */      struct csa _csa, *csa = &_csa;      int ret;      xlong_t start;      /* perform initialization */      csa->prob = glp_create_prob();      glp_get_bfcp(csa->prob, &csa->bfcp);      glp_init_smcp(&csa->smcp);      csa->smcp.presolve = GLP_ON;      glp_init_iocp(&csa->iocp);      csa->iocp.presolve = GLP_ON;      csa->tran = NULL;      csa->graph = NULL;      csa->format = FMT_MPS_FILE;      csa->in_file = NULL;      csa->ndf = 0;      csa->out_dpy = NULL;      csa->solution = SOL_BASIC;      csa->in_res = NULL;      csa->dir = 0;      csa->scale = 1;      csa->out_sol = NULL;      csa->out_res = NULL;      csa->out_bnds = NULL;      csa->check = 0;      csa->new_name = NULL;      csa->out_mps = NULL;      csa->out_freemps = NULL;      csa->out_cpxlp = NULL;      csa->out_pb = NULL;      csa->out_npb = NULL;      csa->log_file = NULL;      csa->crash = USE_ADV_BASIS;      csa->exact = 0;      csa->xcheck = 0;      csa->nomip = 0;      /* parse command-line parameters */      ret = parse_cmdline(csa, argc, argv);      if (ret < 0)      {  ret = EXIT_SUCCESS;         goto done;      }      if (ret > 0)      {  ret = EXIT_FAILURE;         goto done;      }      /*--------------------------------------------------------------*/      /* remove all output files specified in the command line */      if (csa->out_dpy != NULL) remove(csa->out_dpy);      if (csa->out_sol != NULL) remove(csa->out_sol);      if (csa->out_res != NULL) remove(csa->out_res);      if (csa->out_bnds != NULL) remove(csa->out_bnds);      if (csa->out_mps != NULL) remove(csa->out_mps);      if (csa->out_freemps != NULL) remove(csa->out_freemps);      if (csa->out_cpxlp != NULL) remove(csa->out_cpxlp);      if (csa->out_pb != NULL) remove(csa->out_pb);      if (csa->out_npb != NULL) remove(csa->out_npb);      if (csa->log_file != NULL) remove(csa->log_file);      /*--------------------------------------------------------------*/      /* open log file, if required */      if (csa->log_file != NULL)      {  if (lib_open_log(csa->log_file))         {  xprintf("Unable to create log file\n");            ret = EXIT_FAILURE;            goto done;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -