Hi!

Thanks for the clarification. If I understand correctly, and ANY proper cost value is ok, and you don't need the element itself, just the cost value, then min/max could also work.

param some_valid_cost := max{s in S} cost[s];

Another more "random" solution (more like a workaround):

param selector{s in S} := Irand224();
param some_valid_cost := sum{s in S: selector[s] == max {ss in S} selector[ss]} cost[s];

(but it fails, if the max value is generated twice)

I hope this helps.

All the best!

Mate



On 12/12/19 4:19 PM, Meketon, Marc wrote:
Here is more clarification.  I have a set  S  and an array  cost[].
I wanted to get a cost -- any cost -- that is found in the array
cost.  I didn't want to have to specify in the data section a sample
element of  S, I just wanted to use GMPL to find one.  In the example
below, I want to find  SOME_ELEMENT_IN_S  as an index to the array
cost[].

set S; param cost{S};

param some_valid_cost := cost[SOME_ELEMENT_IN_S];

data; param : S : cost := A 100 B 105 C 198 ;

-----Original Message----- From: Help-glpk
<help-glpk-bounces+marc.meketon=oliverwyman....@gnu.org> On Behalf Of
Mate Hegyhati Sent: Thursday, December 12, 2019 2:29 AM To:
help-glpk@gnu.org Subject: Re: next question - find some element of a
set

Hi!

I'm not exactly sure, what you would like to do, but you could just
say, but maybe this answers your question:

set sports; param  favorite symbolic in sports;

var train{sports} >=0;

s.t. foobar: train[favorite] >=2;

minimize work: sum{f in sports} train[f];

data;

set sports := running cycling swimming; param favorite := 'running';

end;


So put ' around the name for a symbolic parameter, and also don't put
comma between set elements.

I hope this helped. If not, please clarify your situation.

All the best,

Mate


set := A, B, C;

param some_element_in_set, symbolic := ?????;

The closest I saw was in this old help-glpk email: https://lists.gnu.org/archive/html/help-glpk/2006-11/msg00059.html

Which says:

set S;

param ref{i in 1..card(S)}, symbolic, in S;

# ref[i] refers to i-th element of S;

param a{S};

... a[ref[i]]   ...  # means a[i-th element of S]

But I cannot get this to work. If I could get it to work, then I would do something like: param some_element_in_set := ref[1];

BTW, I’m still hoping that someone will help solve how to work the sudoku_excel.mod example in the ‘examples\sql’ directory of the
GLPK directory under Windows 10 64bit.  I still cannot get that to
work.

-Marc



Reply via email to