[Cmpl] beginner questions on problem formulation

Mike Steglich mike.steglich at th-wildau.de
Mon Oct 9 05:57:13 EDT 2017


Hello Richard,

I aplolgise for the delayed answer. It is the beginning of the new winter semester ...

Please see my answers below:

> Am 06.10.2017 um 21:46 schrieb Richard Males <males at iac.net>:
> 
> Thank you for the availability of CMPL and the COIN-OR project.
> 
> 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.  
> Any suggestions/advice much appreciated.
> 1) I have not found any tutorial information for beginners, only the documentation.  Is there anything like that available?
> 
Unfortunatly, not yet. There are additional CMPL sample files in the SolverStudio package that could help .... -> SolverStudio.org

> 2) Is there a search function for the mailing list archive?
> 
Unfortunately ... no 

> 3)   I have sets for producing and consuming regions and import and export ports (see below). 
> producing_regions := set ("SouthAmerica","Midwest","PacificNorthwest");
> export_ports[producing_regions] := ("Santos","NewOrleans","Seattle"); 
> consuming_regions := set("China", "Europe", "Mexico", "Japan", "SoutheastAsia","FSU-MiddleEast","Korea");
> import_ports[consuming_regions] := ("ChinaIP", "EuropeIP", "MexicoIP", "JapanIP", "SoutheastAsiaIP","FSU-MiddleEastIP","KoreaIP");
> 
> 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:
> 
> routes := set( ["Santos","ChinaIP"],["NewOrleans","ChinaIP"],["Seattle","ChinaIP"],
> ["Santos","EuropeIP"],["NewOrleans","EuropeIP"],["Seattle","EuropeIP"],
> ["Santos","MexicoIP"],["NewOrleans","MexicoIP"],["Seattle","MexicoIP"],
> ["Santos","JapanIP"],["NewOrleans","JapanIP"],["Seattle","JapanIP"],
> ["Santos","SoutheastAsiaIP"],["NewOrleans","SoutheastAsiaIP"],["Seattle","SoutheastAsiaIP"],
> ["Santos","FSU-MiddleEastIP"],["NewOrleans","FSU-MiddleEastIP"],["Seattle","FSU-MiddleEastIP"],
> ["Santos","KoreaIP"],["NewOrleans","KoreaIP"],["Seattle","KoreaIP"]);

It is not possible to do that directly at the moment. I do that usually in Excel using SolverStudio/Cmpl.

> 
> 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 
> 
> producing_regions_export_ports_correspondence:=set(["SouthAmerica","Santos"],["Midwest","NewOrleans"],["PacificNorthWest","Seattle"]);
> 
> and I would like to be able, given "Midwest", to return "NewOrleans".  I can iterate over the set to find the value, e.g.:
> # below finds correspondence by looping through all
> { [i,j] in producing_regions_export_ports_correspondence:
> {i="Midwest": echo j;}
> }
> but I am hoping there is a more direct way of doing this.

I would it also formulate as you did it. 

> 
> Thank you in advance.
> 
> Dick Males


Thanks,

Mike

> -- 
> Richard M. Males
> 3319 Eastside Avenue
> Cincinnati, OH 45208
> USA
> _______________________________________________
> Cmpl mailing list
> Cmpl at list.coin-or.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_cmpl&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=Axd0FVSisUT_OdEDVlxhf3NvdBaa93RFXxvaYiKoPpk&m=K4l9MsFAnb7IG8RLm1OmTljAU3p7_w-1dh0ed4FtXIw&s=IQZAtfLxw8ga3tsrVx7ihdZehHZvKIMKkzTpd_m9noY&e=
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cmpl/attachments/20171009/06c4bc59/attachment.html>


More information about the Cmpl mailing list