is Search-based algorithms and Genetic Algorithms the same? - genetic-algorithm

I'm learning about Genetic algorithms and procedural content generation and in some papers people talk about Search-based algorithms to create content such as levels.
Anyway, I'm reading some papers about the topic and in some of them talk about Search-based algorithms and basically they explain what it is, and for me looks basically like a genetic algorithm, but I'm not really sure if they're the same, or a particular case of genetic algorithms.

Is the other way around. Genetic Algorithms are a kind of search-based algorithm. In GA you are searching inside the universe of possible solutions, getting better at doing the job by combining parts of the successful solutions (and a bit of chance: mutation).
https://en.wikipedia.org/wiki/Search-based_software_engineering

Related

How do I encode the bin-packing problem into chromosomes for a genetic algorithm?

I'm trying to develop my understanding of genetic algorithms.
I have found great explanations for how to run a genetic algorithm for the knapsack problem here and the travelling salesman problem here, and I understand these processes now, and from these papers, I understand how to encode these problems into chromosomes (as described in the papers linked).
I'm struggling to understand how this translates to the bin-packing problem (described here) so as to begin understanding the algorithm. Could someone show me a sample of how to encode the bin-packing problem into chromosomes just with a small amount of toy data to start me off?
It's easier with float-valued genes, as in the BRKGA framework. Then you can (e.g.) have one gene per item and decode a chromosome by sorting the corresponding item using the genes to compare, and then turning the order into packed bins by running a simple online approximation algorithm like next-fit.

Can you propose to me two programs to make as project for my evolutionary computing class?

My teacher wants us to make two projects, but we haven´t seen many topics and I don´t have very clear what evolutionary computing is used for. Can you give me some ideas, please?
A good place to start is to identify something that can be improved with successive alterations. A great example is the design of a simple windmill propeller or turbine. Start of with a random design and arrangement of the blands. Input this geometry into the genetic algorithm and define the fitness as how fast the propeller spins based on a fixed air flow (a fan for example). Even if you do not build the fan, this is an interesting one to write about and should get you some marks!
Some great problems for Evolutionary programming are the Traveling Salesman Problem and Knapsack Problem.
You may also want to consider another NP Complete problem like Sudoku. Sudoku is a good example of a problem that is possible to solve with stochastic optimization, but more efficient techniques exist. There are a number of Sudoku Solutions Here.
You could compare the difficulty of using evolutionary programming with the Sudoku problem to either the Traveling Salesman or the Knapsack problem and explain why the algorithm works well for the first 2 problems but not the Sudoku.

Is the Naive Bayes classifier a specific algorithm?

I've been looking for the specific algorithm statement of the Naive Bayes but I can't find any. All I found are pseudocodes and implementations in various languages and documentations discussing this algorithm, but what I need is the step-by-step process itself. Maybe I can't find one because Naive Bayes is a general process (by general, I mean there are algorithms that are specified under the Naive Bayes category or something like that). I have to make an enhancement of it for e-mail classification for my studies. Can you please help me?

Scheduling algorithms used in a grid

I am trying to simulate scheduling in a grid environment. I don't know what algorithms to use. I am considering Job Shop Scheduling algorithm http://en.wikipedia.org/wiki/Job_shop_scheduling but dunno if it is used in grids. What algorithms are typically used in grid environments for scheduling incoming jobs to resources?. Any help would be much appreciated. Thanks.
There are many job-shop scheduling algorithms that can be parallelized. You should start with a literature review or a good reference, like Brucker's "Scheduling Algorithms." The particulars of your domain are likely to allow or disallow various pseudo-polynomial time approaches.
Job Shop Scheduling isn't an algorithm, it's a problem as far as I know.
If you have 3 or more machines, it's NP complete. There are bunch of a algorithms that can deal with NP complete problems, such as Tabu Search, Genetic Algorithms, Simulated Annealing, ... Some of which can be multi-threaded easily (others hard). But the gain of multi-threading is relatively small compared to the gain of improving the algorithm. See this slide for the effect of improving CPU/multi-threading VS improving the algorithm with one of the examples of Drools Planner.
Floyd-Warshall for bipartite graphs and Edmond's Blossom algorithm for non-bipartite graph.

Solutions to problems using dynamic programming or greedy methods?

What properties should the problem have so that I can decide which method to use dynamic programming or greedy method?
Dynamic programming problems exhibit optimal substructure. This means that the solution to the problem can be expressed as a function of solutions to subproblems that are strictly smaller.
One example of such a problem is matrix chain multiplication.
Greedy algorithms can be used only when a locally optimal choice leads to a totally optimal solution. This can be harder to see right away, but generally easier to implement because you only have one thing to consider (the greedy choice) instead of multiple (the solutions to all smaller subproblems).
One famous greedy algorithm is Kruskal's algorithm for finding a minimum spanning tree.
The second edition of Cormen, Leiserson, Rivest and Stein's Algorithms book has a section (16.4) titled "Theoretical foundations for greedy methods" that discusses when the greedy methods yields an optimum solution. It covers many cases of practical interest, but not all greedy algorithms that yield optimum results can be understood in terms of this theory.
I also came across a paper titled "From Dynamic Programming To Greedy Algorithms" linked here that talks about certain greedy algorithms can be seen as refinements of dynamic programming. From a quick scan, it may be of interest to you.
There's really strict rule to know it. As someone already said, there are some things that should turn the red light on, but at the end, only experience will be able to tell you.
We apply greedy method when a decision can be made on the local information available at each stage.We are sure that following the set of decisions at each stage,we will find the optimal solution.
However, in dynamic approach we may not be sure about making a decision at one stage, so we carry a set of probable decisions , one of the probable elements may take to a solution.

Resources