Satisfiability solvers in games - artificial-intelligence

Have SAT or SMT solvers been used in video games for AI? What tasks have been solved with them? Almost all I can find is related to puzzles.

Related

General Advice - Robotics / AI

This is not for asking any doubts or queries. I know this is a technical forum and hence would be the best platform for me to get advice on.
I am a Master's student in computer engineering and hold interest in Robotics. I am confused as to where should I start if from. I have 2 courses one is on controlling of robots and other is based on introduction to AI. I don't want to take both the courses together. I am confused as to do I need to go for controlling of robots first or AI first?
Also, if you know any good forums/blogs on AI then please share... Would be a lot helpful.
Thanks.
AI and robot control are different subjects, and do not necesssarily cross over that much. AI covers writing software that is intelligent, and applies to things as disperate as character recognition in scanned text, stock market analysis and face detection. There are uses of AI techniques with mobile and manipulator robotics, but there are lots of good robot projects out there that are implemented with zero AI.
Your control course for robotics will likely cover the basics of kinematics and dynamics of robots, path planning, and cover a fair bit of practical robotics knowledge. All of this course is important knowlege for building and controlling robots, and if robotics is your goal destination then i would take this course. You can do good work in the robotics field with zero knowlege of AI, but you cant with zero knowlege of robot control.
Well, I would take the AI class first, because I would want to know more about the logic before going to the control part.
As far as forums go, you could check out the AI Forum, and the AI Depot (the AI Depot is not exactly a forum, but it has some good resources and articles).
You can also check out these Area51 StackExchange site proposals:
Cognitive Science
Robotics Research
Machine Learning

Are there any active reinforcement learning competitions?

I like doing part-time research in reinforcement learning. In recent years (up to 2009) there was a reinforcement learning competition held at rl-competition.org with some very interesting problems, but this seems to have been discontinued. I'd love to improve my skills and knowledge and measure it against other enthusiasts in the field - are there still any such competitions around?
Doesn't look like it, the major people who organized it last year are busy graduating from PhD. You could email the students who organized it last time to ask though: Shimon Whiteson, Brian Tanner, and Adam White
Also, http://metaoptimize.com/qa is basically the stack overflow for the machine learning community, it's usually a better place for such ML-specific questions.

How to pick a language for Artificial Intelligence programming? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
What is the best programming language for artificial intelligence purposes?
Mind that using suggested language I must be able to employ any AI technique (or at least most of them).
All the cool bearded gurus in what's left of AI research use Lisp :)
There are two big camps: Common Lisp and Scheme. They have different syntax, etc. Lots of good stuff written for both.
Java is a very popular all-purpose language but a lot of the interesting stuff in AI / Functional Programming, such as passing closures as first-order objects, is clumsy to do in Java.
My personal preference would be to stay away from Windowsy languages like C# and F#. Cool people develop under Unix. Or Linux if they're cool but poor.
Some cool but weird people program in Haskell. A reasonably modern FP language with good performance. I tried it once, it made my brain hurt; but you might be smarter than I am.
UPDATE: Answers to Steve's questions.
I wouldn't be the one paying for a Unix variant; that's what corporations and research institutes do. The idea is, you want to be doing AI research for an outfit that sinks millions into their hardware and doesn't balk at paying a few thousand for an operating system. That's the kind of outfit likely to have good food in the cafeteria and/or pay well for doing fun work. But I'm certainly not knocking Linux.
F# may be cool but I see a whole raft of issues getting it to run on Linux or any other Unix (that's what I meant by "windowsy"), and I don't want to work under Windows (that's what I meant by "personal preference").
To elaborate on the "windowsy" theme: You mention that F# is an OCaml variant. From my own admittedly brief research, it seems that F# is missing functors, OCaml-style objects, polymorphic variants and the camlp4 preprocessor. A functional language without functors? Really? If one were disposed to not like Microsoft, as I admittedly am, one could conclude that they had gone ahead and crowbarred a perfectly good functional language, OCaml, into something they could get to run in their CLR so they could claim to "have" a functional language. Finally, because I don't suspect, I know that Microsoft always prioritizes market dominance over product quality, I don't plan to touch F#. But this is my personal preference, and clearly identified as such, while we're really more concerned with making a good recommendation for mary.ja45 .
I have better reasons to recommend Lisp over F# and even OCaml and Haskell. These are mostly based on the historic preponderance of Lisp over any other language in the AI field.
The bulk of AI literature is based on programs written in Lisp or Prolog. If nothing else, good knowledge of Lisp would allow a student to understand the sample programs. My personal favorite AI megaproject, Cyc, has runtimes in your choice of Common Lisp or C.
In the TIOBE index of programming language (as seen and used in industry), Lisp takes 15th place while Haskell takes 43rd and F# and OCaml place below 50th. Presence on the market correlates with employment opportunities, naturally.
That said, it's quite possible that a number of the younger "AI interesting" languages are poised to skyrocket. If some major research institute published some groundbreaking, defining-the-field research in, say, Scala, you'd see Scala's popularity advance sharply in the research community and, with some lag, in industry.
I (obviously) can't comment on F#'s other qualities but you're as welcome to make recommendations as I was.
Python seems to be used a lot in the general scientific community. It has a lot of libraries available and it's easy to learn.
I'll throw Scala into the pot.
it's usable for functional programming
it can be made as fast as Java
it's a modern language with lot's of nice aspects
Java seems to be a bit popular in AI, too and so you can use all those Java libraries from Scala
I've solved all exercises from a basic AI course in Scala. It worked really well.
If by "all of AI" you also mean machine learning, which I guess, Matlab, R and Python+Scipy should definately be mentioned.
I personally use Clojure for AI programming, and have found it to be a great all-rounder AI language.
Reasons:
It's a Lisp, and Lisps have historically been very strong the the AI field
It's a homoiconic language with powerful macros, so great for code generation and genetic programming. This is a surprisingly useful property for AI programming (and possibly explains some of the success of Lisp in general in this space)
It runs on the JVM and can easily access all the Java libraries for number crunching (Weka, Colt, etc.).
It's good for rapid interactive development - it's very dynamic and you can do pretty much everything interactively in a running Clojure REPL. No need for recompiling etc.
It matters probably whether the programming environment is academic or not, but for most non-academic AI application development I would recommend sticking with a mainstream language like Java or C++. One needs to be able to interface readily with other COTS or open-source software packages, and this can sometimes be difficult or impossible in more "exotic" languages. For academic work this may be a less critical issue.
Additionally, performance can be important for many applications, and mainstream languages generally have the most heavily-optimized compilers, e.g., C++ or Java.
It is true that functional programming languages like LISP, Scheme, etc have specialized features that may make it easier to implement particular AI methods, but I do not believe this to be true for AI-related programming as a whole, e.g., quantitative machine learning methods usually don't require a functional language. If you need access to both functional constructs and general software packages, there are some tools for LISP to help with this, and the recently-developed Clojure is a LISP-variant that runs on the JVM and can access Java libraries. Also, Groovy is another JVM-based language that includes support for closures.
Lastly, some programmers like paradigm flexibility and/or fast prototyping for AI projects. Ruby and Python both see some AI-related usage for this reason as multi-paradigm languages that can also be used for scripting.
Like most things in programming, the best answer for which language to use in AI development will ultimately depend on the needs of your projects.
It really depends on what kind of problem you are looking at. Also, how "deep" you want to go into AI stuff. If you want to learn from the basics and just implement theoretical AI stuff, go with a higher level language-- as in functional programming (and proven in AI) like lisp, or prolog. If you know what problem set you are dealing with and want efficient, go with something like Java, C++ and use a toolkit to do the stuff.
Since you mention Machine Learning look into Weka Toolkit in Java for some of these stuff.
Pick the programming language with AI techniques the same way you pick a language for any other project:
What is the problem you are trying to
solve?
Is there good support available for
the language?
What are the customers requirements?
I would recommend Prolog as a very good programming language used to implement AI systems.
There is no "best" language. Each one has its merits. When I studied AI, mostly we worked with lisp and prolog, but I've been most productive in AI with Java/C# and F# has a lot to offer.
How about a framework written in Java, supporting "High Level Logic" and agent style communication.
http://highlevellogic.blogspot.com/2010/11/when-will-we-have-artificial.html
It also depends on the size of your dataset. For web-scale datasets you may want to use Map-Reduce and that implies Hadoop. Hadoop is in Java -- but you could use any language (Python, etc.) for your Map-Reduce functions.
There is also a java framework called weka, developped by the university of waikato. I don't know wether it anwsers your question, but it may help.
Quoting wikipedia: «Weka supports several standard data mining tasks, more specifically, data preprocessing, clustering, classification, regression, visualization» and more.

I need a project idea for an Artificial Intelligence class. Do you have one? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I wanted to ask Stack Overflow users for a nice idea for a project that could entertain a fellow student programmer during a semester. Computer vision might look interesting, although I couldn't say if a project on that field is something that could be achievable in 4 months. What do you think?
There is a story that, during the early days of AI research when significant progress was being made on "hard" logic problems via mechanical theorem provers, a professor assigned one of his graduate students the "easy" problem of solving how vision provided meaningful input to the brain. Obviously, things turned out to be far more difficult than the professor anticipated. So, no, not vision in the general sense.
If you are just starting in AI, there are a couple of directions. The classic AI problems - logic puzzles - are solved with a mechanical theorem prover (usually written in Lisp - see here for the classic text on solving logical puzzles). If you don't want to create your own, you can pick up a copy of Prolog (it is essentially the same thing).
You can also go with pattern recognition problems although you'll want to keep the initial problems pretty simple to avoid getting swamped in detail. My dissertation involved the use of stochastic proccesses for letter recognition in free-floating space so I'm kind of partial to this approach (don't start with stochastic processes though, unless you really like math). Right next door is the subfield of neural networks. This is popular because you almost can't learn NN without building some interesting projects. Across this entire domain (pattern processing), the cool thing is that you can solve real problems rather than toy puzzles.
A lot of people like Natural Language Processing as it is easy to get started but almost infinite in complexity. One very definable problem is to build an NLP program for processing language in a specific domain (discussing a chess game, for example). This makes it easy to see progress while still being complex enough to fill a semester.
Hope that gives you some ideas!
The staple software that most people implement as one of their first applications of ANNs is character recognition (not necessarily hand written characters).
You could do something simpler than general "vision", like point a webcam at a digital thermometer and read the temperature from that.
Can't tell without knowing more about you, your friend, and the project. My guess is "no".
I'd point you towards two sources. The first is Peter Norvig's "Artificial Intelligence"; the second is "Programming Collective Intelligence". Maybe they'll inspire you.
Write a spam filter. Pick an interesting corpus to train on and filter (Twitter messages, Facebook wall posts, blog comments...?). There are lots of ways to go about building the classifier, identifying training data, etc.
One thing I always wanted to do was improve the AI of older video games. Take DOOM for example. Very simplistic AI, compared to even what you see today. You could try improving or even completely rewriting AI for enemy characters in a video game.
Or you could write your own little game that specifically focuses on the computer making surprisingly informed decisions.
I've always thought it would be interesting to write something that will look at a post (say, a question here) and predict how many votes it will get. I originally thought of the idea in the context of looking at a blog or an article and predicting vote ups/downs on reddit (or more simply a bucket like low, medium, high).
A program that plays poker, hearts or similar.
Make it interesting, for example a game AI, I know a chess sim might take awhile, but maybe you could boil it down a bit (just 3 pieces, 2 rooks and a king each side) for example...
Turing tests are interesting. Here is a link on how LOLBot passed the turing test

Resources that explain or investigate artificial intelligence (AI) based approaches/strategies to the game of Mahjong

While Mahjong (the actual game, not Mahjong solitare) is fairly simple in terms of basic rules and gameplay, setting objectives for the AI to transition to aim for certain end game goals seems fairly complex.
Is anyone aware of any papers, research, or other materials related to this topic?
I think this could be what you are looking for:
A Mah Jong-Playing Program
A masters thesis written at the Department of Information Technology
by Daniel Hellsson
with supervisors Jan Eric Larsson and Bengt Öhman
1 September, 2000
http://www.it.lth.se/janeric/mastersprojects/past/hellsson/mother.pdf
Have a look at AI Mahjong by Wan Jing Loh, December 11th 2009 (PDF).
In this project, I attempted to
develop a viable AI Mahjong player, by
building a hand evaluator that is able
to accurately calculate how many tiles
from victory the player is.

Resources