[Symphony] Problems when "Num_rows" <= "Num_cols" in SYMPHONY
Alberto Jorrín Rodríguez
albejor2002 at hotmail.com
Tue Jan 19 11:58:49 EST 2010
Hi,
I am doing some tests with SYMPHONY and I am finding that when I have a problem where the number of constraints is lower than the number of unknown variables, I can not get the solution. For instance:
In the next problem:
minJ = 26.305*x1 + 26.0454*X2
// Minimize
// obj: 26.305*x1 + 26.0454*x2
// Subject To
// c1: 0.1531*x1 + 26.305*x2 <= -7.78666
// Bounds
// 0 <= x1 <= 1000000
// 0 <= x2 <= 1000000
// Integers
// x1
The code of the problem for SYMPHONY is:
int main(int argc, char* argv[]){
/* Create a SYMPHONY environment */
sym_environment *env = sym_open_environment();
int n_cols = 2; //number of columns
double * objective =
(double *) malloc(sizeof(double) * n_cols);//the objective coefficients
double * col_lb =
(double *) malloc(sizeof(double) * n_cols);//the column lower bounds
double * col_ub =
(double *) malloc(sizeof(double) * n_cols);//the column upper bounds
//Define the objective coefficients.
objective[0] = 26.305;
objective[1] = 26.0454;
//Define the variable lower/upper bounds.
// --Bounds
col_lb[0] = 0.0;
col_lb[1] = 0.0;
col_ub[0] = 1000000;
col_ub[1] = 1000000;
int n_rows = 1;
char * row_sense =
(char *) malloc (sizeof(char) * n_rows); //the row senses
double * row_rhs =
(double *) malloc (sizeof(double) * n_rows); //the row right-hand-sides
double * row_range = NULL; //the row ranges
row_sense[0] = 'L';
row_rhs[0] = -7.78666;
/* Constraint matrix definitions */
int non_zeros = 2;
int * start = (int *) malloc (sizeof(int) * (n_cols + 1));
int * index = (int *) malloc (sizeof(int) * non_zeros);
double * value = (double *) malloc (sizeof(double) *non_zeros);
start[0] = 0;
start[1] = 1;
start[2] = 2;
index[0] = 0;
index[1] = 1;
value[0] = 0.1531;
value[1] = 26.305;
//define the integer variables
char * int_vars = (char *) malloc (sizeof(char) * n_cols);
int_vars[0] = INTEGER;
int_vars[1] = FALSE;
//load the problem to environment
sym_explicit_load_problem(env, n_cols, n_rows, start, index, value, col_lb,
col_ub, int_vars, objective, NULL, row_sense,
row_rhs, row_range, TRUE);
//solve the integer program
sym_solve(env);
//get, print the solution
double * solution = (double *) malloc (sizeof(double) * n_cols);
double objective_value = 0.0;
sym_get_col_solution(env, solution);
sym_get_obj_val(env, &objective_value);
printf("%s\n%s%f\n%s%f\n%s%f\n","JUEVES The optimal solution is",
" x0 = ",solution[0],
" x1 = ",solution[1],
" with objective value = ",objective_value);
//free the memory
sym_close_environment(env);
if(objective){free(objective);}
if(col_lb) {free(col_lb);}
if(col_ub) {free(col_ub);}
if(row_rhs) {free(row_rhs);}
if(row_sense){free(row_sense);}
if(row_range){free(row_range);}
if(index) {free(index);}
if(start) {free(start);}
if(value) {free(value);}
if(int_vars) {free(int_vars);}
if(solution) {free(solution);}
return 0;
}
I get the next output:
“Solving...
Out of range 1 1 1 26.305
****************************************************
* Branch and Cut Finished *
* Now displaying stats and best solution found... *
****************************************************
====================== LP/CG Timing =========================
Total Wallclock Time 0.000
====================== Statistics =========================
Number of created nodes : 1
Number of analyzed nodes: 1
Depth of tree: 0
Size of the tree: 1
Number of solutions found: 0
Number of solutions in pool: 0
Number of Chains: 1
Number of Diving Halts: 0
Number of cuts in cut pool: 0
======================= LP Solver =========================
Number of times LP solver called: 1
Number of solutions found by LP solve: 0
==================== Feasibility Pump =====================
Number of times feasibility pump called: 0
Number of solutions found by feasibility pump: 0
Time spent in feasibility pump: 0.00
=========================== Cuts ==========================
total cuts generated: 0
total gomory cuts generated: 0
total knapsack cuts generated: 0
total oddhole cuts generated: 0
total clique cuts generated: 0
total probing cuts generated: 0
total mir cuts generated: 0
total twomir cuts generated: 0
total flow and cover cuts generated: 0
total rounding cuts generated: 0
total lift and project cuts generated: 0
total landp cuts generated: 0
cuts removed because of bad coeffs: 0
cuts removed because of duplicacy: 0
cuts in root: 0
gomory cuts in root: 0
knapsack cuts in root: 0
oddhole cuts in root: 0
clique cuts in root: 0
probing cuts in root: 0
mir cuts in root: 0
twomir cuts in root: 0
flow and cover cuts in root: 0
rounding cuts in root: 0
lift and project cuts in root: 0
landp cuts in root: 0
time in cut generation: 0.00
time in gomory cuts: 0.00
time in knapsack cuts: 0.00
time in oddhole cuts: 0.00
time in clique cuts: 0.00
time in probing cuts: 0.00
time in mir cuts: 0.00
time in twomir cuts: 0.00
time in flow and cover cuts: 0.00
time in rounding cuts: 0.00
time in lift and project cuts: 0.00
time in landp cuts: 0.00
time in redsplit cuts: 0.00
time in checking quality and adding: 0.00
Current Lower Bound: 0.000
The problem is infeasible!
No Solution Found
JUEVES The optimal solution is
x0 = 0.000000
x1 = 0.000000
with objective value = 0.000000”
What is my fault?
Thanks a lot
Regards
===========================================
Alberto Jorrín Rodríguez
Departamento de Ingenieria de Sistemas y Automatica
Dpt. of Systems Engineering and Automatic Control
Universidad de Valladolid / University of Valladolid
Address: Facultad de Ciencias, c/ Real de Burgos s/n
47011 Valladolid, Spain
Tel: +34 647 670 581, Fax: +34 983 423161
e-mail: albejor at autom.uva.es
============================================
_________________________________________________________________
¡Seducción! 249 historias cada semana en el sitio nº1 para conseguir una cita. ¡Regístrate!
http://contactos.es.msn.com/?mtcmk=015352
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/symphony/attachments/20100119/a51c5e25/attachment.html>
More information about the Symphony
mailing list