Cynnexis
Cynnexis

Reputation: 63

GAMS - Parameter containing set values

I'm new in GAMS, and I would like to create a parameter that returns items of a set instead of real numbers:

sets
    A  / A1, A2, A3, A4, A5 /
    B  / B1, B2, B3, B4, B5 /;

parameters
    C(A)
    /
        A1  B5,
        A2  B4,
        A3  B3,
        A4  B2,
        A5  B1
    /
    D(B)
    /
        B1  A3,
        B2  A4,
        B3  A2,
        B4  A1,
        B5  A5
    /;

display C, D;

When I try to compile this code, I obtain the following error: Real number expected.

I searched on Google if there is a way to achieve what I want, and I find the data type Acronym which allows the usage of non-number value. However, an Acronym cannot be used as an index for parameters, unlike set. I tried to have both acronym and set for the same values (e.g. replacing A by SetA and AcroA and B by SetB and AcroB) but I did not find anything about how to put values from a set to an acronym and vice-versa.

Is there a way to achieve what I want to do, with or without Acronyms?

Upvotes: 1

Views: 323

Answers (1)

Lutz
Lutz

Reputation: 2292

I believe, that Acronyms won't be useful here. I don't know how you plan to use C and D, but I think you might want to define them as 2-dimensional sets instead like this:

sets
    A  / A1, A2, A3, A4, A5 /
    B  / B1, B2, B3, B4, B5 /;

Set
    C(A,B)
    /
        A1.  B5,
        A2.  B4,
        A3.  B3,
        A4.  B2,
        A5.  B1
    /
    D(B,A)
    /
        B1.  A3,
        B2.  A4,
        B3.  A2,
        B4.  A1,
        B5.  A5
    /;

display C, D;

Upvotes: 3

Related Questions