[Scip] Define parameters in ZIMPL

Julio Rojas jcredberry at gmail.com
Sun May 16 14:12:30 MEST 2010


I'll try it. Thx a lot.
-------------------------------------------------
Julio Rojas
jcredberry at gmail.com


On Sun, May 16, 2010 at 10:58 AM, Thorsten Koch <koch at zib.de> wrote:

> You have to use ord(p,..) instead if p[...]
> than it might work.
>
> Best regards,
> Thorsten
>
>
> Am 16.05.2010 10:53, schrieb Julio Rojas:
> > We're almost there, I think... I mistakingly put:
> >
> > par s[<i,j> in e2] := <1,2> 1, <1,3> 2, ... , <n-1,n> (n^2 - n)/2;
> >
> > when it should have been something like:
> >
> > par s[<i,j> in e2] := <1,2> p[1], <1,3> p[2], ... , <n-1,n> p[(n^2 -
> n)/2];
> >
> > is it possible by changing your code to:
> >
> > par s[<i,j> in e2] := <i,j> p[( ((i -1)* card(p) + (j-1))^2 - ((i
> > -1)*card(p) + (j-1))) / 2];
> >
> > or something like that?
> >
> > Best regards.
> > -------------------------------------------------
> > Julio Rojas
> > jcredberry at gmail.com
> >
> >
> > On Sun, May 16, 2010 at 10:31 AM, Thorsten Koch <koch at zib.de> wrote:
> >
> >> Am 16.05.2010 10:20, schrieb Julio Rojas:
> >>> Dear Thornsten, I'm sorry for my lack of clarity. What I would like is
> to
> >>> fill position <i,j> of the parameter matrix "s" with position <k> of a
> >>> vector or set of values.
> >>
> >> But you need some connect betwwen i,j and k or should k just be
> >> incremented?
> >>
> >>
> >>
> >>  I would really like to learn how to solve it
> >>> directly in ZIMPL, as the regular way of doing it would require using
> two
> >>> (very costly in time) loops that build the string "par s[<i,j> in e2]
> :=
> >>> <1,2> 1, <1,3> 2, ... , <n-1,n> (n^2 - n)/2;
> >>
> >> That would be:
> >>
> >> par s[<i,j> in e2] := <i,j>( ((i -1)* card(p) + (j-1))^2 - ((i -1)*
> >> card(p) + (j-1))) / 2;
> >>
> >> Best regards,
> >> Thorsten
> >>
> >>>
> >>> If there's no possible way, don't worry, I won't keep trying to pull a
> >>> Phillips screw with a flat screwdriver. ;) Besides, I have already
> solve
> >> it
> >>> from my source code without using the loops, although
> >>> curiosity still lingers on. I hope
> >>>
> >>> I have been sufficiently clear. Best regards.
> >>> -------------------------------------------------
> >>> Julio Rojas
> >>> jcredberry at gmail.com
> >>>
> >>>
> >>> On Sun, May 16, 2010 at 12:21 AM, Thorsten Koch <koch at zib.de> wrote:
> >>>
> >>>> Dear Julio,
> >>>>
> >>>> it is not clera to what you want to achieve.
> >>>>
> >>>> Am 15.05.2010 16:38, schrieb Julio Rojas:
> >>>>> Dear Thorsten, I have followed your advice and changed my code to:
> >>>>>
> >>>>> param s[<i,j> in e2] := ord(p,j in {1..card(p)},1) default 0;
> >>>>>
> >>>>
> >>>> s[3,4] has to resolve to a single number.
> >>>>
> >>>> What do you want from the  j in { 1 .. 3 } ?
> >>>> j is already fixed from the s[<i,j> in e2] so it is some number.
> >>>> But then    2 in { 1 .. 3} does not make much sense.
> >>>>
> >>>> Best regards,
> >>>> Thorsten
> >>>>
> >>>>
> >>>>
> >>>>> Now, the error changed to:
> >>>>>
> >>>>> Reading problem.zpl
> >>>>> *** Error 800: File problem.zpl Line 7 : syntax error, unexpected IN,
> >>>>> expecting
> >>>>> ',' or '+' or '-'
> >>>>> *** aram s[<i,j> in e2] := ord(p,k in {1..card(p)},1) default 0;
> >>>>> ***                                 ^^^
> >>>>>
> >>>>> Any other idea? Am I forcing things and should stick to define the
> >>>>> parameters by hand from my program (two loops)?
> >>>>>
> >>>>> Best regards.
> >>>>> -------------------------------------------------
> >>>>> Julio Rojas
> >>>>> jcredberry at gmail.com
> >>>>>
> >>>>>
> >>>>> On Sat, May 15, 2010 at 3:35 PM, Thorsten Koch <koch at zib.de> wrote:
> >>>>>
> >>>>>> Dear Julio,
> >>>>>>
> >>>>>> you can not access a member of a set (p) by use of [].
> >>>>>> if you do p[] you try to access an array of sets (which is not
> defined
> >>>>>> in this case)
> >>>>>> You can access a member of a set using the ord() function.
> >>>>>>
> >>>>>> Furthermore, a parameter is always only a single value.
> >>>>>>
> >>>>>> Here
> >>>>>>> param s[<i,j> in e2] := p[i in {1..card(p)}] default 0;
> >>>>>>                             ^
> >>>>>>                       This i
> >>>>>> is equal to the i from <i,j>.
> >>>>>> The expression on the right hand side is not depending on j.
> >>>>>> In any case it should read p[<i> in ...  but this won't work either.
> >>>>>>
> >>>>>> But I believe ord() will do what you need.
> >>>>>>
> >>>>>> Best regards,
> >>>>>> Thorsten
> >>>>>>
> >>>>>>
> >>>>>> param s[<i,j> in e2] := ord(p([i in {1..card(p)}] default 0;
> >>>>>>
> >>>>>> Am 14.05.2010 20:18, schrieb Julio Rojas:
> >>>>>>> Dear Armin and Ambros, not really. I'll like to put the k-th
> element
> >> of
> >>>>>> the
> >>>>>>> set p in the <i,j>-th position of the parameter matrix s. I have
> >>>> already
> >>>>>>> defined e2 (but didn't put it in my previous email) and I wouldn't
> >> like
> >>>>>> to
> >>>>>>> create the matrix of parameters one by one as it is stated in the
> >>>> manual.
> >>>>>>> The matrix s is a triangular matrix with zeros in the diagonal (in
> >>>>>> reality
> >>>>>>> is a distance matrix). I would like to fill each element of the
> >> matrix
> >>>>>> from
> >>>>>>> a set. This way I will not have to make a double loop in my code to
> >>>>>> define
> >>>>>>> each element <i,j> with i<j. This is the code I already have:
> >>>>>>>
> >>>>>>> set nodes := {"1","2","3"};
> >>>>>>> set e2 := {<i,j> in nodes*nodes with i<j};
> >>>>>>> set p := {.1,.2,.3};
> >>>>>>> var y[<i,j> in e2] binary;
> >>>>>>> var x[<i> in nodes] binary;
> >>>>>>> param s[<i,j> in e2] := p[i in {1..card(p)}] default 0;
> >>>>>>> maximize sim: sum<i,j> in e2: s[i,j]*y[i,j];
> >>>>>>>
> >>>>>>> Best regards.
> >>>>>>> -------------------------------------------------
> >>>>>>> Julio Rojas
> >>>>>>> jcredberry at gmail.com
> >>>>>>>
> >>>>>>>
> >>>>>>> 2010/5/14 Armin Fügenschuh <fuegenschuh at zib.de>
> >>>>>>>
> >>>>>>>> Dear Julio,
> >>>>>>>>
> >>>>>>>> is this the thing you're trying to do?
> >>>>>>>>
> >>>>>>>> set p := {.1,.2,.3};
> >>>>>>>> set e2 := p*p;
> >>>>>>>> param s[<i,j> in e2] := j;
> >>>>>>>> var y[e2] real;
> >>>>>>>> maximize sim: sum<i,j> in e2: s[i,j]*y[i,j];
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Regards,
> >>>>>>>> Armin
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> 2010/5/14 Julio Rojas <jcredberry at gmail.com>
> >>>>>>>>
> >>>>>>>>> Dear all, I would like to define the matrix of parameters from a
> >> set.
> >>>> I
> >>>>>>>>> have tried with the following:
> >>>>>>>>>
> >>>>>>>>> set p := {.1,.2,.3};
> >>>>>>>>> param s[<i,j> in e2] := p[i in {1..card(p)}] default 0;
> >>>>>>>>> maximize sim: sum<i,j> in e2: s[i,j]*y[i,j];
> >>>>>>>>>
> >>>>>>>>> The following message appears:
> >>>>>>>>>
> >>>>>>>>> *** Error 800: File problem.zpl Line 7 : syntax error, unexpected
> >>>>>> SETSYM
> >>>>>>>>> *** param s[<i,j> in e2] := p[<i> in {1..card(p)}] default 0;
> >>>>>>>>> ***                         ^^^
> >>>>>>>>>
> >>>>>>>>> Is there a way to do this? Thanks in advance.
> >>>>>>>>> -------------------------------------------------
> >>>>>>>>> Julio Rojas
> >>>>>>>>> jcredberry at gmail.com
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> _______________________________________________
> >>>>>>>>> Scip mailing list
> >>>>>>>>> Scip at zib.de
> >>>>>>>>> http://listserv.zib.de/mailman/listinfo/scip
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>>
> >>>>>>>> Dr. Armin Fügenschuh
> >>>>>>>>
> >>>>>>>> Konrad-Zuse-Zentrum für
> >>>>>>>> Informationstechnik Berlin (ZIB)
> >>>>>>>>
> >>>>>>>> Division Scientific Computing
> >>>>>>>> Department Optimization
> >>>>>>>>
> >>>>>>>> Takustrasse 7
> >>>>>>>> 14195 Berlin
> >>>>>>>>
> >>>>>>>> Tel. : +49 (0)30 84185-205
> >>>>>>>> Fax: +49 (0)30 84185-269
> >>>>>>>> email: fuegenschuh at zib.de
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> Scip mailing list
> >>>>>>> Scip at zib.de
> >>>>>>> http://listserv.zib.de/mailman/listinfo/scip
> >>>>>>
> >>>>>> --
> >>>>>> The important thing is not to stop questioning.
> >>>>>> Curiosity has its own reason for existing.          -- Albert
> Einstein
> >>>>>>
> ______________________________________________________________________
> >>>>>> Dr. Thorsten Koch / Konrad-Zuse-Zentrum für Informationstechnik
> Berlin
> >>>>>> www.zib.de/koch  /          Takustraße 7, 14195 Berlin-Dahlem,
> >> Germany
> >>>>>> koch at zib.de     /                     Phone +49-30-84185-213, Fax
> >> -269
> >>>>>> _______________/  DFG Research Center "Matheon"
> >> http://www.matheon.de
> >>>>>>
> >>>>>> Kooperativer Bibliotheksverbund Berlin Brandenburg
> >> http://www.kobv.de
> >>>>>>
> ______________________________________________________________________
> >>>>>>
> >>>>>
> >>>>
> >>>> --
> >>>> The important thing is not to stop questioning.
> >>>> Curiosity has its own reason for existing.          -- Albert Einstein
> >>>> ______________________________________________________________________
> >>>> Dr. Thorsten Koch / Konrad-Zuse-Zentrum für Informationstechnik Berlin
> >>>> www.zib.de/koch  /          Takustraße 7, 14195 Berlin-Dahlem,
> Germany
> >>>> koch at zib.de     /                     Phone +49-30-84185-213, Fax
> -269
> >>>> _______________/  DFG Research Center "Matheon"
> http://www.matheon.de
> >>>>
> >>>> Kooperativer Bibliotheksverbund Berlin Brandenburg
> http://www.kobv.de
> >>>> ______________________________________________________________________
> >>>>
> >>>
> >>
> >> --
> >> The important thing is not to stop questioning.
> >> Curiosity has its own reason for existing.          -- Albert Einstein
> >> ______________________________________________________________________
> >> Dr. Thorsten Koch / Konrad-Zuse-Zentrum für Informationstechnik Berlin
> >> www.zib.de/koch  /          Takustraße 7, 14195 Berlin-Dahlem, Germany
> >> koch at zib.de     /                     Phone +49-30-84185-213, Fax -269
> >> _______________/  DFG Research Center "Matheon"  http://www.matheon.de
> >>
> >> Kooperativer Bibliotheksverbund Berlin Brandenburg  http://www.kobv.de
> >> ______________________________________________________________________
> >>
> >
>
> --
> The important thing is not to stop questioning.
> Curiosity has its own reason for existing.          -- Albert Einstein
> ______________________________________________________________________
> Dr. Thorsten Koch / Konrad-Zuse-Zentrum für Informationstechnik Berlin
> www.zib.de/koch  /          Takustraße 7, 14195 Berlin-Dahlem, Germany
> koch at zib.de     /                     Phone +49-30-84185-213, Fax -269
> _______________/  DFG Research Center "Matheon"  http://www.matheon.de
>
> Kooperativer Bibliotheksverbund Berlin Brandenburg  http://www.kobv.de
> ______________________________________________________________________
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserv.zib.de/mailman/private/scip/attachments/20100516/7acd2f51/attachment.html


More information about the Scip mailing list