Download presentation

Presentation is loading. Please wait.

1
**Genetic Algorithms: A Tutorial**

“Genetic Algorithms are good at taking large, potentially huge search spaces and navigating them, looking for optimal combinations of things, solutions you might not otherwise find in a lifetime.” - Salvatore Mangano Computer Design, May 1995

2
**A Simple Example The Traveling Salesman Problem:**

Find a tour of a given set of cities so that each city is visited only once the total distance traveled is minimized

3
**Classes of Search Techniques**

4
**Components of a GA A problem to solve, and ...**

Encoding technique (gene, chromosome) Initialization procedure (creation) Evaluation function (environment) Selection of parents (reproduction) Genetic operators (mutation, recombination) Parameter settings (practice and art)

5
**Simple Genetic Algorithm**

{ initialize population; evaluate population; while TerminationCriteriaNotSatisfied select parents for reproduction; perform recombination and mutation; }

6
**The GA Cycle of Reproduction**

children reproduction modification modified children parents population evaluation evaluated children deleted members discard

7
**Population population Chromosomes could be:**

Bit strings ( ) Real numbers ( ) Permutations of element (E11 E3 E7 ... E1 E15) Lists of rules (R1 R2 R3 ... R22 R23) Program elements (genetic programming) ... any data structure ...

8
Reproduction children reproduction parents population Parents are selected at random with selection chances biased in relation to chromosome evaluations.

9
**Chromosome Modification**

Modifications are stochastically triggered Operator types are: Mutation Crossover (recombination) children modification modified children

10
**Mutation: Local Modification**

Before: ( ) After: ( ) Before: ( ) After: ( ) Causes movement in the search space (local or global) Restores lost information to the population

11
**Crossover: Recombination**

* P1 ( ) ( ) C1 P2 ( ) ( ) C2 Crossover is a critical feature of genetic algorithms: It greatly accelerates search early in evolution of a population It leads to effective combination of schemata (subsolutions on different chromosomes)

12
Evaluation The evaluator decodes a chromosome and assigns it a fitness measure The evaluator is the only link between a classical GA and the problem it is solving modified children evaluated children evaluation

13
Deletion Generational GA: entire populations replaced with each iteration Steady-state GA: a few members replaced each generation population discarded members discard

14
**A Simple Example The Traveling Salesman Problem:**

Find a tour of a given set of cities so that each city is visited only once the total distance traveled is minimized

15
**Representation Representation is an ordered list of city**

numbers known as an order-based GA. 1) London 3) Dunedin ) Beijing 7) Tokyo 2) Venice ) Singapore 6) Phoenix 8) Victoria CityList1 ( ) CityList2 ( )

16
**Crossover Crossover combines inversion and recombination:**

* * Parent ( ) Parent ( ) Child ( ) This operator is called the Order1 crossover.

17
**Mutation Mutation involves reordering of the list:**

* * Before: ( ) After: ( )

18
TSP Example: 30 Cities

19
**Solution i (Distance = 941)**

20
**Solution j(Distance = 800)**

21
**Solution k(Distance = 652)**

22
**Best Solution (Distance = 420)**

23
**Overview of Performance**

24
**Some GA Application Types**

25
%TSPO_GA Open Traveling Salesman Problem (TSP) Genetic Algorithm (GA) % Finds a (near) optimal solution to a variation of the TSP by setting up % a GA to search for the shortest route (least distance for the salesman % to travel to each city exactly once without returning to the starting city) % % Summary: % A single salesman travels to each of the cities but does not close % the loop by returning to the city he started from % Each city is visited by the salesman exactly once % % Input: % XY (float) is an Nx2 matrix of city locations, where N is the number of cities % DMAT (float) is an NxN matrix of point to point distances/costs % POPSIZE (scalar integer) is the size of the population (should be divisible by 4) % NUMITER (scalar integer) is the number of desired iterations for the algorithm to run % SHOWPROG (scalar logical) shows the GA progress if true % SHOWRESULT (scalar logical) shows the GA results if true % % Output: % OPTROUTE (integer array) is the best route found by the algorithm % MINDIST (scalar float) is the cost of the best route % % Example: % n = 50; % xy = 10*rand(n,2); % popSize = 60; % numIter = 1e4; % showProg = 1; % showResult = 1; % a = meshgrid(1:n); % dmat = reshape(sqrt(sum((xy(a,:)-xy(a',:)).^2,2)),n,n); % [optRoute,minDist] = tspo_ga(xy,dmat,popSize,numIter,showProg,showResult); % % Example: % n = 50; % phi = (sqrt(5)-1)/2; % theta = 2*pi*phi*(0:n-1); % rho = (1:n).^phi; % [x,y] = pol2cart(theta(:),rho(:)); % xy = 10*([x y]-min([x;y]))/(max([x;y])-min([x;y])); % popSize = 60; % numIter = 1e4; % showProg = 1; % showResult = 1; % a = meshgrid(1:n); % dmat = reshape(sqrt(sum((xy(a,:)-xy(a',:)).^2,2)),n,n); % [optRoute,minDist] = tspo_ga(xy,dmat,popSize,numIter,showProg,showResult); % % Example: % n = 50; % xyz = 10*rand(n,3); % popSize = 60; % numIter = 1e4; % showProg = 1; % showResult = 1; % a = meshgrid(1:n); % dmat = reshape(sqrt(sum((xyz(a,:)-xyz(a',:)).^2,2)),n,n); % [optRoute,minDist] = tspo_ga(xyz,dmat,popSize,numIter,showProg,showResult); % % See also: tsp_ga, tsp_nn, tspof_ga, tspofs_ga, distmat % % Author: Joseph Kirk % % Release: 1.3 % Release Date: 11/07/11 function varargout = tspo_ga(xy,dmat,popSize,numIter,showProg,showResult) % Process Inputs and Initialize Defaults nargs = 6; for k = nargin:nargs switch k case xy = 10*rand(50,2); case N = size(xy,1); a = meshgrid(1:N); dmat = reshape(sqrt(sum((xy(a,:)-xy(a',:)).^2,2)),N,N); case popSize = 100; case numIter = 1e4; case showProg = 1; case showResult = 1; otherwise end end % Verify Inputs [N,dims] = size(xy); [nr,nc] = size(dmat); if N ~= nr || N ~= nc error('Invalid XY or DMAT inputs!') end n = N; % Sanity Checks popSize = 4*ceil(popSize/4); numIter = max(1,round(real(numIter(1)))); showProg = logical(showProg(1)); showResult = logical(showResult(1)); % Initialize the Population pop = zeros(popSize,n); pop(1,:) = (1:n); for k = 2:popSize pop(k,:) = randperm(n); end % Run the GA globalMin = Inf; totalDist = zeros(1,popSize); distHistory = zeros(1,numIter); tmpPop = zeros(4,n); newPop = zeros(popSize,n); if showProg pfig = figure('Name','TSPO_GA | Current Best Solution','Numbertitle','off'); end for iter = 1:numIter % Evaluate Each Population Member (Calculate Total Distance) for p = 1:popSize d = 0; % Open Path for k = 2:n d = d + dmat(pop(p,k-1),pop(p,k)); end totalDist(p) = d; end % Find the Best Route in the Population [minDist,index] = min(totalDist); distHistory(iter) = minDist; if minDist < globalMin globalMin = minDist; optRoute = pop(index,:); if showProg % Plot the Best Route figure(pfig); %gambar grafik route if dims > 2, plot3(xy(optRoute,1),xy(optRoute,2),xy(optRoute,3),'r.-'); else plot(xy(optRoute,1),xy(optRoute,2),'r.-'); end title(sprintf('Total Distance = %1.4f, Iteration = %d',minDist,iter)); end end % Genetic Algorithm Operators randomOrder = randperm(popSize); for p = 4:4:popSize rtes = pop(randomOrder(p-3:p),:); dists = totalDist(randomOrder(p-3:p)); [ignore,idx] = min(dists); %#ok bestOf4Route = rtes(idx,:); routeInsertionPoints = sort(ceil(n*rand(1,2))); I = routeInsertionPoints(1); J = routeInsertionPoints(2); for k = 1:4 % Mutate the Best to get Three New Routes tmpPop(k,:) = bestOf4Route; switch k case 2 % Flip tmpPop(k,I:J) = tmpPop(k,J:-1:I); case 3 % Swap tmpPop(k,[I J]) = tmpPop(k,[J I]); case 4 % Slide tmpPop(k,I:J) = tmpPop(k,[I+1:J I]); otherwise % Do Nothing end end newPop(p-3:p,:) = tmpPop; end pop = newPop; end if showResult % Plots the GA Results figure('Name','TSPO_GA | Results','Numbertitle','off'); subplot(2,2,1); pclr = ~get(0,'DefaultAxesColor'); if dims > 2, plot3(xy(:,1),xy(:,2),xy(:,3),'.','Color',pclr); else plot(xy(:,1),xy(:,2),'.','Color',pclr); end title('City Locations'); subplot(2,2,2); imagesc(dmat(optRoute,optRoute)); title('Distance Matrix'); subplot(2,2,3); if dims > 2, plot3(xy(optRoute,1),xy(optRoute,2),xy(optRoute,3),'r.-'); else plot(xy(optRoute,1),xy(optRoute,2),'r.-'); end title(sprintf('Total Distance = %1.4f',minDist)); subplot(2,2,4); plot(distHistory,'b','LineWidth',2); title('Best Solution History'); set(gca,'XLim',[0 numIter+1],'YLim',[0 1.1*max([1 distHistory])]); end % Return Outputs if nargout varargout{1} = optRoute; varargout{2} = minDist; end

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google