UserPreferences

Week10 (Due 11/8)


CS 372 (Artificial Intelligence) Fall 2004

Week10 (Due 11/8) Reactions & Thoughts

Ioana Butoi

Andrew Cantino

I now understand the logic stuff much better, and I think that it is very cool. I might be interested in working on a simple resolution engine for my final project! Something that would be told about the world (perhaps in simplified natural language?) and could make inferences and statements based on it's knowledge base.

I've been working on our AI game engine in Python, which has been interesting. Python is a really cool language! I read some of [WWW]an article on evolving AI opponents, which was interesting. That too might make a good final project as an addition to this lab.

Audrey Flattes

Christina Florio

Now that I am feeling a more confident in how logic and propositional calculus are applicable to what we are doing, I don't think I will be completely confident until I see this all used in a piece of code. It was silly of me to not go beyond linking these ideas to robots in my posting last week, but now that I am it makes me question how we are going to use this in such things as game playing or any other type of artificial intelligence, which seems a bit daunting. I think that a concrete example would help clarify a few of my concerns.

Kathleen Maffei

Well, I’ll swear to you that week 10 wasn’t listed on the wiki this weekend. That was why I presumed (and was thankful) we had no response to write – which made sense since we only had one class – half of which was spent discussing our project, and the other half of which was spent on more Propositional Calculus. Perhaps I’m letting myself be too cranky (the excuse is I’m sick), but I have a hard time writing yet more about Propositional Calculus, as useful as it is.

So, therefore, if it’s not already too late, I’ll offer a few thoughts about the project. I spent most of Sunday working on this project and feel I’m progressing well. By Sunday morning I had already written some classes in C++, but I had already been second-guessing my choice of language. I spent some more time fiddling with them Sunday morning, and then decided to switch to Python for various reasons. First, although I’m less familiar with Python, I felt more comfortable writing classes in it. I can’t really explain any more than to say that it seems less complicated to do so in Python. Also, Python’s easy list & tuple management make this project much more straightforward. I figure that it’s best to choose the language that best fits the need. It was a nice opportunity to become more familiar with Python, so I Googled a few tutorials for reference. I also find that it’s easier to test the Python code, since I can run Python at the prompt.

I completed writing a file “board.py” which implements the board class. For a data structure I used a simple one-dimensional list and a board size variable (given as a parameter upon initialization). I suppose a two-dimensional array would have been much easier, but I was charmed by the math of converting coordinates to a single index. I’ve implemented “display” to print the board, “move” to affect a board with a move, and “validMoves” to return a list of valid moves for a given player. I also created another file “play.py” to walk through game play, asking the user for moves and selecting moves for the opponent. Currently the program just chooses the first move on the list returned by “validMoves.” Here’s where the actual AI work will begin when I next sit down to program.

And, of course, I’ve played a few games of Konane with my son, who won them all. (Hey, he’s in chess club, for goodness sakes!) I’m getting a feel for strategy, which will be seriously useful in developing a static evaluation for my search algorithm. I’ll be playing some more. Maybe I’ll pick on someone easier for awhile...

Sara McCullough

Ben Root

This project is definitely more accessible to other people than some of the robots were. It is pretty interesting how normal it is for people to play games (videogames, board games, etc.) against a computer but when they see a computer that is controlling the wheels of a robot they are often shocked. I think that this is because people are comfortable passing off everything that happens on a computer screen as magic, but when something enters our physical world then we have to ask more questions about it.

Also, when I was showing people the robots from exercise 4 (in simulated form) some of them actually got the algorithm that I used to make the robot behavior exactly correct. This is a pretty amazing feat since none of the people I showed had computer programming or AI backgrounds. I know people have an easier time of describing real objects than computer behavior. I know that when I play board games it is difficult to qualify the exact reasons I have for preferring one play to another. I am going to poll people that I play konane with to see if they can characterize exactly why they wanted to take one move over another. That may fuel ideas for my static evaluation.

Sandeep Singh

I’ve been spending a lot of time working on the Konane program since we last met. Even when I’m not actually at the computer coding, I have found that I am constantly thinking about the program and how I want to approach certain things. It’s turning out to be a pretty lengthy program, but that’s exactly what I had expected. Being allowed to program this in Java has definitely eased my nerves a bit. Even still, that doesn’t alleviate all of the pain. I was a bit hesitant and uncertain about implementing the alpha-beta pruning, but after looking over what we talked about in class, I think it’s not that bad to do. The exercise states that the program should randomly assign the player and computer to a color. I did this by using a random number generator that produces a number from 1 to 100. If the number is even, the computer assumes X and the player assumes O and visa versa. I couldn’t figure out a different way to do this. In all the years of my programming, I have always used random number generators in this fashion. Is this sufficient enough? Or is there a better, more ‘random’ way of assigning the players? Also, how should the coordinates be entered in the program? My code is arranged such that the points are entered in the form of (y,x). I feel as though this is acceptable as long as I am consistent.

The static eval function still looms over my head…I really like Ben’s idea of asking people their strategies and motivations for move choices. I think that might actually give some good insight into what exactly constitutes a good eval function. Hopefully I come up with another idea similar to this when it comes time to sit down and code the function.

Darby Thompson

wow i TOTALLY forgot about filling this in this week... I'll do it after class today! sorry!