User Tools

Site Tools


Getting the index position of the largest element of a parameter

I have a problem of choosing indexes for the maximum value of a parameter. Let a(i,j) be a parameter with Sets i /i1*i5/, j /j1*j10/. Let

Maxa = smax((i,j), a(i,j));

How do I get the index for i and j which lead to value Maxa?


Set i /i1 * i5/,
    j /j1 * j4/,
    posmax(i,j) 'position of largest element';
Parameter a(i,j) 'some data',
          maxa   'largest element of a';

a(i,j)=uniformint (1,100);
maxa = smax((i,j), a(i,j));
posmax(i,j) = a(i,j) = maxa;

Option decimals=0;
display a, maxa, posmax;
----     13 PARAMETER a  some data

            j1          j2          j3          j4

i1          18          85          56          31
i2          30          23          35          86
i3           7          51         100          58
i4         100          77          14          64
i5          16          26          67          44

----     13 PARAMETER maxa                 =          100  largest element of a

----     13 SET posmax  position of largest element

            j1          j3

i3                     YES
i4         YES

In case just one element is wanted and not all index positions with the maximum number, one can use a Singleton Set like this:

Singleton Set posmaxS(i,j);
Option strictSingleton=0;
posmaxS(i,j) = a(i,j) = maxa;
display posmaxS;
----     18 SET posmaxS  


i3         YES
IMPRESSUM / LEGAL NOTICEPRIVACY POLICY gams/getting_the_index_position_of_the_largest_element_of_a_set.txt · Last modified: 2020/05/25 17:14 by Lutz Westermann