I was planning a class package for Artificial Intelligence or AI, which will include, but won’t be restricted to these types:
- Genetic Algorithm
- Fuzzy Logic
- A* Algorithm
Um, I have as much information to complete a working implementation of the Genetic Algorithm. I don’t have enough practice or research on implementing Fuzzy Logic. I’ll discuss why later on why I don’t have enough information.
Genetic Algorithm
Project details
Where I failed before was not understanding what relevance crossover and mutation, as well as fitness had to do with the “big picture”. I have since read the text on the genetic algorithm again and I’m fairly confident I can make an actual working implementation. It will take some time to complete the various interfaces and classes. I’m just going to port the classes with a little bit of changes for smaller footprint from a book[needs name].
Description
Genetic is more than randomized numbers in a sequence. It includes taking two sequences and cutting parts to create two new numbers. It involves testing the sequence and assigning a score. Then, if it is unsuccessful, it is done again.
Fuzzy Logic
Project details
It seems pretty simple actually, but appearances can be deceiving. I’m going to only do test cases and prototypes for this type of AI. If it goes well, then I’ll either extend the prototype and if any problems, I’ll fix them. It will be experimental, until it works correctly or I get the research and development down.
Description
Fuzzy Logic is probable logic. Which means, it is assigning a score to what action might take place. It is a preferred action to take.
For example if I have two actions, one with 78% and the other with only 40%. When it is evaluated, then it doesn’t mean that the action with 78% will be chosen each time. It just means that the action with 78% has a probability of being chosen more often than that of 40%. It also means that the action of 78% may never be chosen given a limited number of actions and it means the opposite could be true.
Theory for possible Randomize Solution
It should be possible, other than Genetics or Neural Networks, to add all of the percentages together and then take a random value between the total. It should factor that the bigger the number, the greater of the chance it will be chosen. It would also give any of the other numbers a chance also. Just the law of averages, not perfect, but should given enough “fuzzy” logic to make it seem like intelligence. Until Genetics or Neural Networks can be used instead, it should be enough of an implementation.
A* Algorithm
This could probably be completed with only a few Singletons, so it isn’t that hard, and I could also test it using the Redux Map library, to see if it functions correctly. I want to make it to where the actual algorithm is in a generic object that isn’t dependent on any Map object.
There is another A* package out there, but the map system is built in. I don’t think that the algorithm is that complex that I can’t do it myself, but I may just use the other package as a reference.
Description
The A* Algorithm is related to AI as it is used to intelligently find paths in games. It is also a Generic Algorithm for finding the shortest branch in a tree, so its purpose is not restricted to only path finding.
Possibly Related Posts:
- Calibre Improvements
- DragonU Bug Tracker Dev – Milestone 1
- Dragon MVC
- Why I Contributed to WordPress
- DragonU DB Component
Some of the AI theory relates to Game Theory or Utlility Theory. Amazing how elements of economy, statistics, and psychology all come together.
Indeed.
It does make it easier to understand incredibly difficult concepts. My brain did explode a couple of times trying to comprehend Neural Networks and Fuzzy Logic.