This is highly application specific, but there are still some general guidelines to Genetic Algorithms (GA's).
The 'population' represents a set of solutions to your problem. These could be anything from numeric vectors, to programmatic routines, to strings depending on the situation.
Assuming your problem is well defined, you will create a 'fitness function' which defines how well each member of the population serves as a solution. Typically, I try to bound the fitness function between [0, 1], but the range is up to you.
Techniques to initialize the population may include knowledge from previous experiments, random selection, predefined values, or a mix of the above. From there, you will apply 'mutations' to the population in an effort to improve fitness, and continue to do so until you have either reached some predefined limit for the number of iterations run, or until you have reached the desired level of fitness. If you do not have a desired level of fitness in mind a priori, then you can simply run the algorithm for some time, and take as a solution the most optimal members of the population.
The amount of mutations to apply should be proportional numeric value of the fitness function, (or the difference in fitness values between consecutive iterations). That way, more mutations are applied in the beginning and they taper as performance improves.
Mutation operations include, but are not limited to:
Swapping - transposing two elements of a member of the population
Reversing - reversing the order of elements in the population.
Deleting - removing members
Creating - adding new members
Crossing - exchanging components of two distinct members
and more.
NOTE: getting stuck at local maxima is a very common problem with GA's, but there are many ways to mitigate this (see links).
You can write the program from scratch, or use a preexisting package to help you. For Python, you could use DEAP, or PyEvolve. For R, there's the GA package.
One final point to consider is that often Genetic Algorithms are what we call 'Embarrassingly Parallel' in the sense that each instance of the algorithm can be run as a separate process and each process does not need to communicate with the others. The results need only be collected at the end. Keep this in mind to further optimize your results as even the lowliest of personal computers these days can often handle parallelization effectively, especially when implemented using one of the packages I listed.
If you would like to read further, the textbook listed as the first link is somewhat of a classic on this topic. If you'd like a deeply theoretical treatment of the topic, I included a link to a paper I wrote on my approach to GA's.
These excellent answers are already excellent. Originally, GA was only a string of binary code that was manipulated, then it was translated into solutions. In my opinion, it is similar than the DNA and RNA process. Then it was extended to many different data type. Some of them are very specialised to the problem to solve. Also the operators have been specialised to the problem and the encoding scheme.
It is worth reading a lot of evolutionary algorithms solving a specific problem. Hybrids have been developed and cross-domain population based techniques have been created as one of a result of it.
What is interesting, that evolutionary hyper-heuristics evolves evolutionary algorithms to solve specifically some problems.
I hope the attached links will help you. Good luck.
GAs are sussesfully designed and implemented to solve different complex scheduling problems as of NP hard or NP complete. To design a GA to solve any kind of scheduling problem, the major steps are as follows-
1) Chromosome representations or representation of solutions. It may depends on the processing order of jobs in each machine or vice versa, or processing route, and so on.
2) Diversity mechanism.
3) Selection technique.
4) Crossover operator. It can be conventional crossover operator or you can design it by yourself.
5) Mutation operator.
6) Elitism strategy.
7) Termination condition.
Test the performance of the algorithm against a Benchmark (if available). Otherwise, compute against the lower bound and upper bound solutions.
You may find these links useful: http://www.sciencedirect.com/science/article/pii/S0736584506000627