help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-glpk] how to defne an array (something like pointer to pointer


From: Andrew Makhorin
Subject: Re: [Help-glpk] how to defne an array (something like pointer to pointer in C)
Date: Tue, 12 May 2009 00:48:03 +0300

> I am new to glpk and MathProg. I am trying to model a problem in glpk
> and solve it. The problem is that I don’t know how should I define the
> following :
> We have E[i] for each i that is member of N :
> N is a set that contains A B C D E,
> So, we have E[A], E[B], E[C], E[D], E[E]
> The value for each of these members is as follows, for example:
> E[A]:= AB
> E[B] := AB     BC
> E[C] := BC CD
> E[D] := CD DE
> E[E] := DE
> The problem is that I don’t know how to define E with the above
>  specifications!

> I have tested the followings and it didn’t work:
> 1)
> param E:=
> A AB;
> B AB BC
> C BC CD
> D CD DE
> E DE;

> 2)
> param E :
> if i==A
>       then AB
> else if i==B
>       then AB BC
> else if i==C
>       then BC CD
> else if i==D
>       then CD DE
> else if i==E
>       then DE;
> 3)
> set EA;               /*set of edges connected to node A*/
> set EB;               /*set of edges connected to node B*/
> set EC;               /*set of edges connected to node C*/
> set ED;               /*set of edges connected to node D*/
> set EE;               /*set of edges connected to node E*/
>  set EA := AB;
> set EB := AB BC;
> set EC := BC CD;
> set ED := CD DE;
> set EE := DE;

> and also we have:
> u can be AB BC CD DE
> and after defining the E, I have to check something like this:
> for each I in N, for each u that is in E[i] ….some condition……

> I really don’t know how should I solve this problem,how to define E,
> and it is very essential to solve this problem..
> Please do me a favor and help!
> Many thanks in advance.

You may try something like this:

set N;
set E{i in N}, dimen 2;
display E;
data;
set N := A B C D E;
set E[A] := (A,B);
set E[B] := (A,B) (B,C);
set E[C] := (B,C) (C,D);
set E[D] := (C,D) (D,E);
set E[E] := (D,E);







reply via email to

[Prev in Thread] Current Thread [Next in Thread]