Category Archives: Ideas

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?

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.”

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”.

Alter Ego

Check out the AI Foundation. Subbarao Kambhampati, a former president of AAAI, is the Chief AI Officer. “The AI Foundation’s mission is to responsibly move the world forward by giving each of us our own AI that shares our personal values and goals.”

I’ve had a notion of an AI “avatar” or “alter ego” for a long time, though I’ve never taken it very far. It appeals to me in part because it seems a natural application of constraints. Of course, everything does 🙂 but we each have our own likes, dislikes, etc., which might be modeled as (hard or soft) constraints. I’ve alluded to this briefly in these ‘grand challenge’ papers: