?? multidepintegerheuristicxover.m
字號:
function [c1,c2] = multiDepIntegerHeuristicXover(p1,p2,bounds,Ops)% Heuristic crossover takes two parents P1,P2 and performs an extrapolation% along the line formed by the two parents outward in the direction of the% better parent.%% function [c1,c2] = multiDepIntegerHeuristicXover(p1,p2,bounds,Ops)% p1 - the first parent ( [solution string function value] )% p2 - the second parent ( [solution string function value] )% bounds - the bounds matrix for the solution space% Ops - Options for heuristic crossover, [gen number_of_retries]% Binary and Real-Valued Simulation Evolution for Matlab % Copyright (C) 1996 C.R. Houck, J.A. Joines, M.G. Kay %% C.R. Houck, J.Joines, and M.Kay. A genetic algorithm for function% optimization: A Matlab implementation. ACM Transactions on Mathmatical% Software, Submitted 1996.%% Modified by Kerry W. Lothrop <kerry@lothrop.de> to work with more% complex objective functions enabling design vectors containing% binary digits, dependent integers, independent integers and floating% point numbers% University of Colorado, 2002%% Lothrop, K.W.: Conceptual Design Optimization of a Cis-Lunar% Transportation Architecture Using Genetic Algorithms, Universit鋞% Stuttgart, University of Colorado, 2003%% This program is free software; you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation; either version 1, or (at your option)% any later version.%% This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the% GNU General Public License for more details. A copy of the GNU % General Public License can be obtained from the % Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.retry=Ops(2); % Number of retriesi=0;good=0;b1=bounds(1);b2=bounds(2);% Determine the best and worst parentif(p1(2) > p2(2)) bt = p1(1); wt = p2(1);else bt = p2(1); wt = p1(1);endwhile i<retry % Pick a random mix amount a = rand; % Create the child c1 = round(a * (bt - wt) + bt); % Check to see if child is within bounds if (c1 <= b2 & (c1 >= b1)) i = retry; good=1; else i = i + 1; endend% If new child is not feasible just return the new childrenif(~good) c1 = wt;end% Crossover functions return two children therefore return the best% and the new child createdc2 = bt;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -