Building HAL: Construction of artificial intelligence
Programming assignment #1 (NimGame.htm): Purpose: Get
a sense of how a computer like HAL may play a game. Due:
Thursday, Feb. 24.
Automatic Temporal Reasoning Project: Due: Thursday, May. 4.
¡P Purpose: Write an intelligent program that can reason about events with
time-interval information to get a sense
of how a computer like HAL may conduct planning and reasoning about causes and
consequences.
¡P
Requirements:
Given a set of state variables, an initial state, a goal, events and the
associated causal rules described in a file events.txt
(in a format similar to what you see in Figure 1 of the paper on reason about events with
time-interval information), your program
should be able to conduct automatic reasoning to either (i) determine there is
no event sequence that would bring the system to a state achieving the goal or
(ii) provide an event sequence, the time the events occur, and what causal
rules associated with these events are applied such that the system would end
in a state achieving the goal.
¡P Things to do: As a
first step, you should design and implement C++ classes for states, causal
rules, and events so that you can simulate scenarios of what may happen in the
discrete event system. Then you can proceed to implement a systematic search to
solve the automatic reasoning problem, either by trying exhaustively all
possible event sequences or using the multi-chain search algorithm described in
the paper.
¡P Temporal
Projection Sample code:
1.
Download this zip file and play with the
executable and a sample instance in testInstance.txt in it. We¡¦ll continue
to discuss algorithms for automatic temporal reasoning and the source code.
Much of the code implementing the TemporalSolver class in
TemporalProjection.cpp is removed, but you can freely utilize any portion of
the source code that I made public in the zip file.
2.
The executable in
the zip file was compiled from the complete source code and can find and store
a solution to the sample instance in testInstance_Solution.txt. You can create
other temporal instances and test the executable to get a better sense of the
temporal reasoning problem.
3.
See the following
online references to the standard bitset,
map,
vector
classes from the C++ library. The implementation uses these classes extensively
as building block.
¡P Temporal
Simulation Sample code: Download this zip file and play with the
temporalProjection.exe executable in it and see how it can run simulation over
the sample instance in testInstance.txt in it.
Automatic Spelling Correction Project: Due: Thursday, May. 25.
¡P Purpose: Build an intelligent program that can learn to conduct automatic
spelling correction. Get a sense of how a
computer like HAL may conduct speech recognition (the same foundational
framework used for automatic
spelling correction).
¡P Related
documents: You should first study the
introduction in this set of Power Point slides,
a prototype demonstration program, the word model and the keyboard model used in
the prototype program, the source code of
the prototype program, and this collection of sample spelling errors.
¡P Requirements: Given the vocabulary (i.e. a collection of words) in
a file testVocabulary.txt and a
collection of typos (i.e. individual character strings not in the vocabulary)
in a file corruptedMessage.txt, your
program should be able to conduct automatic spelling correction to the typos
individually and output in a file
recoveredTestMessage.txt that for each typo we recommend the top most
likely words from the vocabulary.
¡P Things to do: You can either
write everything by yourself or utilize any portion of the source code of the prototype program you
want. You should (i) devise and implement your own improved keyboard model to
correct individual spelling errors, and (ii) if possible try to tap into the sample spelling errors to fine tune
your keyboard model and the word model.