help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-glpk] Can't use variable within abs()?


From: glpkuser
Subject: [Help-glpk] Can't use variable within abs()?
Date: Tue, 28 Aug 2007 03:41:53 +0400

I'm getting an error saying that "argument for abs has invalid type". 

I'm trying to model a load-balancing scenario where 10 weighted items are
distributed across 3 buckets. I want to minimise the difference between each
bucket's total weight and the average weight of all buckets, so I'm trying
to do the following, which is not working:

minimize z:  sum{b in BUCKETS} abs(BucketWeight[b] - AveBucketWeight);




Here is my entire .mod file:

set BUCKETS;
set ITEMS;

param item_weight{i in ITEMS};


/*** decision variables ***/

/* MAP[i, b] is 1 if item i is in bucket b */
var MAP{i in ITEMS, b in BUCKETS} binary >= 0;
var BucketWeight{b in BUCKETS} >= 0;
var AveBucketWeight >= 0;


/*** constraints ***/

/* all items must be assigned to a bucket  */
s.t. all_items{i in ITEMS}: sum{b in BUCKETS} MAP[i, b] = 1;

/* calculate the weight of each bucket */
s.t. bucket_weight{b in BUCKETS}: BucketWeight[b] = sum{i in ITEMS} MAP[i,
b] * item_weight[i];

/* calculate the average weight across all buckets */
s.t. ave_bucket_weight: AveBucketWeight = (sum{b in BUCKETS}
BucketWeight[b]) / 3.0;


/*** objective ***/

/*** PROBLEM OCCURS HERE ***/
minimize z:  sum{b in BUCKETS} abs(BucketWeight[b] - AveBucketWeight);



/*** data ***/

data; 

set BUCKETS := 1 2 3;
set ITEMS := 1 2 3 4 5 6 7 8 9 10;


/* item i has a weight of i */
param item_weight :=
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10;

end;
-- 
View this message in context: 
http://www.nabble.com/Can%27t-use-variable-within-abs%28%29--tf4338572.html#a12358437
Sent from the Gnu - GLPK - Help mailing list archive at Nabble.com.








reply via email to

[Prev in Thread] Current Thread [Next in Thread]