<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Thank you for the availability of CMPL and the COIN-OR project.</p>
<p>I am trying to learn the language by developing a model of port
to port ocean transport with a relatively small set of ports (3
export serving 3 producing regions, 7 import serving 7 consuming
regions) eventually leading to a larger and more complex
situation. I come from a programming language background. I am
using Coliop4. <br>
</p>
<p>Any suggestions/advice much appreciated.<br>
</p>
<p>1) I have not found any tutorial information for beginners, only
the documentation. Is there anything like that available?</p>
<p>2) Is there a search function for the mailing list archive?<br>
</p>
<p>3) I have sets for producing and consuming regions and import
and export ports (see below). <br>
</p>
producing_regions := set
("SouthAmerica","Midwest","PacificNorthwest");<br>
export_ports[producing_regions] :=
("Santos","NewOrleans","Seattle"); <br>
consuming_regions := set("China", "Europe", "Mexico", "Japan",
"SoutheastAsia","FSU-MiddleEast","Korea");<br>
import_ports[consuming_regions] := ("ChinaIP", "EuropeIP",
"MexicoIP", "JapanIP",
"SoutheastAsiaIP","FSU-MiddleEastIP","KoreaIP");
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">I am interested in developing the set of routes
between all possible port pairs without having to directly
enumerate it, so that I could reference route("Santos","ChinaIP")
for the specifics of a particular route. Is there an easy way of
doing this within CMPL? I did it manually, as follows:</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">routes := set(
["Santos","ChinaIP"],["NewOrleans","ChinaIP"],["Seattle","ChinaIP"],</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">
["Santos","EuropeIP"],["NewOrleans","EuropeIP"],["Seattle","EuropeIP"],</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">
["Santos","MexicoIP"],["NewOrleans","MexicoIP"],["Seattle","MexicoIP"],</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">
["Santos","JapanIP"],["NewOrleans","JapanIP"],["Seattle","JapanIP"],</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">
["Santos","SoutheastAsiaIP"],["NewOrleans","SoutheastAsiaIP"],["Seattle","SoutheastAsiaIP"],</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">
["Santos","FSU-MiddleEastIP"],["NewOrleans","FSU-MiddleEastIP"],["Seattle","FSU-MiddleEastIP"],</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">
["Santos","KoreaIP"],["NewOrleans","KoreaIP"],["Seattle","KoreaIP"]);</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">4) I am also looking for the best way to
formulate a lookup situation. In this case, given the region, I
wish to know the port. I have created a correspondence parameter
with 2-tuples, as follows <br>
</p>
<p style="-qt-paragraph-type:empty; margin-top:0px;
margin-bottom:0px; margin-left:0px; margin-right:0px;
-qt-block-indent:0; text-indent:0px;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">producing_regions_export_ports_correspondence:=set(["SouthAmerica","Santos"],["Midwest","NewOrleans"],["PacificNorthWest","Seattle"]);</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">and I would like to be able, given "Midwest",
to return "NewOrleans". I can iterate over the set to find the
value, e.g.:</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"># below finds correspondence by looping through
all</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">{ [i,j] in
producing_regions_export_ports_correspondence:</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">{i="Midwest": echo j;}</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">}</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">but I am hoping there is a more direct way of
doing this.</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">Thank you in advance.<br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;"><br>
</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
margin-right:0px; -qt-block-indent:0; text-indent:0px;
-qt-user-state:0;">Dick Males<br>
</p>
<pre class="moz-signature" cols="72">--
Richard M. Males
3319 Eastside Avenue
Cincinnati, OH 45208
USA
</pre>
</body>
</html>