Re: Help: Switch constraints on or off

Heinrich Schuchardt <[email protected]> Tue, 24 Nov 2020 22:07:10 +0100
Newsgroups gmane.comp.gnu.glpk
Message-ID <[email protected]>
On 11/24/20 9:30 PM, Heinrich Schuchardt wrote:
> On 11/24/20 8:42 PM, Andrew Makhorin wrote:
>> On Tue, 2020-11-24 at 18:59 +0000, Manuel Castro wrote:
>>> Hi there,
>>>
>>> I am wondering how I can use an if statement to turn a constraint on
>>> or off.
>>> For example in my problem I have the following constraint:
>>>
>>> subject to linctr14 {i in PeriodsCount: i == 1}: StorageEnergy[i] =
>>> (StorageStateCharge * StorageEnergyRating + ((StorageEfficiencyCharge
>>> * (StoragePowerCharge[i])) - ((StoragePowerDischarge[i]) /
>>> StorageEfficiencyDischarge)));
>>>
>>> Now, I only want to consider storage in my problem if an object
>>> storage actually exists.
>>> For that, I would have a StorageStatusFlag which if equal to "1" then
>>> I would consider the constraint in my problem.
>>> For example:
>>>
>>> If (StorageStatusFlag == 1) then
>>>      subject to linctr14 {i in PeriodsCount: i == 1}: StorageEnergy[i]
>>> = (StorageStateCharge * StorageEnergyRating +
>>> ((StorageEfficiencyCharge * (StoragePowerCharge[i])) -
>>> ((StoragePowerDischarge[i]) / StorageEfficiencyDischarge)));
>>> end if
>
> Just add the condition to the constraint iterator:
>
> subject to
> linctr14{i in PeriodsCount: i == 1 && StorageStatusFlag == 1}: ....

I have updated our wikibook

https://en.wikibooks.org/wiki/GLPK/Conditional_Constraints

Best regards

Heinrich

>
>>>
>>> This is what I used to do in "mosel" language from FICO Xpress (I
>>> don't have a license anymore so I am discovering GLPK ). How can I do
>>> this in GLPK language? What's the workaround that we can use for this?
>>
>>
>> You could use the C preprocessor.
>>
>>
>>>
>>> Many thanks in advance for your help. It's really appreciated.
>>>
>>> Kind regards,
>>> Manuel.
>>>
>>
>
>