Hello Andrew !

Thank you for reply !

That's the problem It should not work, the constraint "zumVariance: sum{z in Sample} E[z+10] = 0;" should give an error because when "z = last_valid_subscript - 9" the resulting expression will be "last_valid_subscript+1" and so on.

Cheers !

On 12/8/20 17:04, Andrew Makhorin wrote:
On Wed, 2020-08-12 at 16:38 +0200, Domingo Alvarez Duarte wrote:
Hello !

Trying to make changes to make less tuple copies I found that GMPL
actually do not detect invalid subscripts see the modified huge.mod
bellow, when we add an arbitry number to the "z" index it would fall
outside the valid subscript range but actually GMPL do not detect this
situation and silently goes forward.

=====

/*Arithmetic Mean of a large number of Integers
    - or - solve a very large constraint matrix
           over 1 million rows and columns
    [email protected]
    March 18th., 2008.
*/

param e := 20;
#param e := 15;
/* set Sample := {-2**e..2**e-1}; */
set Sample := {1..2**e-1};
printf "card Sample %d : %f\n", card(Sample), sum{i in Sample: i =
(card(Sample)-100)} i;
var Mean;

var E{z in Sample};

/* sum of variances is zero */
zumVariance: sum{z in Sample} E[z+10] = 0; #!!!! +x would fall out of
valid indexes

/* Mean + variance[n] = Sample[n] */
variances{z in Sample}: Mean + E[z] = z;

solve;

printf "The arithmetic mean of the integers from 1 to %d is %f\n",
2**e-1, Mean;

end;

=====

Cheers !



It works for me.

------

param e := 20;
#param e := 15;
/* set Sample := {-2**e..2**e-1}; */
set Sample := {1..2**e-1};
printf "card Sample %d : %f\n", card(Sample), sum{i in Sample: i = 
(card(Sample)-100)} i;
var Mean;

var E{z in Sample};

/* sum of variances is zero */
zumVariance: sum{z in Sample} E[z+10] = 0; #!!!! +x would fall out of valid 
indexes

/* Mean + variance[n] = Sample[n] */
variances{z in Sample}: Mean + E[z] = z;

solve;

printf "The arithmetic mean of the integers from 1 to %d is %f\n",
2**e-1, Mean;

end;

------

GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
  -m foo.mod
Reading model section from foo.mod...
21 lines were read
card Sample 1048575 : 1048475.000000
Generating zumVariance...
foo.mod:11: E[1048576] out of domain
MathProg model processing error

Reply via email to