2016-04-08 18 views
1

glpsol garip bir davranış, daha doğrusu değişkenlerinden biri. Ben dosyasında sol.mod yılında, glpsol -m sol.modGLPK Değişken çözüldükten sonra değişiyor gibi görünüyor

Girişi kullanarak komutu çalıştırın:

set Points := (1..3); 
var a{i in Points}, >= 0; 
var x1{i in Points}; 
var x2{i in Points}; 
maximize obj: sum{i in Points} a[i]; 
px1: x1[1] = 0; 
py1: x2[1] = 0; 
px2: x1[2] = 2; 
py2: x2[2] = 1; 
px3: x1[3] = 3; 
py3: x2[3] = 3; 
p1x2: x1[1] + a[1] <= x1[2] - a[2]; 
p1x3: x1[1] + a[1] <= x1[3] - a[3]; 
p2x3: x2[2] + a[2] <= x2[3] - a[3]; 
solve; 
printf "#OUTPUT:\n"; 
#printf{i in Points} "a_%d = %d\n", i, a[i]; 
printf "a[1]: %d\n", a[1]; 
printf "-a[1]: %d\n", -a[1]; 
printf "a[3]: %d\n", a[3]; 
printf "#OUTPUT END:\n"; 
end; 

Çıktı:

konu a[1] 2'ye değerlendirildiği gibi görünüyor
GLPSOL: GLPK LP/MIP Solver, v4.52 
Parameter(s) specified in the command line: 
-m sol.mod 
Reading model section from sol.mod... 
22 lines were read 
Generating obj... 
Generating px1... 
Generating py1... 
Generating px2... 
Generating py2... 
Generating px3... 
Generating py3... 
Generating p1x2... 
Generating p1x3... 
Generating p2x3... 
Model has been successfully generated 
GLPK Simplex Optimizer, v4.52 
10 rows, 9 columns, 21 non-zeros 
Preprocessing... 
3 rows, 3 columns, 6 non-zeros 
Scaling... 
A: min|aij| = 1.000e+00 max|aij| = 1.000e+00 ratio = 1.000e+00 
Problem data seem to be well scaled 
Constructing initial basis... 
Size of triangular part is 3 
*  0: obj = 0.000000000e+00 infeas = 0.000e+00 (0) 
*  3: obj = 3.500000000e+00 infeas = 0.000e+00 (0) 
OPTIMAL LP SOLUTION FOUND 
Time used: 0.0 secs 
Memory used: 0.1 Mb (126476 bytes) 
#OUTPUT: 
a[1]: 2 
-a[1]: -1 
a[3]: 2 
#OUTPUT END: 
Model has been successfully processed 

, -a[1] iken üzere değerlendirilir - 1. Ayrıca bir [3] 2'ye eşittir, dolayısıyla kısıtlama p1x3 yerine getirilmez.

Şu anda bunu nasıl düzelteceğimi veya neden kaynaklandığını bilmiyorum.

cevap

1

% d biçim belirtecini% g olarak değiştirin ve ne olduğunu görün. Bir {i} kesirli değerlere sahip olabilen sürekli değişkenler olduğunu unutmayın.

İlgili konular