You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(11) |
Nov
(4) |
Dec
(7) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(2) |
Feb
(8) |
Mar
(13) |
Apr
(1) |
May
(2) |
Jun
(5) |
Jul
(7) |
Aug
(1) |
Sep
(1) |
Oct
(9) |
Nov
(1) |
Dec
(15) |
2006 |
Jan
(2) |
Feb
(3) |
Mar
(1) |
Apr
(1) |
May
(10) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(6) |
Dec
|
2007 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(14) |
Jul
(3) |
Aug
|
Sep
(7) |
Oct
(13) |
Nov
(4) |
Dec
(7) |
2008 |
Jan
(1) |
Feb
(4) |
Mar
(2) |
Apr
(7) |
May
(4) |
Jun
(17) |
Jul
(20) |
Aug
(7) |
Sep
(23) |
Oct
(18) |
Nov
(47) |
Dec
(51) |
2009 |
Jan
(35) |
Feb
(20) |
Mar
(32) |
Apr
(38) |
May
(119) |
Jun
(99) |
Jul
(65) |
Aug
(22) |
Sep
(24) |
Oct
(39) |
Nov
(9) |
Dec
(10) |
2010 |
Jan
(8) |
Feb
(8) |
Mar
(76) |
Apr
(72) |
May
(80) |
Jun
(83) |
Jul
(28) |
Aug
(57) |
Sep
(25) |
Oct
(3) |
Nov
|
Dec
(1) |
2011 |
Jan
(2) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2014 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(4) |
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <gro...@em...> - 2005-02-04 15:15:43
|
Hi, That is a very good idea :-) Since I do not know what is possible to do on Sourceforge, I propose to s= tart by a manual repository: when a user want to submit a constraint, he will sen= d me a mail with a brief description. I will then add it to the Choco web site. See http://choco.sourceforge.net/contrib/contribution.html to see what I prop= ose more precisely. Do you think this solution is correct ? Anyway, I do not think I will rec= eive hundreds of constraints per day, at least right now (maybe next year :)) See you, Regards, Guillaume Selon R=E9mi COLETTA <co...@li...>: > Hello, > I use Choco since few months and i really appreciate the work > you have done :-) > However, it suffer of a major drawback: the small number of > constraints available. > > However i know some of you have develloped their own constraints. > I know your policy is to put on CVS only "stable" constraints, > but perhaps a second repository could be introduced. In which, > you could post your "testing" constraints, and also allow Choco > user to give the constraints, they have programmed ... > > This way, such constraints are more tested. Their authors > receive more feedback. If this feedback is negative, authors > improve the constraints. Else they become stable ;-) > > What about this proposition ? > > -- > R=E9mi COLETTA > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > Choco-users mailing list > Cho...@li... > https://lists.sourceforge.net/lists/listinfo/choco-users > ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. |
From: <gro...@em...> - 2005-02-04 13:38:10
|
Hi, A new version has just been published (1.0b002)... one of the last versio= ns befor the 1.0 release !! :) Hadrien and I added a little API to manage limits. When the solving stops= , you can call isEncounteredLimit() to know if a limit has been reached, and getEncounteredLimit() to get the reached limit. In your case, you juste have to check the limit is the time limit and you= have your answer. This is just more general than your solution. Moreover in this new version, you canfind : - some global constraint (namely gcc and alldiff) - extension constraints (thans to Hadrien !) Hope it helps, Regards, Guillaume Selon R=E9mi COLETTA <co...@li...>: > Hello, > > I'm using the TimeLimit in Choco... And i wonder if this feature > could be improved ? > > Indeed currently, we have no way to know if the TimeLimit has been > rechead: > When the solve() return true it's ok, but else we aren't able > to distinguishif the TimeLimit has been rechead or if the problem > has no solution... > > This can be fix it easy, as done in the attached file TimeLimit2... > But this were great if this could be integrated directly in choco > (by adding a method isTimeLimitReachead() in Solver) ? > > Thanks, > -- > Remi COLETTA > ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. |
From: C. <co...@li...> - 2005-02-04 07:41:10
|
Hello, I use Choco since few months and i really appreciate the work you have done :-)=09 However, it suffer of a major drawback: the small number of constraints available.=20 However i know some of you have develloped their own constraints. I know your policy is to put on CVS only "stable" constraints, but perhaps a second repository could be introduced. In which,=20 you could post your "testing" constraints, and also allow Choco user to give the constraints, they have programmed ... This way, such constraints are more tested. Their authors receive more feedback. If this feedback is negative, authors improve the constraints. Else they become stable ;-) What about this proposition ? -- R=E9mi COLETTA |
From: C. <co...@li...> - 2005-02-04 07:24:47
|
Hello, I'm using the TimeLimit in Choco... And i wonder if this feature could be improved ? Indeed currently, we have no way to know if the TimeLimit has been rechead: When the solve() return true it's ok, but else we aren't able to distinguishif the TimeLimit has been rechead or if the problem has no solution... This can be fix it easy, as done in the attached file TimeLimit2... But this were great if this could be integrated directly in choco (by adding a method isTimeLimitReachead() in Solver) ? Thanks, -- Remi COLETTA |
From: Hadrien C. <had...@em...> - 2005-01-21 09:00:26
|
Hi The infeasPairConstraint is not yet available in the current version of = choco.=20 I have started to implement AC3 and AC4 algorithms for binary = constraints and I plan to put it under CVS=20 during the next week as soon as full tests and api is written. (let me = know if you need the code immediatly, I can send it)=20 However, the general case of n-ary constraints defined by a list of = feasible tuples is still to do as well as as some other AC algorithms like AC2001.=20 Regards, Hadrien ----- Original Message -----=20 From: Patrick Prosser=20 To: cho...@li...=20 Sent: Thursday, January 20, 2005 5:13 PM Subject: [Choco-users] infeasPairConstraint Hi First, thanks to all involved in making JChoco available. Let's hope = it flourishes! Do we have the equivalent of the infeasPairConstraint yet? Or is this = a challenge for the new user :) cheers Patrick -- Patrick Prosser tel: +44 141 330 4934 Computing Science fax: +44 141 330 4913 Glasgow University mail: pa...@dc... G12 8RZ =20 http://www.dcs.gla.ac.uk/~pat=20 |
From: Patrick P. <pa...@dc...> - 2005-01-20 16:13:51
|
Hi First, thanks to all involved in making JChoco available. Let's hope it flourishes! =20 Do we have the equivalent of the infeasPairConstraint yet? Or is this a challenge for the new user :) =20 cheers =20 Patrick =20 -- Patrick Prosser tel: +44 141 330 4934 Computing Science fax: +44 141 330 4913 Glasgow University mail: pa...@dc... G12 8RZ =20 http://www.dcs.gla.ac.uk/~pat=20 =20 |
From: Mark U. <ma...@cs...> - 2004-12-16 11:21:45
|
Guillaume Rochart wrote: >Your mail is very interesting. We have just started to test Choco performance, >since this was not our first requirement. But Sure, it is obviously a >critical aspect of the solver. > >We made some improvement since the last release on the web site. This in on >the CVS, but we will send you a jar directly (and publish it as soon as >possible, next week we think) compared to the claire version of choco. > >If we try the NQueens problem on a 3 GHz machine (JDK 1.4.2_03), with the >server mode and 13 queens, we find all solutions in 60 seconds >approximatively, which is much more acceptable. > > Excellent! When I try this new version with my benchmarks, it now shows that Choco/Java (with JDK1.4.2 -server mode) is only 1.4 times slower than the old C++ version of Choco. (The results with JDK 1.5 server mode were roughly the same). This is an excellent result. > >Moreover we plan some improvements like observer lists for each variables, >lazy iterator building, simplified propagation queue... but we still need to >test these improvements to check their correctness. > >Another point is that the JDK 1.5 is quite more efficient with Choco (at least >in client mode). So it may be a good idea to use this new version. > >Could just try again your benchmark with the new build we will send you >separately ? > Here it is again, with two extra lines added for Choco1.0. RESULTS N = 4 5 6 7 8 9 10 11 12 13 14 ======= SICStus Prolog clpfd: 0 0 0 0 0 0 .1 .5 1.8 8.7 47 (compiled with 3.11.2) Choco/C++ (Claire) 0 0 0 0 0 .1 .3 1.5 7.6 42.8 248 (Choco1.326, Claire3.3.40) Choco.sf.net/Java client .3 .3 .4 .5 .6 1.1 3.1 12.2 64.0 396.0 2002 (choco-0.9, JDK 1.4.2_03) Choco.sf.net/Java server .4 .4 .4 .8 1.2 2.1 3.8 10.3 44.2 226.2 1323 (choco-0.9, JDK 1.4.2_03 -server) CHR with domain.pl .5 5.0 265 --- --- --- --- --- --- --- --- (SICstus chr/examples/domain.pl) Choco.sf.net/Java server - - - - .8 1.1 1.9 3.8 11.8 50.9 339 NEW (choco-1.0b001, JDK 1.4.2_03 -server) Choco.sf.net/Java server - - - - .8 1.3 1.8 3.8 13.0 60.2 352 NEW (choco-1.0b001, JDK 1.5.0 -server) And the old and new ratios versus Choco in C++. Ratio of ChocoJava0.9(server) / ChocoC++ : 26 12 6.9 5.8 5.3 5.3 Ratio of ChocoJava1.0(server) / ChocoC++ : 14 6 2.6 1.6 1.4 1.4 NEW :-) (Both these use JDK1.4.2) > > * Moreover, we chose BSD license to allow everybody to use the project even >in a commercial context. > > Yes, this makes it useful for commercial companies like us. Thanks for your prompt and helpful responses. Mark. |
From: Guillaume R. <Gui...@em...> - 2004-12-14 10:17:55
|
Dear Choco users, We added a new unstable version (1.0b001) of Choco with some new features: * We improved efficiency (mainly by optimizing logging) * We added Conflict-based Back Jumping (CBJ) which allows to get explanations without using dynamic features needed by Dynamic Backtracking. * Some bug fixes Some more tests and some global constraints will be added to Choco before publishing the release 1.0. Regards, Hadrien and Guillaume |
From: Guillaume R. <Gui...@em...> - 2004-12-10 16:25:55
|
Dear Mark, Your mail is very interesting. We have just started to test Choco performance, since this was not our first requirement. But Sure, it is obviously a critical aspect of the solver. We made some improvement since the last release on the web site. This in on the CVS, but we will send you a jar directly (and publish it as soon as possible, next week we think) compared to the claire version of choco. If we try the NQueens problem on a 3 GHz machine (JDK 1.4.2_03), with the server mode and 13 queens, we find all solutions in 60 seconds approximatively, which is much more acceptable. Moreover we plan some improvements like observer lists for each variables, lazy iterator building, simplified propagation queue... but we still need to test these improvements to check their correctness. Another point is that the JDK 1.5 is quite more efficient with Choco (at least in client mode). So it may be a good idea to use this new version. Could just try again your benchmark with the new build we will send you separately ? Thank you for helping ! > 1. How much of this slowdown is because the Java version is relatively new > and not yet optimized, and how much is due to Java versus C++ speed? I think a lot of the slowdown was due to the first versions of Choco. The current CVS version is much more faster and we hope this will improve in future version thanks to the users help :). But there will be always an overhead due to the Java technology (even if SUN try to improve it as much as possible). > 3. Is Choco.sf.net likely to be a good option for us, if we want to use > just its integer solver, but extend it with hooks to report changes > in domains etc? Sure it is ! * First Choco was designed to be easily extendable and we experience it very often (to add new feature like new domain, new search (conflict directed backjumping last weeks), Oadymppac traces thanks to AspectJ...) * Moreover, we chose BSD license to allow everybody to use the project even in a commercial context. So you are welcome to use it (and certainly to help us to improve it !). Thank you for your mail, Best regards, Hadrien Cambazard and Guillaume Rochart |
From: Maurice D. <Mau...@en...> - 2004-12-10 13:37:47
|
Le 10 d=E9c. 04, =E0 13:06, Mark Utting a =E9crit : > I've used the N queens problem (ALL solutions -- details below) to > benchmark various integer/finite-domain solvers to compare their basic > efficiency of triggering constraints, labeling and backtracking. The problem with looking for all solutions is that you are testing the performance of "propagation engine" + "enumeration solver". My feeling is that the enumeration solver from choco could be improve and it is not the main advantage of choco. In the other side, it would be nice to have such a test for the "propagation engine" only, which is the core and the main advantage of choco. Also your problem, which is the same as a previous one of mine, is that choco seems too be design for somebody which eventually use other tools as a brick, and not the opposite as you'like to. So I'd hope a stong separation between these two fonctionnality of Choco : - the "propagation engine" - the enumeration system which all the "Solver" "Solve" "Solving" "Solvare" and other "BranchingTrace" classes I hope to provide a "solver lite" system, easiest to personalised, while keeping compatibility with choco current features. But this projet is now sleeping as I'm belated on other projects. Anyhow, thank your for your bench, and I hope some choco guru will had and maintain such a bench with the choco distribution. > 3. Is Choco.sf.net likely to be a good option for us, if we want to = use > just its integer solver, but extend it with hooks to report changes > in domains etc? It depend of what you call "Solver". You could build you own "dedicate enumSolver lite", and only use th constraint propagation system from choco. -- Maurice Diamantini |
From: Mark U. <ma...@cs...> - 2004-12-10 12:07:09
|
Hi, I am working for a commercial company (Leirios Technologies), using CLP techniques with multiple constraint solvers for test generation purposes. We have been using SICStus Prolog clpfd for the integer solver, but are investigating the possibility of using Choco/Java instead. [ because we need an integer solver that we can closely integrate with our other solvers -- eg. we want to modify the integer solver to communicate with the other solvers whenever it reduces the domain of an integer variable. ] I've used the N queens problem (ALL solutions -- details below) to benchmark various integer/finite-domain solvers to compare their basic efficiency of triggering constraints, labeling and backtracking. RESULTS N = 4 5 6 7 8 9 10 11 12 13 14 ======= SICStus Prolog clpfd: 0 0 0 0 0 0 .1 .5 1.8 8.7 47 (compiled with 3.11.2) Choco/C++ (Claire) 0 0 0 0 0 .1 .3 1.5 7.6 42.8 248 (Choco1.326, Claire3.3.40) Choco.sf.net/Java client .3 .3 .4 .5 .6 1.1 3.1 12.2 64.0 396.0 2002 (choco-0.9, JDK 1.4.2_03) Choco.sf.net/Java server .4 .4 .4 .8 1.2 2.1 3.8 10.3 44.2 226.2 1323 (choco-0.9, JDK 1.4.2_03 -server) CHR with domain.pl .5 5.0 265 --- --- --- --- --- --- --- --- (SICstus chr/examples/domain.pl) Ratio of ChocoJava(client) / ChocoC++ : 14 10 8.2 8.4 9.3 8.1 Ratio of ChocoJava(server) / ChocoC++ : 26 12 6.9 5.8 5.3 5.3 CONCLUSIONS =========== 1. ChocoJava is about 8-9 times slower than the earlier C++ version! (Or 5 times slower if you use the Java server JVM, rather than the default client JVM). 2. SICStus clpfd is very fast in comparison to both versions of Choco. (but it is also very complex and hard to extend with hooks so that it can be integrated more closely with other solvers -- this is why we are looking for alternatives). QUESTIONS ========= 1. How much of this slowdown is because the Java version is relatively new and not yet optimized, and how much is due to Java versus C++ speed? 2. Is this slowdown a known issue? Are there ideas/plans for improving performance? 3. Is Choco.sf.net likely to be a good option for us, if we want to use just its integer solver, but extend it with hooks to report changes in domains etc? BENCHMARK DETAILS: All the versions of the N queens are similar, with N membership constraints (Qi in 1..N) and 3*N*(N-1)/2 inequality constraints (Qi /= Qj + k) Then I'm using labeling (backtracking search) to produce ALL solutions. This was done on a Pentium 4 2.8GHz with 1G ram, running Windows XP. The Java JVMs were run with the default memory size. The Claire Choco was run with -s 6 6, which I think sets its max memory size to about 64Mb -- it uses much less than that. Thanks! Mark. Senior Lecturer, Department of Computer Science The University of Waikato, Private Bag 3105, Hamilton, NZ. http://www.cs.waikato.ac.nz/~marku |
From: Hadrien C. <had...@em...> - 2004-12-09 09:02:09
|
Dear Guillaume, Boolean constraints were implemented in Claire. You can have a look to the claire code to have a better. idea of how it works. Nevertheless, the implementation is quite complex and need to add some behaviour on ALL constraints since we have to explain why any constraint can be entailed or rejected. Therefore your proposal on the disjunctive will not be enough anyway (even if you implement the whyIsTrue(), whyIsFalse() methods correctly). Explanations for the whole problem will not be correct which can imply a bad behaviour during the search (as you observed). We hope this feature will be available soon. But if you have the courage to port the claire version into java, we are interested :) Guillaume and Hadrien ----- Original Message ----- From: "Guillaume Nodet" <gui...@de...> To: <cho...@li...> Sent: Wednesday, December 08, 2004 9:42 AM Subject: [Choco-users] Explained binary disjunctive constraint > Would it be possible to add a palm binary disjunctive constraint to the > library ? > > I've tried to do it, but my understanding of palm internals is not > sufficient to > have an optimized version. Following is the version i have which seems to > work > but does not handle whyIsTrue and whyIsFalse in addition to have a non > optimal > value restoration process. > > Additionaly, i've got a problem with palm: i'm trying to solve a problem, > but the solver does not stop. It keeps looping on the same decision > constraints set. > Can this behavior be the result of the very ugly disjunction constraint i > wrote ? > > Thanks, > > Guillaume Nodet > > > public class PalmBinDisjunction extends BinDisjunction implements > PalmConstraint, PalmIntVarListener { > public PalmBinDisjunction(AbstractConstraint c1, AbstractConstraint > c2) { > super(c1, c2); > this.hook = ((ExplainedProblem) > this.getProblem()).makeConstraintPlugin(this); > ((PalmConstraintPlugin) c1.getPlugIn()).addControl(this, 0); > ((PalmConstraintPlugin) c2.getPlugIn()).addControl(this, 1); > } > > public void setTargetStatus(int constIdx, boolean st) { > if (st) { > Constraint c0 = constIdx == 0 ? const0 : const1; > Constraint c1 = constIdx == 0 ? const1 : const0; > PalmExplanation expl = (PalmExplanation) ((ExplainedProblem) > this.getProblem()).makeExplanation(); > expl.addAll(((PalmIntVarListener) c1).whyIsFalse()); > ((PalmConstraintPlugin) c0.getPlugIn()).setIndirect(expl); > } > } > > public void addListener() { > super.addListener(); > int idx = ((PalmConstraintPlugin) this.hook).getConstraintIdx(); > ((PalmConstraintPlugin) > const0.getPlugIn()).setConstraintIdx(idx); > ((PalmConstraintPlugin) > const1.getPlugIn()).setConstraintIdx(idx); > } > > public void takeIntoAccountStatusChange(int index) { > statusBitVector.set(0); > } > > public void updateDataStructuresOnConstraint(int idx, int select, > int newValue, int oldValue) { > statusBitVector.set(0); > } > > public void updateDataStructuresOnRestoreConstraint(int idx, int > select, int newValue, int oldValue) { > statusBitVector.set(0); > } > > public void awakeOnRestoreInf(int idx) throws ContradictionException > { > statusBitVector.set(0); > propagate(); > } > > public void awakeOnRestoreSup(int idx) throws ContradictionException > { > statusBitVector.set(0); > propagate(); > } > > public void awakeOnRestoreVal(int idx, int val) throws > ContradictionException { > statusBitVector.set(0); > propagate(); > } > > public void awakeOnRestoreVal(int idx, IntIterator it) throws > ContradictionException { > statusBitVector.set(0); > propagate(); > } > > public Set whyIsTrue() { > return null; > } > > public Set whyIsFalse() { > return null; > } > > public String toString() { > return const0.toString() + " v " + const1.toString(); > } > } > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://productguide.itmanagersjournal.com/ > _______________________________________________ > Choco-users mailing list > Cho...@li... > https://lists.sourceforge.net/lists/listinfo/choco-users > |
From: Guillaume N. <gui...@de...> - 2004-12-08 08:42:44
|
Would it be possible to add a palm binary disjunctive constraint to the library ? I've tried to do it, but my understanding of palm internals is not sufficient to have an optimized version. Following is the version i have which seems to work but does not handle whyIsTrue and whyIsFalse in addition to have a non optimal value restoration process. Additionaly, i've got a problem with palm: i'm trying to solve a problem, but the solver does not stop. It keeps looping on the same decision constraints set. Can this behavior be the result of the very ugly disjunction constraint i wrote ? Thanks, Guillaume Nodet public class PalmBinDisjunction extends BinDisjunction implements PalmConstraint, PalmIntVarListener { public PalmBinDisjunction(AbstractConstraint c1, AbstractConstraint c2) { super(c1, c2); this.hook = ((ExplainedProblem) this.getProblem()).makeConstraintPlugin(this); ((PalmConstraintPlugin) c1.getPlugIn()).addControl(this, 0); ((PalmConstraintPlugin) c2.getPlugIn()).addControl(this, 1); } public void setTargetStatus(int constIdx, boolean st) { if (st) { Constraint c0 = constIdx == 0 ? const0 : const1; Constraint c1 = constIdx == 0 ? const1 : const0; PalmExplanation expl = (PalmExplanation) ((ExplainedProblem) this.getProblem()).makeExplanation(); expl.addAll(((PalmIntVarListener) c1).whyIsFalse()); ((PalmConstraintPlugin) c0.getPlugIn()).setIndirect(expl); } } public void addListener() { super.addListener(); int idx = ((PalmConstraintPlugin) this.hook).getConstraintIdx(); ((PalmConstraintPlugin) const0.getPlugIn()).setConstraintIdx(idx); ((PalmConstraintPlugin) const1.getPlugIn()).setConstraintIdx(idx); } public void takeIntoAccountStatusChange(int index) { statusBitVector.set(0); } public void updateDataStructuresOnConstraint(int idx, int select, int newValue, int oldValue) { statusBitVector.set(0); } public void updateDataStructuresOnRestoreConstraint(int idx, int select, int newValue, int oldValue) { statusBitVector.set(0); } public void awakeOnRestoreInf(int idx) throws ContradictionException { statusBitVector.set(0); propagate(); } public void awakeOnRestoreSup(int idx) throws ContradictionException { statusBitVector.set(0); propagate(); } public void awakeOnRestoreVal(int idx, int val) throws ContradictionException { statusBitVector.set(0); propagate(); } public void awakeOnRestoreVal(int idx, IntIterator it) throws ContradictionException { statusBitVector.set(0); propagate(); } public Set whyIsTrue() { return null; } public Set whyIsFalse() { return null; } public String toString() { return const0.toString() + " v " + const1.toString(); } } |
From: Eric B. <Eri...@ce...> - 2004-11-22 10:38:22
|
je voudrais successivement resoudre un meme probleme en changeant seulement la fonction objectif comment fait on pour restaurer l 'etat initial (domaine des variables, contraintes etc) avant chaque nouvelle recherche et cela sans avoir a reposer le probleme Eric Bensana |
From: Hadrien C. <had...@em...> - 2004-11-15 16:39:18
|
Hi, The limits are updated and checked each time a new node is created. So the difference between the maximum and the time printed is due to the fact that time is needed to go up in the search tree. The current version is not completely implemented but in the next version (already in the cvs but not yet published), '35[+10] nodes' will mean that a total of 35 nodes were needed to reach the previous solution and 10 more nodes were explored to get the next one. To define your own limits/statitistics, don't use a varselector :) (bad idea) but instead create a limit object. Documentation will be available asap but for the moment, you can have look to the following code which give you an example of your depth statistic and how to use it (in the main on the nqueen problem). hope it helps Hadrien and Guillaume import choco.search.AbstractGlobalSearchLimit; import choco.search.AbstractGlobalSearchSolver; import choco.Problem; import choco.Solver; import choco.integer.IntVar; import java.util.logging.Logger; public class DepthLimit extends AbstractGlobalSearchLimit { public DepthLimit(AbstractGlobalSearchSolver theSolver,int theLimit) { super(theSolver,theLimit); unit = "deep"; } public boolean newNode(AbstractGlobalSearchSolver solver) { nb = Math.max(nb, this.getProblem().getWorldIndex() - this.getProblem().getSolver().getSearchSolver().baseWorld); return (nb < nbMax); } public boolean endNode(AbstractGlobalSearchSolver solver) { return true; } public void reset(boolean first) { if (first) { nbTot = 0; } else { nbTot = Math.max(nbTot, nb); } nb = 0; } public static void main(String[] args) { Problem pb = new Problem(); int n = 10; IntVar[] queens = new IntVar[n]; for (int i = 0; i<n; i++) { queens[i] = pb.makeEnumIntVar("Q" + i,1,n); } for (int i=0; i<n; i++) { for (int j=i+1; j<n; j++) { int k = j - i; pb.post(pb.neq(queens[i], queens[j])); pb.post(pb.neq(queens[i], pb.plus(queens[j], k))); // diagonal constraints pb.post(pb.neq(queens[i], pb.minus(queens[j], k))); // diagonal constraints } } Solver s = pb.getSolver(); s.setFirstSolution(false); s.generateSearchSolver(pb); s.getSearchSolver().limits.add(new DepthLimit(s.getSearchSolver(),Integer.MAX_VALUE)); s.launch(); Logger.getLogger("choco").getHandlers()[0].flush(); } } |
From: C. <co...@li...> - 2004-11-15 13:49:35
|
Hello, I'm playing with the TimeLimit features and there are few points i'm a bit confuse with: Inserting into my code the instruction "solver.setTimeLimit(1000);", i obtain the following result: -- solve => no solution -- 2364[+0]/1000 millis. -- 35[+0] nodes There is a small decalage between the real used time and the expected one, i suggest it's due to the use of thread and it isn't really a problem ;-) I wonder what mean the "[+0]" strings ? That leads me to the second point, i would like to capture the deepness of the search (i mean the maximum number of variables, which have been instanciated during the search in the Time Limit). I was thinking using the VarSelector to do that, but it's appear to be a bit geek ;-) Anyway, where is located the peace of code called when the TimeLimit is finish ? Thanks you very much for your help, -- Remi COLETTA |
From: Zampelli S. <sz...@in...> - 2004-11-13 15:08:56
|
Hi everyone, I would like to know what are the features of java choco. Mainly : - Does choco handle binary domains ? - Does choco handle global constraints (like alldiff, etc) ? - How deep is the real domain implementation ? May it be used for real problems ? Are Iceberg and Sugar also ported to java ? Final question : I was told claire + choco is dead, is that true ? Thank you, sz. |
From: Sylvain B. <syl...@ce...> - 2004-10-29 06:29:14
|
Hello, I tried to used some stored types like choco.mem.StoredVector, but some methods don't seem to be implemented yet. For instance, we can't remove a value, and the method iterator() returns null. Will it be corrected soon, or will the class StoredVector be redesigned as a list ? -- Sylvain Bouveret. |
From: <fra...@ya...> - 2004-10-28 10:24:08
|
Hi Rémi, first of all, we encoded the simple APIs for optimisation (Michel was asking about them) yesterday. They should be published anytime, as soon as a new version (0.91 ?) is released (Guillaume, can you please do it ?) Concerning the example that you mention, it seems to work perfectly: you want to optimize v1+v2+v3 and you assign values by decreasing order, so the first solution found is the optimal: v1,v2,v3 are all set to the maximum of their domain, which is 10. I do not see what is wrong. François --- coletta <co...@li...> a écrit : > Le lun, 25/10/2004 à 14:08 +0200, Hadrien Cambazard > a écrit : > > > The api concerning minization and maximization in > not yet available on the > > Problem object. However, you can look at the > following code which give you > > an example of minimization. You only need to use > the Solver object and > > specify a couple of options : > > > > public static void main(String[] args) { > > Problem pb = new Problem(); > > IntVar fctObj = > pb.makeBoundIntVar("objectif",-10,1000); > > IntVar v1 = pb.makeEnumIntVar("v1",1,10); > > IntVar v2 = pb.makeEnumIntVar("v2",-3,10); > > IntVar v3 = pb.makeEnumIntVar("v3",1,10); > > > > pb.post(pb.eq(pb.sum(new > IntVar[]{v1,v2,v3}),fctObj)); > > > > > > Solver solver = pb.getSolver(); > > solver.setDoMaximize(false); > > solver.setObjective(fctObj); > > solver.setRestart(false); > > solver.setFirstSolution(true); > > solver.generateSearchSolver(pb); > > solver.launch(); > > } > > Hello guys, > > I'm sorry, but i don't seem to work :-( > By selecting another Value Ordering, for instance: > inserting the line "solver.setValIterator(new > DecreasingDomain());", > i obtain: > > $ java Test > ... solution with cost objectif:30 > Pb[4 vars, 1 cons] > objectif[30, 30] > v1{10} > v2{10} > v3{10} > > Do i miss something ? > > -- > Rémi > > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide > on ITManagersJournal > Use IT products in your business? Tell us what you > think of them. Give us > Your Opinions, Get Free ThinkGeek Gift Certificates! > Click to find out more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Choco-users mailing list > Cho...@li... > https://lists.sourceforge.net/lists/listinfo/choco-users > Vous manquez despace pour stocker vos mails ? Yahoo! Mail vous offre GRATUITEMENT 100 Mo ! Créez votre Yahoo! Mail sur http://fr.benefits.yahoo.com/ Le nouveau Yahoo! Messenger est arrivé ! Découvrez toutes les nouveautés pour dialoguer instantanément avec vos amis. A télécharger gratuitement sur http://fr.messenger.yahoo.com |
From: Hadrien C. <had...@em...> - 2004-10-27 06:41:18
|
Hello, That's true, the "solver.setFirstSolution(true)" should be a "solver.setFirstSolution(false);". we need to quickly define the api to avoid such mistakes. public static void main(String[] args) { Problem pb =3D new Problem(); IntVar fctObj =3D pb.makeBoundIntVar("objectif",-10,1000); IntVar v1 =3D pb.makeEnumIntVar("v1",1,10); IntVar v2 =3D pb.makeEnumIntVar("v2",-3,10); IntVar v3 =3D pb.makeEnumIntVar("v3",1,10); pb.post(pb.eq(pb.sum(new IntVar[]{v1,v2,v3}),fctObj)); Solver solver =3D pb.getSolver(); solver.setDoMaximize(false); solver.setObjective(fctObj); solver.setRestart(false); solver.setFirstSolution(false); solver.setValIterator(new DecreasingDomain()); solver.generateSearchSolver(pb); solver.launch(); } You will finally obtain : ... solution with cost objectif:-1 0[+15] millis. 0[+3] nodes Pb[4 vars, 1 cons] objectif[-1, -1] v1{1} v2{-3} v3{1} Hadrien ----- Original Message -----=20 From: "coletta" <co...@li...> To: <cho...@li...> Sent: Tuesday, October 26, 2004 6:03 PM Subject: Re: [Choco-users] maximize/minimize > Le lun, 25/10/2004 =E0 14:08 +0200, Hadrien Cambazard a =E9crit : > > > The api concerning minization and maximization in not yet available o= n the > > Problem object. However, you can look at the following code which giv= e you > > an example of minimization. You only need to use the Solver object an= d > > specify a couple of options : > > > > public static void main(String[] args) { > > Problem pb =3D new Problem(); > > IntVar fctObj =3D pb.makeBoundIntVar("objectif",-10,1000); > > IntVar v1 =3D pb.makeEnumIntVar("v1",1,10); > > IntVar v2 =3D pb.makeEnumIntVar("v2",-3,10); > > IntVar v3 =3D pb.makeEnumIntVar("v3",1,10); > > > > pb.post(pb.eq(pb.sum(new IntVar[]{v1,v2,v3}),fctObj)); > > > > > > Solver solver =3D pb.getSolver(); > > solver.setDoMaximize(false); > > solver.setObjective(fctObj); > > solver.setRestart(false); > > solver.setFirstSolution(true); > > solver.generateSearchSolver(pb); > > solver.launch(); > > } > > Hello guys, > > I'm sorry, but i don't seem to work :-( > By selecting another Value Ordering, for instance: > inserting the line "solver.setValIterator(new DecreasingDomain());", > i obtain: > > $ java Test > ... solution with cost objectif:30 > Pb[4 vars, 1 cons] > objectif[30, 30] > v1{10} > v2{10} > v3{10} > > Do i miss something ? > > -- > R=E9mi > > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on ITManagersJourna= l > Use IT products in your business? Tell us what you think of them. Give = us > Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Choco-users mailing list > Cho...@li... > https://lists.sourceforge.net/lists/listinfo/choco-users > |
From: coletta <co...@li...> - 2004-10-26 16:03:39
|
Le lun, 25/10/2004 =E0 14:08 +0200, Hadrien Cambazard a =E9crit : > The api concerning minization and maximization in not yet available on = the > Problem object. However, you can look at the following code which give = you > an example of minimization. You only need to use the Solver object and > specify a couple of options : >=20 > public static void main(String[] args) { > Problem pb =3D new Problem(); > IntVar fctObj =3D pb.makeBoundIntVar("objectif",-10,1000); > IntVar v1 =3D pb.makeEnumIntVar("v1",1,10); > IntVar v2 =3D pb.makeEnumIntVar("v2",-3,10); > IntVar v3 =3D pb.makeEnumIntVar("v3",1,10); >=20 > pb.post(pb.eq(pb.sum(new IntVar[]{v1,v2,v3}),fctObj)); >=20 >=20 > Solver solver =3D pb.getSolver(); > solver.setDoMaximize(false); > solver.setObjective(fctObj); > solver.setRestart(false); > solver.setFirstSolution(true); > solver.generateSearchSolver(pb); > solver.launch(); > } Hello guys, I'm sorry, but i don't seem to work :-( By selecting another Value Ordering, for instance: inserting the line "solver.setValIterator(new DecreasingDomain());", i obtain: $ java Test ... solution with cost objectif:30 Pb[4 vars, 1 cons] objectif[30, 30] v1{10} v2{10} v3{10} Do i miss something ? -- R=E9mi=20 |
From: <fra...@ya...> - 2004-10-25 13:15:29
|
Yes this is a real shame! on us :-) Michel, this API is arriving as soon as possible ! (bet on wednesday). François --- Hadrien Cambazard <had...@em...> a écrit : > Hello, > > The api concerning minization and maximization in > not yet available on the > Problem object. However .... Vous manquez despace pour stocker vos mails ? Yahoo! Mail vous offre GRATUITEMENT 100 Mo ! Créez votre Yahoo! Mail sur http://fr.benefits.yahoo.com/ Le nouveau Yahoo! Messenger est arrivé ! Découvrez toutes les nouveautés pour dialoguer instantanément avec vos amis. A télécharger gratuitement sur http://fr.messenger.yahoo.com |
From: Hadrien C. <had...@em...> - 2004-10-25 12:10:01
|
Hello, The api concerning minization and maximization in not yet available on th= e Problem object. However, you can look at the following code which give yo= u an example of minimization. You only need to use the Solver object and specify a couple of options : public static void main(String[] args) { Problem pb =3D new Problem(); IntVar fctObj =3D pb.makeBoundIntVar("objectif",-10,1000); IntVar v1 =3D pb.makeEnumIntVar("v1",1,10); IntVar v2 =3D pb.makeEnumIntVar("v2",-3,10); IntVar v3 =3D pb.makeEnumIntVar("v3",1,10); pb.post(pb.eq(pb.sum(new IntVar[]{v1,v2,v3}),fctObj)); Solver solver =3D pb.getSolver(); solver.setDoMaximize(false); solver.setObjective(fctObj); solver.setRestart(false); solver.setFirstSolution(true); solver.generateSearchSolver(pb); solver.launch(); } regards, Hadrien and guillaume ----- Original Message -----=20 From: "Michel Lema=EEtre" <Mic...@ce...> To: <cho...@li...> Sent: Friday, October 22, 2004 3:46 PM Subject: [Choco-users] maximize/minimize > Is it possible to maximize/minimize in the current > Java version of choco ? > > > Michel Lema=EEtre > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =3D > ONERA/DCSD/CD Centre de Toulouse > 2 avenue Edouard Belin - B.P. 4025 - 31055 Toulouse Cedex 4, FRANCE > Tel : +33 (0)5 62 25 26 60 Fax : +33 (0)5 62 25 25 64 > Michel . Lemaitre @ cert . fr http://www.cert.fr/dcsd/cd/lemaitre > > > > ------------------------------------------------------- > This SF.net email is sponsored by: IT Product Guide on ITManagersJourna= l > Use IT products in your business? Tell us what you think of them. Give = us > Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more > http://productguide.itmanagersjournal.com/guidepromo.tmpl > _______________________________________________ > Choco-users mailing list > Cho...@li... > https://lists.sourceforge.net/lists/listinfo/choco-users > |
From: <Mic...@ce...> - 2004-10-22 14:29:34
|
Is it possible to maximize/minimize in the current Java version of choco ? Michel Lema=EEtre =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D ONERA/DCSD/CD Centre de Toulouse 2 avenue Edouard Belin - B.P. 4025 - 31055 Toulouse Cedex 4, FRANCE Tel : +33 (0)5 62 25 26 60 Fax : +33 (0)5 62 25 25 64 Michel . Lemaitre @ cert . fr http://www.cert.fr/dcsd/cd/lemaitre |
From: Guillaume R. <Gui...@em...> - 2004-10-20 07:48:40
|
Hi, okay you're right !! So I checked the assertions (we try not to use assertions but only unit tests, this is why I did not activate assertions) : * in public void setTargetStatus(int constIdx, boolean st), the first was obviously false, it should have been assert((getTargetStatus(constIdx) == null)); and not assert(!(getTargetStatus(constIdx) == null)); !!! * in public void setStatus(int constIdx, boolean st), the first must be removed because, apparently, several parts of Choco modify the status. I commited these modifications on the CVS => it will be avalable in the next version, but you can modify it yourself before this version !! :) Regards, Guillaume |