The first steps

Finally I was granted a project by my adviser. It finished the last month of not knowing anything that was killing me. Now I am supposed to implement a set of algorithms that perform abduction using neural networks (therefore the logo of this site). I'm pretty sure I can succeed with at least two of the methods I have to implement, however I never understood the third paper and I am a little bit scared about it, however, I would have plenty of time before I reach that stage.

In respect to the tools I'm going to use, I decided to use C++ as the default programming language, why? because I want to become "fluent" in that language, I may like it less than Java, but definitely the jobs that use C++ tend to be much more interesting than those which use java. I will make a strong use of the Boost libraries. Specially I will replace all pointer variables to shared_ptr in order to have some garbage collection and not thinking about memory management. Not to mention that the Boost library has become the defacto standard, along with the stl, in C++ libraries. I will use cppunit in order to provide test cases since I had experience from junit and the change is really easy. My previous experience with java is also the reason why I choose log4cxx as the logging tool, but I know this is also the standard tool in C++. The development will be done in ubuntu linux (intrepid) with eclipse using the cdt plugin. Finally, version control (and backup) will be done using svn and trac for ticketing system. The last two have become my personal work environment for everything I do.

Now about the project per se. I decided to call the engine umbra. Umbra is divided in three subsystems:

Wyld
This is the engine that manages the input of the engine. Its function is to parse a file, which I haven't completely specified but which looks pretty much like a strip down, propositional only version of prolog. Anyway, I sill need to figure out how to manage the abductibles and observations sets. After parsing the file, it creates a representation of a clause that can be use for the rest of the engine. It should also have the possibility to parse files in other languages (like xml).
Weaver
The weaver is probably the mos complete and complicate subsystem of the engine. Its task is to transform the elements generated by the wyld and create the network representation of the logic program using each of the algorithms implemented. Of course scalability is a must.
Wyrm
This subsystem controls the output of the engine. Initially it outputs the files in tikz format so the networks can be painted after a run of the pdflatex command. The direct pdf option is not encourage since the images need to be easily included in LaTeX documents. Again, scalability is a must.

The coding of the project already started with Wyld being the first module to be implemented. The program representation is almost finished and Wyld should be done in no more than 3 days. The next module will be Wyrm and the last would be Weaver.

No comments:

Post a Comment