37 lines
604 B
Plaintext
37 lines
604 B
Plaintext
/*Special ordered set of type N
|
|
|
|
Nigel_Galloway
|
|
January 26th, 2012
|
|
*/
|
|
|
|
param Lmax;
|
|
param Lmin;
|
|
set SOS;
|
|
param Sx{SOS};
|
|
var db{Lmin..Lmax,SOS}, binary;
|
|
|
|
maximize s : sum{q in (Lmin..Lmax),t in (0..q-1), z in SOS: z > (q-1)} Sx[z-t]*db[q,z];
|
|
sos1 : sum{t in (Lmin..Lmax),z in SOS: z > (t-1)} db[t,z] = 1;
|
|
solve;
|
|
|
|
for{t in (Lmin..Lmax),z in SOS: db[t,z] == 1} {
|
|
printf "\nA sub-sequence of length %d sums to %f:\n", t,s;
|
|
printf{q in (z-t+1)..z} " %f", Sx[q];
|
|
}
|
|
printf "\n\n";
|
|
|
|
data;
|
|
param Lmin := 1;
|
|
param Lmax := 6;
|
|
param:
|
|
SOS: Sx :=
|
|
1 7
|
|
2 4
|
|
3 -11
|
|
4 6
|
|
5 3
|
|
6 1
|
|
;
|
|
|
|
end;
|