diff options
Diffstat (limited to 'src/botlib/be_ai_gen.c')
-rw-r--r-- | src/botlib/be_ai_gen.c | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/src/botlib/be_ai_gen.c b/src/botlib/be_ai_gen.c deleted file mode 100644 index fda4986d..00000000 --- a/src/botlib/be_ai_gen.c +++ /dev/null @@ -1,135 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. -Copyright (C) 2000-2006 Tim Angus - -This file is part of Tremulous. - -Tremulous 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 2 of the License, -or (at your option) any later version. - -Tremulous 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. - -You should have received a copy of the GNU General Public License -along with Tremulous; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - -/***************************************************************************** - * name: be_ai_gen.c - * - * desc: genetic selection - * - * $Archive: /MissionPack/code/botlib/be_ai_gen.c $ - * - *****************************************************************************/ - -#include "../qcommon/q_shared.h" -#include "l_memory.h" -#include "l_log.h" -#include "l_utils.h" -#include "l_script.h" -#include "l_precomp.h" -#include "l_struct.h" -#include "aasfile.h" -#include "botlib.h" -#include "be_aas.h" -#include "be_aas_funcs.h" -#include "be_interface.h" -#include "be_ai_gen.h" - -//=========================================================================== -// -// Parameter: - -// Returns: - -// Changes Globals: - -//=========================================================================== -int GeneticSelection(int numranks, float *rankings) -{ - float sum, select; - int i, index; - - sum = 0; - for (i = 0; i < numranks; i++) - { - if (rankings[i] < 0) continue; - sum += rankings[i]; - } //end for - if (sum > 0) - { - //select a bot where the ones with the higest rankings have - //the highest chance of being selected - select = random() * sum; - for (i = 0; i < numranks; i++) - { - if (rankings[i] < 0) continue; - sum -= rankings[i]; - if (sum <= 0) return i; - } //end for - } //end if - //select a bot randomly - index = random() * numranks; - for (i = 0; i < numranks; i++) - { - if (rankings[index] >= 0) return index; - index = (index + 1) % numranks; - } //end for - return 0; -} //end of the function GeneticSelection -//=========================================================================== -// -// Parameter: - -// Returns: - -// Changes Globals: - -//=========================================================================== -int GeneticParentsAndChildSelection(int numranks, float *ranks, int *parent1, int *parent2, int *child) -{ - float rankings[256], max; - int i; - - if (numranks > 256) - { - botimport.Print(PRT_WARNING, "GeneticParentsAndChildSelection: too many bots\n"); - *parent1 = *parent2 = *child = 0; - return qfalse; - } //end if - for (max = 0, i = 0; i < numranks; i++) - { - if (ranks[i] < 0) continue; - max++; - } //end for - if (max < 3) - { - botimport.Print(PRT_WARNING, "GeneticParentsAndChildSelection: too few valid bots\n"); - *parent1 = *parent2 = *child = 0; - return qfalse; - } //end if - Com_Memcpy(rankings, ranks, sizeof(float) * numranks); - //select first parent - *parent1 = GeneticSelection(numranks, rankings); - rankings[*parent1] = -1; - //select second parent - *parent2 = GeneticSelection(numranks, rankings); - rankings[*parent2] = -1; - //reverse the rankings - max = 0; - for (i = 0; i < numranks; i++) - { - if (rankings[i] < 0) continue; - if (rankings[i] > max) max = rankings[i]; - } //end for - for (i = 0; i < numranks; i++) - { - if (rankings[i] < 0) continue; - rankings[i] = max - rankings[i]; - } //end for - //select child - *child = GeneticSelection(numranks, rankings); - return qtrue; -} //end of the function GeneticParentsAndChildSelection |