Replies: 5 comments 3 replies
-
We are quite spoiled with Scryer. Just from what I've seen so far glancing at the curriculum: And in this: I'd be interested to learn more about the vehicle routing problem, but my guess is that for [1] it's quite related to this discussion and this search problem discussion, and I'm thinking [2] is almost certainly a case of this scheduling with resource constraints problem. And what I love with Scryer is that there's no special framework required! You can "reason" about the problem instead of it feeling like magic. That being said, the Vehicle Routing Problem and the Cumulative Scheduling Problem sound really interesting and very practical, and I'd love to learn about them and see how to implement them in Scryer! My guess is that the VRP can be expressed very elegantly as a recursive relationship, once I learn how to minimize constraints. I'd also be very curious what cumulative scheduling means! Thanks for sharing these, this is by far and away my favorite area of programming! |
Beta Was this translation helpful? Give feedback.
-
On CP there are, of course, books (even for free as PDF); as I see it now, at least in my imagination, outside of Prolog context, there is MiniZinc (MOOCs for MiniZinc as well), but closer to Prolog, there is (I think: traditional) ECLiPSe Constraint Logic Programming System (Wiki: The ECLiPSe language is largely backward-compatible with Prolog). Yes, now CP is "everywhere", be it Prolog, or "Prolog-like" system, or a system with Prolog roots as Picat programming language; there is Ciao Prolog system, ... The ECLiPSe system, on their web site, if one wants to learn from video presentations something about CP, they have (among other things), this: "This is a self-study course on Constraint Programming using the ECLiPSe language, consisting of video lectures and accompanying material." https://eclipseclp.org/ELearning/index.html PS: Here, I'm not advocating any system/language, except constraint programming as an idea (to learn about); today, there are more ways to CP and to solving search problems, and to logic, relational, and declarative programming. |
Beta Was this translation helpful? Give feedback.
-
Some additional resources I've found very useful for programming with constraints. The following resources are pretty academic but help get a structured overview:
If you are familiar with Python, Peter Norvig's CS212 course has some excellent units on CSP: While the above resources are good, I think application Prolog takes it to the next level.
I have some other books on the shelf, but I haven't gotten through them yet to give you a good synopsis of how useful they may be or not.
So those are two options of exploring CPS without CLP. However, in exploring this problem recently, I have determined that it is almost always better to go with CLP if you have it available. The reason is because (according to AIMA Ch.6) more sophisticated search/planning/constraint techniques (such as Angelic Planning and Hierarchical Task Networks) admit not only boolean logic but "wiggly" logic, meaning the planner/agent/scheduler has the option to defer the choice until a later point when a solution is most optimal. This wiggly logic would be possible to encode by hand but is already captured really nicely by clp logic. That's my 2 cents anyway. So I still like knowing the predicate based approach, but I will be implementing (mostly exclusively) using CLP libraries unless I have a very good reason not to. |
Beta Was this translation helpful? Give feedback.
-
I didn't mention it elsewhere simple because it partially seems so obvious, but @triska has many excellent CSP and CLP videos on his website and YouTube series. In some ways they are much better than books because the information content is extremely dense and to the point. At some point I'd like to go through and start indexing the work. |
Beta Was this translation helpful? Give feedback.
-
In the implementation category, this MIT mathematical programming course seems like it might be interesting. |
Beta Was this translation helpful? Give feedback.
-
Continuing discussion from #2511 (reply in thread)
A general topic to discuss constraint programming, constraint programming courses, papers, techniques, etc...
Beta Was this translation helpful? Give feedback.
All reactions