A Challenge

In working on my Resources site, I was reminded that there is a large array of constraint programming languages, libraries, and solvers available. Diversity and choice are great, but the array of choices could be rather overwhelming, especially for newcomers. It occurred to me that choosing options for any individual, company, purpose or application is a constraint satisfaction problem! Or more precisely a constraint optimization problem. (It also relates to work on recommender systems and preferences.)

This seems to me to provide a wonderful opportunity for some enterprising folks to build a tool to recommend constraint programming tools. This could be useful to choose constraint programming software, use constraint programming software, and provide an illustration of the use of constraint programming software. A trifecta!

Could be a simple decision tree. Could let people ‘dial in’ priorities or preferences. Could use ‘deep learning’?! 🙂 Could …  

Of course, any such tool might be open to ‘dispute’, or exhibit — unconscious 🙂 bias; but if it generated discussion about what the proper criteria and ‘correct’ decisions should be, that itself could be useful. In fact, it would be great if several groups took up this challenge of producing such a tool, and could then compare results. The results might be written up individually or jointly. Perhaps there could be a presentation and discussion of the results at CP 2021. 

I’ve issued this challenge to the Constraints Google Group. Perhaps you’re interested in taking it on?

A Resource for Resources

I am building a collection of pointers to 

RESOURCES

related to constraints — books, software, videos, etc., etc.

This collection is a “work in progress” and probably always will be. I am giving my loyal blog readers a first look. 🙂

The collection is built using the Pearltrees curation tool. If you sign up for a free Pearltrees account, it will remove the banner urging you to do so. 

The collection is organized hierarchically, and one can click on items and use the navigation arrows to browse through it. Notice the Zoom option in the lower right corner. 

I welcome feedback and suggestions.

ACP Early Career Research Award

When I found, to my surprise, that the IJCAI Award for Research Excellence came with a substantial monetary award, I hit upon the idea of using that money to fund a new award for young researchers in the constraints community. I proposed this to the Association for Constraint Programming, who agreed and worked out the details. Today they have published the first call for nominations for an annual ACP Early Career Research Award. The award will come with a $500 prize and free registration for the CP Conference, where the winner will be invited to give a plenary talk. There seems to me to be a nice “symmetry” in an award based on “an entire career” being used to establish an “early career” award.

A Detective Story

I recently received the following Google Scholar alert for a “new” citation to my work:

[HTML] page 2

S Woods, A Quilici, Q Yang

Different program understanding algorithms often use different representational 
frameworks and take advantage of numerous heuristic tricks. This situation makes it 
is difficult to compare these approaches and their performance. This paper 
addresses this problem by proposing constraint satisfaction as a general framework 
for describing program understanding algorithms, demonstrating how to tranform a 
relatively complex existing program understanding algorithm into an instance of a …”

“page 2” seemed rather an odd title for a paper. 🙂 Turns out it was not really a new citation, but seemed to refer to “page 2” of a 1995 tech report. But the tech report actually had a very intriguing title: Program Understanding: A Constraint Satisfaction Modeling Framework; Understanding as Plan Recognition.

I found a later related published work: Steven G. Woods, Qiang Yang: Program Understanding as Constraint Satisfaction: Representation and Reasoning TechniquesAutom. Softw. Eng. 5(2): 147-181 (1998).

And a whole book: Constraint-Based Design Recovery for Software Reengineering: Theory and Experiments. Woods, Steven G., Quilici, Alexander E., Qiang Yang.

Now I’m acquainted with Qiang Yang; we served on the AAAI Executive Council together. (Qiang was also President of IJCAI and General Chair of AAAI-21, among many other accomplishments.) I was curious why Qiang didn’t seem to have followed up on this intriguing work after 1998. Had it been a dead end? Had he simply moved on to other things?

I discovered that Steven Woods was Qiang’s Ph.D. student. Woods himself co-authored a paper on “Program plan matching: experiments with a constraint-based approach” in 2000, but then disappeared off the face of DBLP shortly thereafter. On to Wikipedia: In 1998 Steven co-founded a company, and went on to a distinguished career as an entrepreneur and industry executive, According to LInkedin he is now Senior Engineering Director and Site Lead for Google, and Google’s Tech Lead responsible for representing Google in Canada.

So it appears that industry’s gain was constraint programming and sofware engineering’s loss. The work has continued to be cited. Semantic Scholar provides a citation to the above book from as recently as recently as 2017:

YAZILIM YENİDEN YAPILAMAYA YÖNELİK BİR KURUMSAL MİMARI: MODEL GÜDÜMLÜ VE ONTOLOJİ TABANLI BİR YAKLAŞIM

which Google Translate tells me is Turkish for:

A CORPORATE ARCHITECTURE FOR SOFTWARE RECONSTRUCTION: A MODEL-DRIVEN AND ONTOLOGY-BASED APPROACH

But if there is someone out there with an interest in applying constraint satisfaction to program understanding, I suspect there is fertile ground yet to explore here. And perhaps you could get support from Google, especially if you live in Canada. 🙂

Introduction

Among the types of posts you may find in this Blog:

  • Citations: Brief “shout outs” to recent papers citing my work
  • Ideas: Research ideas or other thoughts that might (or might not) be worth pursuing
  • Mentoring: In particular, tips related to my tutorials on “How to Be a Ph.D. Student” and “Presenting a Paper”
  • News: Occasional news about my activities, the Insight centre, Constraint Programming and Artificial Intelligence
  • Papers: A look back at my old papers, with an eye to current relevance

Note that I may edit posts — including this one 🙂 after their original posting.

Comments are encouraged. Use “Leave a Reply”.

Note that you can subscribe to the blog via RSS or follow via email. See the sidebar.

Another Path to Satisfaction

I’ve edited my earlier post on The Many Paths to Satisfaction to include “Neuromorphic Processor“.

“To the best of our knowledge, the work in this paper exhibits the first implementation of constraint satisfaction on a low power embedded neuromorphic processor. With this result, we aim to show that embedded spiking neuromorphic hardware is capable of executing general problem solving algorithms with great areal and computational efficiency.”

For more on neuromorphic computing see “Intel unveils neuromorphic computing system that mimics the human brain“.

“Intel said the Loihi chips can process information up to 1,000 times faster and 10,000 times more efficiently than traditional central processing units for specialized applications such as sparse coding, graph search and constraint-satisfaction problems.”

Google vs IBM

A brief look at Google vs IBM: A Constraint Solving Challenge on the Job-Shop Scheduling Problem from ICLP 2019.

The Abstract:

“The job-shop scheduling is one of the most studied optimization problems from the dawn of computer era to the present day. Its combinatorial nature makes it easily expressible as a constraint satisfac- tion problem. In this paper, we compare the performance of two constraint solvers on the job-shop scheduling problem. The solvers in question are: OR-Tools, an open-source solver developed by Google and winner of the last MiniZinc Challenge, and CP Optimizer, a proprietary IBM constraint solver targeted at industrial scheduling problems. The comparison is based on the goodness of the solutions found and the time required to solve the problem instances. First, we target the classic benchmarks from the literature, then we carry out the comparison on a benchmark that was created with known optimal solutions, with sizes comparable to real-world industrial problems.”

From the Conclusion:

“Concluding, CP Optimizer performed slightly better than OR-Tools on the classic benchmark, but was absolutely superior on the large-scale one. In fact, CP Optimizer was able to optimally solve 66% of the large-scale instances, against 29% of OR-Tools (quad core). By exploiting multi cores, OR-Tools was also able to find optimal solutions for the large-scale instances, showing that nowadays CP solvers in general could be successfully applied to real-world industrial problems.”

Old ILOGers — full disclosure I once served on ILOG’s Technical Advisory Board 🙂 will be pleased. And we should all be pleased at the conclusion “showing that nowadays CP solvers in general could be successfully applied to real-world industrial problems”. Of course, CP has been successfully applied in many real-world domains for many years.

Comparing CP and MIP

I recently ran across a paper comparing Constraint Programming (CP) and Mixed-Integer Programming (MIP) for scheduling operating theatres (if you don’t have access, here is what appears to be an earlier version).

I went googling for some other comparisons. Here’s what I found:

Perhaps Google knows I have a CP bias. 🙂 Or perhaps someone can point to alternative results in the Comments.

The Many Paths to Satisfaction

At the ECAI’94 Workshop on Constraint Processing I gave an invited talk on “The Many Paths to Satisfaction”. The figures for that talk appeared in a chapter of an LNCS volume, along with a short introduction, which began:

When I was asked to give a talk at the ECAI’94 Workshop on Constraint Processing, it occurred to me that the participants could arrive speaking many languages. I am not referring to languages like French and English, or even languages like Lisp and Prolog. Constraint satisfaction problems can be represented in the languages of many different research communities.

I felt that it might be helpful to put together a kind of Rosetta stone for constraint satisfaction, by representing a single simple problem in many different ways.

In fact, I represented the problem (a simple coloring problem) in 15 different ways, as a basic constraint network and as a problem in:

  • Predicate Calculus
  • Propositional Logic
  • Truth Maintenance
  • Integer Programming
  • Automata Theory
  • Graph Theory
  • Hill Climbing
  • Neural Networks
  • Genetic Algorithms
  • Relational Algebra
  • Constraint Logic Programming
  • Constraint Synthesis
  • Disjunctive Decomposition
  • Conjunctive Decomposition

The last three are alternative constraint satisfaction approaches of my own, but you can see that the list includes a wide variety of approaches, some of which — automata theory? — may surprise you. My point was that “Once a problem is represented as, e.g. a problem in logic or graph theory, then the problem solving tools of that discipline can be brought to bear.” I also, hoped that such a collection might initiate exploration, facilitate comparison, and encourage cross-fertilization.

There are other approaches we might add, at least some of which may not have yet been applied to constraint satisfaction in 1994. Some examples:

I couldn’t quickly find a Slime Mold Solver explicitly for CP, but here’s one for LP. 🙂

Perhaps you can add to this list in the Comments? Perhaps someone would be interested in chiseling new entries into my Rosetta stone?

A number of approaches come under the general heading of “methaheuristics“. Here is a paper Comparing four metaheuristics for solving a constraint satisfaction problem for ship outfitting scheduling. More generally, it would be good if we could identify which approaches worked best for which types of problems (or for which purposes, e.g. some might support better or alternative explanations). The individual papers presenting these approaches presumably offer some insight in this regard, but a survey and/or further study could be useful.

There has been considerable interest in, and success with, “portfolio” approaches that bring together multiple solvers. The above lists might suggest opportunities for “expanded portfolios”.