|
Rescue Radiers - that's it.
Thanks.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
You have to be of a certain age...
|
|
|
|
|
May I ask what you are after, John ?
|
|
|
|
|
Nothing. We were talking about antique computers, and I created a brain worm that would not die until I could recall the name of the game. I'm okay now.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
There are only 10 types of people in the world: those who understand binary and those who don't
-- P
Always remember that you are absolutely unique. Just like everyone else.
|
|
|
|
|
Palash Mondal_ wrote: There are only 10 types of people in the world:
Those who post ancient jokes and those that post something original.
Marc
|
|
|
|
|
I guess the group containing people who understand binary would be very less and can be completely ignored! You didn't talk about people who know how binary language works, but you talked about "understanding!", which no man on Earth can ever do! To "understand", we must get to know what the ones and zeros mean by just looking at them; without any decoding process! And which is impossible! So there is only 1 category, those who don't understand binary(but some of them, given considerable time, can decode the information).
And remember that binary information are not always numbers, they are mostly instructions!
|
|
|
|
|
Binary 9 is binary 6 flipped
Decimal 9 is decimal 6 flipped.
Alright, that does it.
|
|
|
|
|
Or in short:
There are one type of people, those that don't understand Unary.
|
|
|
|
|
I hate when I go into a men's room and there isn't a Unary in there! Wait, what are we talking about?
Hogan
|
|
|
|
|
I never really got on with binary. It's too all or nothing for my taste.
|
|
|
|
|
There are two types of people on CodeProject - those who know of Leslie and those who don't
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
I don't get it.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
I am new to genetic algorithms, but now I have decided it must not be so for long! I have been thinking what it takes to develop a program that implements the genetic algorithm (in C++) and I have the following idea:
1. The program should have an array of function pointers, each holding a particular function that responds to the input given.
2. Each "organism" should just be a collection of functions held in the function pointer array, along with the input fed to the system.
3. Each of these functions in the function pointer array is the genetic material, and these have access to a memory space which can be read/altered.
4. Now the result gets evaluated by calling all the functions in the function array linearly, and the result is finally retrieved.
5. Mutation and crossover process also occurs; they are monitored globally
Example,
typedef (int)(*FuncPtr)(int*, int);
struct GeneticCode{
int* MemSpace;
static int MemSpaceSize;
void SetMemSpace(int s); FuncPtr fnc[MAX_GENETIC];
void Mutate(int seed); GeneticCode NextGen(GeneticCode);
};
Now, this data structure shows how an individual organism should be defined. We just need to add a,
void Evaluate(int* Input, GeneticCode Code);
function to evaluate the result for a given input. This is done by evaluating every function in the genetic material linearly. Like this,
for(int i=0; i<MAX_GENETIC; ++i)
Code.Fnc[i] (MemSpace, Code::MemSpaceSize);
So what do you think about this Idea? I am thinking of forming a general 'framework' of code that works fine in most genetic algorithm situations. Do you think this would work for face recognition algorithms? Lets not follow what the books say, and lets get super creative! I am new to Forums based and programming (which means I am also new here. So please forgive me if I sound offbeat.)
And we would also need a fitness function monitoring the population.
modified 14-Sep-15 12:46pm.
|
|
|
|
|
This stuff has been hashed over so many times I'm sure you could find 50 implementations in a minute or two.
But what exactly is the point of writing such an algorithm except for academic (ie, homework) purposes? What do the genes express? If you mutate a gene, how does the expression change?
While genetic algorithms are cool from a geek perspective, what real use are they?
Marc
|
|
|
|
|
Marc Clifton wrote: While genetic algorithms are cool from a geek perspective, what real use are they?
Good question. But to think about it, it doesn't necessary have to be the cool genetic algorithm that imitates the biological system, understanding what it does fundamentally helps us in understanding its actual propose. In genetic algorithm, we alter the sequence by which a set of steps in an algorithm execute, thereby altering the overall process (there are many types of genetic algorithms and I am referring to this one). This changes slightly during each generation (randomly while mutating; but the mutation process should not manage to change a large part of it, rather altering it randomly by 5% would be harmless, would it?). And also, the newer algorithm is determined partially by an existing and fit algorithm.
So the overall process of a genetic algorithm is this:
It obtains a initial algorithm and tests its accuracy in predicting the result. If it fails, it's changed slightly and checked again. This process continues until the error in evaluation is minimized. While going through various learning algorithms, I found that most of them are astonishing similar to each other fundamentally! But does that have to prevent us from talking about them and put them to a test? Yet again?
Marc Clifton wrote: But what exactly is the point of writing such an algorithm except for academic (ie, homework) purposes?
As I already said, it is for understanding the theoretical concept within the subject material and thinking about different ways we may use them in solving real time problems.
Marc Clifton wrote: What do the genes express? If you mutate a gene, how does the expression change?
I want to talk about this genetic algorithm in an abstract scale and wait for it to converge to a point as the discussion goes on. That was my strategy.
Marc Clifton wrote: This stuff has been hashed over so many times I'm sure you could find 50 implementations in a minute or two.
But never hashed with my involvement in it! We can't expect people to always talk about new ideas even in most leading research journals can we? But we can learn and I want to learn with a bit of discussion!
|
|
|
|
|
I like to use them in place of some unmaintainable spaghetti logic, like code to let a robot control its legs without falling on its nose. Once you have evolved an acceptable solution you are ready to go (literally), but can still profit from letting the evolutionary algorithm improve that solution. And the best part: You can work on something else meanwhile.
So yes, I think they are extremely useful wherever a perfect solution is not needed and endless if-else-logic will get you nowhere.
The language is JavaScript. that of Mordor, which I will not utter here
This is Javascript. If you put big wheels and a racing stripe on a golf cart, it's still a f***ing golf cart.
"I don't know, extraterrestrial?"
"You mean like from space?"
"No, from Canada."
If software development were a circus, we would all be the clowns.
|
|
|
|
|
Yeah agreed! But I really believe that the more efficient the genetic algorithm is, the less epochs it takes to complete the process. I view these learning algorithms more like finding an appropriate point 'A' on an Euclidean space such that f(A, I) provides the most appropriate output, the output that is close to the correct answer (here, 'I' is the input, and 'A' is the data-set that gets modified for each epoch in the learning process). Soon enough, to minimize the error, the point 'A' moves along the graph (note, 'A' is a 'n' dimensional vector) and reaches the point of minimum error.
It is necessary that we create an algorithm that is most appropriate for certain specific learning processes. Because the algorithm we write should be as close to the solution as possible, it doesn't make sense to write a genetic algorithm solution to a problem that has a concrete solution than can be written down. But we may write a re-adaptable algorithm, that adapts itself to learn a simple solution, which can be written down by human but if its something that should be chosen from a large class of simple solutions! This case usually arises when the problem involves making choices rather than framing solutions.
I haven't yet written a code in genetic algorithm, but I am planning to do so! This subject is really interesting isn't it?
modified 15-Sep-15 9:45am.
|
|
|
|
|
Try it, then write a paper
|
|
|
|
|
The fitness of any "gene" should be evaluated by the environment rather than by the gene... also, you need to be able to tweak the mutation rate as if it is too high then your fitness gets lost in the noise.
Perhaps you can take A .NET evolutionary computing framework[^] to the next generation
|
|
|
|
|
Duncan Edwards Jones wrote: The fitness of any "gene" should be evaluated by the environment rather than by the gene
Yes I agree to that! I haven't mentioned a lot about the fitness function. I believe that there can be two possibilities for a fitness function. If the problem is such that it is possible test the correctness of a solution to the problem in linear time, then this function can be used to compare the answers provided by each of these genes with every other gene in the population. Their performance can be evaluated and a specific weight value can be assigned to each of these genes; now these genes can be sorted based on their weight values. After mutation and crossover process, the population size would be greater than it started with. The obvious thing to do here will be to eliminate the low-ranking gene and retain the remaining genes, thereby maintaining a constant population size.
And for cases where there is no specific linear-time function to check the correctness of a given solution to a problem, we would require the user to input the correct result along with the input, to train the population. In this case, the system becomes more dependent on the user's training which is considerably slower than the former case; so it would be necessary that the learning process should require very less epochs.
Duncan Edwards Jones wrote: also, you need to be able to tweak the mutation rate as if it is too high then your fitness gets lost in the noise.
Yes I also agree to that! Mainly because if we do so, the system would be changing on a random phase. But we require that the system provides more accurate results for each generation. So this can only be done if the newer generation is greatly dependent on the genetic code that proved to be the fittest among others rather than having its code determined by random values. If it were determined by the random values, then the change in the behavior of the population could also be such that it causes a setback to the learning process. The real necessity of the mutation process is to include functionalities that don't exist among the population and need to be introduced.
|
|
|
|
|
Mutation is also needed to prevent the population getting stuck in a local "peak".
|
|
|
|
|
Consider searching CodeProject before posting: [^].
The next time you are going to post, please first read the pinned thread at the top of this forum concerning what is appropriate to post on the Lounge.
There are several forums here for posting this type of question, including General Programming/Algorithms, as well as the General/C/C++ forum.
«I want to stay as close to the edge as I can without going over. Out on the edge you see all kinds of things you can't see from the center» Kurt Vonnegut.
|
|
|
|
|
Yeah, I guess I posted this in the wrong place! This is the first time I am using Code project forum, next time I'll post questions in the right place.
|
|
|
|
|
What do I do now that I posted it here? Is it possible to migrate this discussion to the appropriate forum?
|
|
|
|
|