help-glpk
[Top][All Lists]

## [Help-glpk] Re: how make Solver to select arbitrary subset of nonzero va

 From: Andrew Makhorin Subject: [Help-glpk] Re: how make Solver to select arbitrary subset of nonzero variables with specified cardinality Date: Tue, 09 Nov 2010 14:14:15 +0300

```> My problem is planning resources for recognition of objects .
> I have various kinds of of resources and other side various kinds of objects.
>
> To increase reliability of recognition more than one resource must be set in
> result plan for the same
> object.
> For this purpose I want to have a "overlap" param, which Solver must
> interpret in next s.t. as
> "For every Objects[i] must be planned overlap[j] types of Resources"
>
>
> s.t. overlapping{j in Objects}: card ( { i in Resources,j: x[i,j]!=0 } ) =
> overlap[j];
>
> This incorrect, I see because in this context x[i,j] can not be used.

First, you need to introduce auxiliary binary variables, say, as
follows:

var y{i in Resources, j in Objects}, binary;
s.t. foo{i in Resources, j in Objects}: x[i,j] <= M * y[i,j];

where y[i,j] = 0 means that x[i,j] = 0 and y[i,j] = 1 means that
0 <= x[i,j] <= M, and "big M" is an appropriate upper bound of x[i,j].
Then your constraint can be written as:

s.t. overlapping{j in Objects}: sum{i in Resources}y[i,j] = overlap[j];

```