What is a Genetic Algorithm?
VBGALIB1.0 Overview
Advanced Engines

wpe19.jpg (2994 bytes)ou have found the Visual Basic Genetic Algorithm Library Page. (audio .mpeg of this page) Okay you scurvy, Visual Basic Dogs! Are you tired of the C and C++ cats having all the great genetic algorithm tools? Well, I know I was, and so I've put together a small friendware library for you. What is a genetic algorithm? A genetic algorithm is a model of machine data sorting which derives its behavior by analogy to certain mechanisms of evolution in nature. This is done by the creation within your computer of a population of individuals represented by chromosomes. Loosely speaking, In GALIB these are implemented as 8-bit bytes in an array. (In real biology, as in what's going on in your body, there are only 4 bits to your DNA, but the data structure processes used by the GALIB are somewhat similar.) GALIB uses collections of bits spread across the bytes (held within the population array I just mentioned) to simulate evolution. And it doesn't use strings, so it's fast!

Now the scurvy Visual Basic dog faces several hurdles when s/he tries to get into the genetic algorithm act

    • Language Barrier. Most of the free code to be found on the internet via commonly known search engines is in languages other than Visual Basic. Don't feel like learning C++, plus the compiler environment, plus the data structure of a genetic algorithm? You lazy mutt!
    • Boy Toys. What code there is to be found (at least easily and readily) by the common search engines is "toy code". Toy implementations will let you watch bits shuffle around. They will show you the evolutionary processes. They will probably use pretty graphics too. It'll be real clear what's going on. But they never give you a generalized way to apply that bit fiddling to any real world problem! In a phrase, they do not implement the most important "second order" function of a GA--you know, like finding values for an equation that you get to put in. That would be just too hard to program and then simply give it way for free. (See next point)
    • Peonic Greed. "We worked hard on this over a zillion man hours..." "It's easy to use..." "It does this, that, and the other.." "Now send us your [$70, $140, even $500] dollars!" Hey man, that's a lot of bones! What ever happen to The Big Dogs giving it away for everybody else to howl at? The best musicians play for free; likewise, the best programmers also play for free. (Like Napster did, but w/o going corporate! Those losers.) This is friendware, you don't have to pay if you don't want to, and you can still keep using it or modifying it. If you can make millions off of it and not tell me--go for it.
    • Code Slakkers. Generally, when some of the more advanced computational structures are ported to Visual Basic, it's not well documented. Yeah, you can run the code. But how can you tell what it's doing? Not five minutes before writing this sentence, I downloaded a VB neural net program. I ran it. Pretty lights blinked and fancy-pants terms appeared on buttons. Not a READ.ME file in sight. About one out of fifty lines was cryptically commented. Look, if you're such a programming wolf, how come you can't explain what you're doing? Listen: friends don't let friends drive drunk; and, hackers shouldn't let hackers program mute. Won't somebody hide their keyboards until they're back on their feet?!
    • Ph.D. Hey, I like mathematicians and academic tech-heads as much as the next guy, but they didn't start out that way upon slipping from the birth canal. Can't somebody once in a while write some entry level code that doesn't demand I know everything from Active X,Y,Z to Class Structures to Database SQL just to learn the basics? No wonder High School people don't program anymore. Whose code could they steal? A.M. Turing, the inventor of the computer, just had a tape, a read/write head, and a few back and forth commands. Where did we go so wrong? (I'll admit that my assembly language flashbacks affect my better judgment on these matters.)
    • .EXE vs .BAS. It is not unusual to find cool GA applications that do understandable things. There are genetic algorithm programs which draw pictures, simulate chemistry problems, build Boolean circuit boards, and lots of other stuff. "Mind if I look under the hood mister ?!" What's the response? "Keep your paws off the apparatus, son. This is .EXE only. No source code for you, putz." Yelp! Yelp! That smarts.

Well, that's plenty of fur flying to make the point: If you want to do some genetic algorithms with your computer, GALIB is a great place to start. Here's what it offers:

    • The Language You Know. All the code is written in Visual Basic 6.0. Except for one matrix to matrix transfer (for speed, which could be recoded quite easily), the code could be easily ported to other versions of Visual Basic, even other languages. (I'm probably going to code this back into C++ eventually, but into very basic and friendly code, I assure you.)
    • Toys-R-Not-Us. This isn't toy code. You can put in your own equations with virtually as many or as few variables as you want. And then have GALIB solve for those variables. One application of the GALIB implements the second-order uses in one routine. Remember polynomials from High School Algebra? (X + 3)(X+2) yields X^2 + 5X + 6 = 0. That's got one variable you might want to solve. GALIB can solve equations like this (and more difficult, real-world ones not like this) and with a whole lot more variables than just one. You can control how many chromosomes are in your population, the crossover rates, how many bits are in individual genes (thus, defining your own genome), and other relevant parameters of a GA data structure.
    • I've got a Career. I'm a middle class, late 30s white guy. I got healthy kids, a loving wife, a circle of friends, and professional peers that respect me. I go to work each day and enjoy my job. I'm not sitting behind my keyboard after a day job at Hairnet Temporary Job Services dreaming that you're all going to send me $5.99 so that I get rich one Abe Lincoln at a time. It's friendware. Go figure.
    • Show and Tell. I've documented the code. But that's usually not enough, really. So I've put together this Hypertext document of just how my program works; how the information flows among the routines; how the variables are used; and how to use the module with your programs. If you've programmed in any of the common languages out there, you shouldn't have any trouble figuring out what various applications of the GALIB are doing.
    • The Ivory Tower. I'm a professor, I'll admit it. But that doesn't mean my code doesn't have bugs, or that you can't improve on what I'm doing here. Go ahead, make my day. Dare to email me all your great tweaks. I'll just fix GALIB and put out a better version the next time. Anyhow, I rarely even teach programming anymore; it's not even my area of specialty. I'll say this: If you go through this document, you'll learn plenty about a very important area in multi-disciplinary computer programming.
    • .BAS You Can See. I've tried to avoid the slick features that Visual Basic 6.0 offers. By doing so, I make it easier to understand what GALIB is doing. In turn, this makes it easier for you to appropriate GALIB's routines in your own programs. (After all, it's a module you append to your own Visual Basic Projects). If you're Pat Putz, Professional Programmer, then add all the slick stuff you want.

I've tired of ranting. Let's get down to business.  Start this whole tutorial by clicking on the links at the left of this document.

Info on Last Update: [08/15/2003]

web counter by: