#include "config.h"
-#ifdef HAVE_IO_H
-#include <io.h>
-#endif
-
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+++ /dev/null
-LPP_CMD(BAD)
-LPP_CMD(OK)
-LPP_CMD(PROBLEM)
-LPP_CMD(SOLUTION)
-LPP_CMD(SOLVER)
-LPP_CMD(BYE)
-LPP_CMD(SOLVERS)
-LPP_CMD(SET_DEBUG)
-LPP_CMD(INFO)
const char *lpp_get_cmd_name(int cmd)
{
switch(cmd) {
-#define LPP_CMD(x) case LPP_CMD_ ## x: return #x;
-#include "lpp_cmd.def"
-#undef LPP_CMD
+ case LPP_CMD_BAD: return "BAD";
+ case LPP_CMD_OK: return "OK";
+ case LPP_CMD_PROBLEM: return "PROBLEM";
+ case LPP_CMD_SOLUTION: return "SOLUTION";
+ case LPP_CMD_SOLVER: return "SOLVER";
+ case LPP_CMD_BYE: return "BYE";
+ case LPP_CMD_SOLVERS: return "SOLVERS";
+ case LPP_CMD_SET_DEBUG: return "SET_DEBUG";
+ case LPP_CMD_INFO: return "INFO";
+ case LPP_CMD_LAST:
+ break;
}
return "<unknown>";
#define LPP_BUFSIZE (1 << 20)
enum {
-#define LPP_CMD(x) LPP_CMD_ ## x,
-#include "lpp_cmd.def"
-#undef LPP_CMD
+ LPP_CMD_BAD,
+ LPP_CMD_OK,
+ LPP_CMD_PROBLEM,
+ LPP_CMD_SOLUTION,
+ LPP_CMD_SOLVER,
+ LPP_CMD_BYE,
+ LPP_CMD_SOLVERS,
+ LPP_CMD_SET_DEBUG,
+ LPP_CMD_INFO,
LPP_CMD_LAST
};
*/
#include "config.h"
+#ifdef WITH_CPLEX
+
#include "lpp_cplex.h"
#include <stdio.h>
#include <stdlib.h>
-
-#ifdef WITH_CPLEX
-
-#include "obst.h"
-
+#include <assert.h>
#include <ilcplex/cplex.h>
-#include "assert.h"
+#include "obst.h"
+#include "stat_timing.h"
#include "sp_matrix.h"
static char cpx_cst_encoding[4] = "?ELG";
static char cpx_var_encoding[4] = "??CB";
-#define my_timersub(tvp, uvp, vvp) \
- do { \
- (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
- (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
- if ((vvp)->tv_usec < 0) { \
- (vvp)->tv_sec--; \
- (vvp)->tv_usec += 1000000; \
- } \
- } while (0)
-
typedef struct _cpx_t {
lpp_t *lpp;
CPXENVptr env;
{
int i, CPX_state, numcols;
double *values;
- struct timeval tvb, tva, tvdiff;
+ timing_ticks_t tvb;
+ timing_ticks_t tva;
lpp_t *lpp = cpx->lpp;
numcols = CPXgetnumcols(cpx->env, cpx->prob);
// CPXsetintparam (cpx->env, CPX_PARAM_SCRIND, CPX_ON);
/* solve */
- gettimeofday(&tvb, NULL);
+ timing_ticks(&tvb);
cpx->status = CPXmipopt(cpx->env, cpx->prob);
- gettimeofday(&tva, NULL);
+ timing_ticks(&tva);
chk_cpx_err(cpx);
/* get solution status */
CPXgetbestobjval(cpx->env, cpx->prob, &lpp->best_bound);
/* get some statistics */
- my_timersub(&tva, &tvb, &tvdiff);
- lpp->sol_time = tvdiff.tv_sec + tvdiff.tv_usec / 1e6;
+ timing_ticks_sub(tva, tvb);
+ lpp->sol_time = timing_ticks_dbl(tva);
lpp->iterations = CPXgetmipitcnt(cpx->env, cpx->prob);
}
*/
#include "config.h"
+#ifdef WITH_GUROBI
#include "lpp_gurobi.h"
#include <stdio.h>
#include <stdlib.h>
-#ifdef WITH_GUROBI
-
#include "obst.h"
#include <gurobi_c.h>
static char gurobi_cst_encoding[4] = { 0, GRB_EQUAL, GRB_LESS_EQUAL, GRB_GREATER_EQUAL };
static char gurobi_var_encoding[4] = { 0, 0, GRB_CONTINUOUS, GRB_BINARY };
-#define my_timersub(tvp, uvp, vvp) \
- do { \
- (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
- (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
- if ((vvp)->tv_usec < 0) { \
- (vvp)->tv_sec--; \
- (vvp)->tv_usec += 1000000; \
- } \
- } while (0)
-
typedef struct _gurobi_t {
lpp_t *lpp;
GRBenv *env;
*/
#include "config.h"
-#include <unistd.h>
-
#include "lpp_cplex.h"
#include "lpp_solvers.h"
#include "lpp_gurobi.h"
-static void dummy_solver(lpp_t *lpp)
-{
- int i;
-
- for(i = 0; i < lpp->var_next; ++i) {
- lpp->vars[i]->value = i;
- lpp->vars[i]->value_kind = lpp_value_solution;
- }
-
- if(lpp->log)
- fprintf(lpp->log, "dummy solver exiting now.\n");
-
- sleep(1);
- lpp->sol_time = 0.0;
- lpp->iterations = 0;
- lpp->sol_state = lpp_optimal;
-}
-
-static void segv_solver(lpp_t *lpp)
-{
- int i;
-
- for(i = 0; i < lpp->var_next; ++i) {
- lpp->vars[i]->value = i;
- lpp->vars[i]->value_kind = lpp_value_solution;
- }
-
- if(lpp->log)
- fprintf(lpp->log, "segv dummy solver exiting now.\n");
-
- sleep(1);
- *((int *) 0) = 1;
-}
-
lpp_solver_t lpp_solvers[] = {
#ifdef WITH_CPLEX
{ lpp_solve_cplex, "cplex", 1 },
#ifdef WITH_GUROBI
{ lpp_solve_gurobi, "gurobi", 1 },
#endif
- { dummy_solver, "dummy", 2 },
- { segv_solver, "segv", 2 },
{ NULL, NULL, 0 }
};
* Complexity is O(1) then.
* Random access or right-to-left and bottom-to-top is O(m*n).
*/
-
-#ifdef _WIN32
-#include <malloc.h>
-#endif
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
+#include "config.h"
#include <stdio.h>
#include <stdlib.h>