-------- Forwarded Message --------
From: [email protected]
To: [email protected]
Cc: [email protected]
Subject: uncaught self reference in model's param line crashes glpsol
v4.55
Date: Sun, 05 Mar 2017 15:26:21 +0000
First off, I would like to thank you for sharing such a great tool with the
rest of the world!
On to the bug report.
I have noticed that glpsol reproducibly crashes on a debian wheezy box
$ glpsol --version | head -1
GLPSOL: GLPK LP/MIP Solver, v4.55
if a model's param line contains a self reference.
While the following model is OK
param A_symbolic{1..2, 1..2}, default -1;
param A{i in 1..2, j in 1..2} :=
(if A_symbolic[i,j]=1 then 1.2 else
(if A_symbolic[i,j]=2 then 3.4 else
A_symbolic[i,j] ));
solve;
for {i in 1..2} { for {j in 1..2} {printf "%5.2f ",A[i,j];} printf "\n"; }
data;
# if A_symbolic[i,j] = 1 then A[i,j] is 1.2
# if A_symbolic[i,j] = 2 then A[i,j] is 3.4
# else A[i,j] is A_symbolic[i,j]
param A_symbolic: 1 2 :=
1 0 1
2 2 0 ;
end;
a self reference in the definition of the A parameter is not caught by
glpsol, which causes the program to crash with a segmentation violation error:
param A_symbolic{1..2, 1..2}, default -1;
param A{i in 1..2, j in 1..2} :=
(if A_symbolic[i,j]=1 then 1.2 else
(if A_symbolic[i,j]=2 then 3.4 else
A[i,j] ));
solve;
for {i in 1..2} { for {j in 1..2} {printf "%5.2f ",A[i,j];} printf "\n"; }
data;
# if A_symbolic[i,j] = 1 then A[i,j] is 1.2
# if A_symbolic[i,j] = 2 then A[i,j] is 3.4
# else A[i,j] is A_symbolic[i,j]
param A_symbolic: 1 2 :=
1 0 1
2 2 0 ;
end;
The only difference between the two models was:
$ diff glpsol_*mod
5c5
< A[i,j] ));
---
> A_symbolic[i,j] ));
Any ideas?
_______________________________________________
Bug-glpk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-glpk