[Scip] have binary variable represent equality of two other vars?

Ambros Gleixner gleixner at zib.de
Mon Sep 23 07:19:33 CEST 2013


Of course it should read c == 1 - vabs( a - b ).

Am 23.09.2013 07:13, schrieb Ambros Gleixner:
> Hi George,
>
> mathematically, you want c = 1 - |a-b|, and James' answer is the
> standard linearization for this.  You can let Zimpl do this
> reformulation for you automatically by writing
>
>     c == vabs( a - b )
>
> or using vabs( a - b ) directly in your constraints.
>
> Happy zimpling,
>
> Ambros
>
>
>
>
> Am 20.09.2013 03:25, schrieb George Nychis:
>> Haha, I had thought of that solution James.  It seemed a little overkill
>> to me, but maybe it is the only good way to do this.  Let's see if
>> someone can turn up with something better, and if all fails I'll settle
>> for it.  Thanks for pointing it out!
>>
>>
>> On Thu, Sep 19, 2013 at 9:21 PM, James Gunning <James.Gunning at csiro.au
>> <mailto:James.Gunning at csiro.au>> wrote:
>>
>>     George, this may be completely dopey, but if one added a slack z to
>>     the objective, and equations
>>     z<=1, z>=a-b, z>= b-a, z=1-c   (or some suitable simplification),
>>     that might work..
>>
>>     George Nychis wrote:
>>>     This might be slightly off-topic, but I don't know where better to
>>>     ask.  I'm having a hard time expressing something in ZIMPL
>>>     linearly. I have two variables a and b. I want the variable c to
>>>     be strictly binary and take on the value of 1 when a and b are
>>>     equal, and 0 otherwise. Does anyone know of a good way to express
>>>     this?
>>>
>>>     Thanks!
>>>     George
>>>
>>>
>>>     _______________________________________________
>>>     Scip mailing list
>>>     Scip at zib.de  <mailto:Scip at zib.de>
>>>     http://listserv.zib.de/mailman/listinfo/scip
>>
>>
>>
>>
>> _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> http://listserv.zib.de/mailman/listinfo/scip
>>


More information about the Scip mailing list