<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Michal,<div><br></div><div>Do you want to use the CMPL sources or to you plan to execute CMPL as an external process?</div><div><br></div><div>As mentioned before in the second case you don't have any license problems. It is also possible to combine GPL-licensed and EPL-licensed binaries in one distribution if they are not derivative works. &nbsp;I had a discussion in the OSI mailing list:&nbsp;<a href="http://projects.opensource.org/pipermail/license-discuss/2012-January/thread.html">http://projects.opensource.org/pipermail/license-discuss/2012-January/thread.html</a>. In this case you don't have to publish the source code of your own software.</div><div><br></div><div>If you plan to use the CMPL source code than you need a license like LGPL or EPL for your purposes. It is possible that we grant an individual license for your project. &nbsp;</div><div><br></div><div>Cheers</div><div><br></div><div>Mike</div><div><br></div><div><br><div><div>Am 02.02.2012 um 14:45 schrieb Michal Kaut:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hello Mike,<br><br>thanks for the answers.<br><br>Just a couple of comments:<br><br>1) Good to see that you think that tupel-sets 'are a "must have" of a<br>mathematical programming language'. (I have to work with Xpress and its<br>designers do not share this belief, so I have to write things like<br> &nbsp;forall (i, j in NODES | exists(Cost(i, j))) do<br>So, big thumb up for this one :-)<br><br>2) Looks like the new data format will address my concerns, thanks.<br><br>3) I do understand you reasons for liking GPL, but .. we I work at a company<br>that delivers solutions to customers. As far as I understand the licenses, we<br>could not combine CMPL and Cbc in one package and give/sell it to a customer, as<br>the two licenses are not compatible.<br>We could use GLPK as a solver, but it is significantly slower than Cbc for our<br>problems. In addition, we can not always give away the source codes, which we<br>would have to under GPL.<br><br>Anyway, I am looking forward to the new developments.<br><br><br>Regards,<br>Michal<br><br><br>On 02.02.2012 13:07, Mike Steglich wrote:<br><blockquote type="cite">Hi Michal,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Thank you for your interest in CMPL.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">1) Tupel-sets<br></blockquote><blockquote type="cite">We think also that tupel-sets (multi-dimensional sets) &nbsp;are a "must have" of a<br></blockquote><blockquote type="cite">mathematical programming language. <br></blockquote><blockquote type="cite">Therefore we are implementing tupel-sets and a new data file format at the moment. &nbsp;<br></blockquote><blockquote type="cite">Please download a CMPL presentation (INFORMS 2011) that gives you an impression<br></blockquote><blockquote type="cite">about these new CMPL features (beginning at slide 12).<br></blockquote><blockquote type="cite"><a href="http://www.coliop.org/download/cmplInforms2011.pdf">http://www.coliop.org/download/cmplInforms2011.pdf</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I think (hope) that we will release this &nbsp;version in April/May.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Until the release of the new version you can use a workaround. &nbsp;The idea is to<br></blockquote><blockquote type="cite">have a matrix that contains the valid combinations of indices and to use this<br></blockquote><blockquote type="cite">matrix for the definition of the variables, objective function and the constraints. <br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">For the transportation problem I have defined a matrix /r/ for the valid routes<br></blockquote><blockquote type="cite">between the sources /i/ and the destinations /j/. <br></blockquote><blockquote type="cite">r[,] := ( (1,1), (1,2) , (1,4), (2,2), (2,3) , (2,4), (3,1) , (3,3) );<br></blockquote><blockquote type="cite">The elements of/r/ are used for the definition of the variables/x[i,j]./<br></blockquote><blockquote type="cite">x[ r[i,1],r[i,2] ] <br></blockquote><blockquote type="cite">The entire problem can be formulated as follows:<br></blockquote><blockquote type="cite">parameters:<br></blockquote><blockquote type="cite">plants &nbsp;:= 1(1)3;<br></blockquote><blockquote type="cite">centers := 1(1)4;<br></blockquote><blockquote type="cite">s[plants] &nbsp;:= (5000,6000,2500);<br></blockquote><blockquote type="cite">d[centers] := (6000,4000,2000,1500);<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">c[plants,centers] := ( (3,2,7,6), (7,5,2,3),(2,5,4,5) );<br></blockquote><blockquote type="cite">#relevant routes<br></blockquote><blockquote type="cite">r[,] := ( (1,1), (1,2) , (1,4), (2,2), (2,3) , (2,4), (3,1) , (3,3) );<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">variables:<br></blockquote><blockquote type="cite">#definition of the vector x is based on the relevant routes in r[,]<br></blockquote><blockquote type="cite">{ i in defset(r[,1]) : x[ r[i,1],r[i,2] ]: real[0..]; }<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">objectives:<br></blockquote><blockquote type="cite">costs: sum{i in defset(r[,1]) : c[ r[i,1],r[i,2] ] * x[ r[i,1],r[i,2] ] } -&gt;min;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">constraints:<br></blockquote><blockquote type="cite">#extended by a check whether a x[i,j] is a valid route<br></blockquote><blockquote type="cite">supplies {i in plants &nbsp;: sum{j in centers, count(x[i,j])&gt;0 : x[i,j] &nbsp;} &lt;= s[i];}<br></blockquote><blockquote type="cite">demands &nbsp;{j in centers : sum{i in plants, &nbsp;count(x[i,j])&gt;0 : x[i,j] &nbsp;} = &nbsp;d[j];} <br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">This is actually not a smart approach but it works.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">2) You are right, in CMPL all entities are declared and initiated at the same<br></blockquote><blockquote type="cite">moment. <br></blockquote><blockquote type="cite">I assume that you want to implement and test a model independently from the<br></blockquote><blockquote type="cite">(real) data. &nbsp;<br></blockquote><blockquote type="cite">Our idea is to create and test a model with dummy data. The values of the sets<br></blockquote><blockquote type="cite">and parameters can be read by using /include/ or /readcsv/() (and later with the<br></blockquote><blockquote type="cite">CMPL new data file format). <br></blockquote><blockquote type="cite">For solving a real problem you only have to exchange the dummy date file by your<br></blockquote><blockquote type="cite">real data file. &nbsp;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">3) GPL / EPL<br></blockquote><blockquote type="cite">This issue is (unfortunately) still under discussion. As you mentioned we have<br></blockquote><blockquote type="cite">got some requests in this mailing list that I answered directly and not via the<br></blockquote><blockquote type="cite">mailing list. I had also a discussion with Kipp Martin (COIN-OS).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">We like the idea of "give and take" and we think that GPL is the best way to<br></blockquote><blockquote type="cite">share software in this manner. &nbsp;But we see also the problem that GPL isn't<br></blockquote><blockquote type="cite">compatible to EPL and to commercial licenses if the source code is to be shared.<br></blockquote><blockquote type="cite">Therefore we are looking for approaches to avoid these problems. One alternative<br></blockquote><blockquote type="cite">is to have a dual license (GPL or EPL). The second possibility is to grant an<br></blockquote><blockquote type="cite">individual license to a specific project. <br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">But this issue is only relevant if you want to share source code. &nbsp;If you only<br></blockquote><blockquote type="cite">want to use CMPL as an external process (e.g. via Java ProcessBuilder) then you<br></blockquote><blockquote type="cite">don' have any license problems. &nbsp;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Cheers<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Mike<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Am 02.02.2012 um 09:58 schrieb Michal Kaut:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">Hello,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">We are considering using CMPL (it looks very promising), but have a couple of<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">questions first:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">1. Looking at the examples in the manual, I do not see any multi-dimensional<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">sets. For example, in the Transportation problem, if we did not have all-to-all<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">links, I would find it natural to define set 'links' being a subset of 'plants X<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">centers' and index 'c' on that set. The objective would then be<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"> costs: sum{(i, j) in links : c[i,j] * x[i,j] } ­-&gt;min;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Is this possible in CMPL?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">And if not, can I at least define c only on a subset of 'plants X centers'<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">(without giving the subset a name)?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">2. As far as I can see, all entities are declared and initiated at once - does<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">it mean that it is not possible to declare an entity (for ex. to say that S is a<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">set), and give it values some time later?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">3. I guess you do not like this question, since you did not respond to it<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">previously, but I try nevertheless: why GPL? Would you at least consider dual<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">licensing with CPL or EPL, to make it compatible with the other Coin-OR projects?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Thanks a lot in advance.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Regards,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Michal Kaut<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Cmpl mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="mailto:Cmpl@list.coin-or.org">Cmpl@list.coin-or.org</a> &lt;<a href="mailto:Cmpl@list.coin-or.org">mailto:Cmpl@list.coin-or.org</a>&gt;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://list.coin-or.org/mailman/listinfo/cmpl">http://list.coin-or.org/mailman/listinfo/cmpl</a><br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">---------------------------------------------------------------------------<br></blockquote><blockquote type="cite">Freehosting PIPNI - <a href="http://www.pipni.cz/">http://www.pipni.cz/</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote></div></blockquote></div><br></div></body></html>