Is modh leas iomlán a bhaint as an algartam Cuardaigh Éabhlóideach atá bunaithe ar mheicníocht na héabhlóide nádúrtha. Samhlaíonn an algartam seo próiseas éabhlóid na ndaoine aonair laistigh de dhaonra thar na glúnta chun an réiteach is fearr a fháil ar fhadhb.
Conas a oibríonn sé
- Túsú Daonra: Cruthaigh daonra tosaigh daoine aonair a ghintear go randamach.
- Measúnú: Déan cáilíocht gach duine aonair sa daonra a mheas bunaithe ar an bhfeidhm oibiachtúil nó ar na critéir mheastóireachta.
- Roghnú: Roghnaigh fo-thacar de na daoine aonair is fearr ón daonra reatha bunaithe ar dhóchúlachtaí nó critéir roghnúcháin.
- Éabhlóid: Cruthaigh glúin nua trí oibríochtaí crosbhóthair agus sóchán a chur i bhfeidhm ar na daoine aonair roghnaithe.
- Atriall: Déan céimeanna 2 go 4 arís thar na glúine iolracha go dtí go mbaintear amach réiteach sásúil nó go mbaintear amach líon réamhshainithe atriallta.
Sampla: An Fibonacci Fheidhm a bharrfheabhsú ag baint úsáide as Cuardach Éabhlóideach
Smaoinigh ar fhadhb bharrfheabhsaithe na Fibonacci feidhme F(x) = F(x-1) + F(x-2) le F(0) = 0, F(1) = 1. Ba mhaith linn luach x a fháil dá uasmhéadaítear F(x). Is féidir leis an modh Cuardach Éabhlóideach daonra de luachanna x randamacha a ghiniúint, iad a éabhlóidiú thar na glúnta chun an x luach is fearr a fháil.
Sampla Cód i C++
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
int fibonacci(int n) {
if(n <= 0) return 0;
if(n == 1) return 1;
return fibonacci(n- 1) + fibonacci(n- 2);
}
int evolutionSearchFibonacci(int populationSize, int numGenerations) {
srand(time(0));
std::vector<int> population(populationSize);
for(int i = 0; i < populationSize; ++i) {
population[i] = rand() % populationSize;
}
for(int gen = 0; gen < numGenerations; ++gen) {
int bestIndex = 0;
for(int i = 1; i < populationSize; ++i) {
if(fibonacci(population[i]) > fibonacci(population[bestIndex])) {
bestIndex = i;
}
}
// Crossover and mutation operations can be applied here
// Example: Replace the worst individual with the best individual
population[0] = population[bestIndex];
}
return population[0];
}
int main() {
int populationSize = 50;
int numGenerations = 100;
int result = evolutionSearchFibonacci(populationSize, numGenerations);
std::cout << "Optimal x for maximum Fibonacci value: " << result << std::endl;
return 0;
}
Sa sampla seo, úsáidimid an modh Cuardach Éabhlóideach chun an Fibonacci fheidhm a bharrfheabhsú. Gineann muid daonra de x-luachanna randamacha, forbraíonn muid iad thar na glúnta trí na daoine aonair is fearr a roghnú agus oibríochtaí trasghearrtha agus sóchán a chur i bhfeidhm.