Calcite | Level 5

## How to define product of sets in optmodel

Hi,

In my optmodel, I have a binary variable which is defined on a set with 3 elements(c,d,v) as: P{c,d,v}

I have another continous variable as x{c,d,v1,v2} which gives me 1 if P{c,d,v1}=1 and P{c,d,v2}=1 and 0 if one of them not , I defined it as

con variable_3{<c,d,v1,v2> in set3}:
x[c,d,v1,v2] = P[c,d,v1]*P[c,d,v2]

What I did is: I built a big table which has all the combination of v1 and v2 as set3, this makes my problem huge and out of memory. I was wondering about these questions:

1. Does it make a difference if I use impvar instead of the constraint for the memory issue

2. I suspect that we can define set3 directly in the opmodel as a product of two other sets without generating a big table as a combination of v1 and v2. Can somebody help me if there is a way to do that.

Thank you so much!

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

## Re: How to define product of sets in optmodel

You are asking about a product of binary variables, not a product of sets.  See this doc example that illustrates how to linearize this product.

4 REPLIES 4
SAS Super FREQ

## Re: How to define product of sets in optmodel

You are asking about a product of binary variables, not a product of sets.  See this doc example that illustrates how to linearize this product.

Calcite | Level 5

## Re: How to define product of sets in optmodel

Thank you! It was a very good example. The only question I have is this:

In this example variables assign is binary :

var Assign {DEPTS, CITIES} binary;

and variable product is defined as binary too

var Product {IJKL} binary;
con Product_def {<i,j,k,l> in IJKL}: Assign[i,j] + Assign[k,l] - 1 <= Product[i,j,k,l];
con Product_def2 {<i,j,k,l> in IJKL}: Product[i,j,k,l] <= Assign[i,j];
con Product_def3 {<i,j,k,l> in IJKL}: Product[i,j,k,l] <= Assign[k,l];

I think we dont need to define "product" as binary since based on the constraint I see here it automaticlly gets 1 and zero, is this correct?

SAS Super FREQ

## Re: How to define product of sets in optmodel

Yes, you can relax the new variable, and this idea is mentioned in the doc example:

"In both formulations, the Product variable can be relaxed to be nonnegative instead of binary. The integrality of Assign, together with the various Product_def* constraints, automatically implies integrality of Product. For real-world problems, you should try both ways to determine which alternative performs better in specific cases."

Calcite | Level 5

## Re: How to define product of sets in optmodel

Perfect! Thank you so much!
Discussion stats
• 4 replies
• 748 views
• 0 likes
• 2 in conversation