public static double PointValue(this EnemyTypes enemyType, SerializableChromosome chromosome) { if (!HasCalculatedMinimums) { CalculateMinimums(); } var enemyAttributes = BaseEnemy.GetGeneticAttributes(enemyType.Attributes(), chromosome); var healthPoints = enemyAttributes.MaximumHealth / minHealth; var speedPoints = enemyAttributes.EffectiveSpeed / minSpeed; var flyingPoints = enemyAttributes.IsFlying ? 1.5 : 1; var piercePoints = enemyAttributes.EffectivePiercingResist - minPierce; var bombardPoints = enemyAttributes.EffectiveBombardResist - minBombard; var chemicalPoints = enemyAttributes.EffectiveChemicalResist - minChemical; var frostPoints = enemyAttributes.EffectiveFrostResist - minFrost; var firePoints = enemyAttributes.EffectiveFireResist - minFire; var electricPoints = enemyAttributes.EffectiveElectricResist - minElectric; var resistPoints = piercePoints + bombardPoints + chemicalPoints + frostPoints + firePoints + electricPoints; var survivalPoints = healthPoints * resistPoints; var movePoints = speedPoints * flyingPoints; var pointValue = survivalPoints * movePoints; return(pointValue); }
public static double Evaluate(List <double> inputList, EnemyTypes enemyType, SerializableChromosome chromosome) { var enemyAttributes = enemyType.Attributes(); var effectiveAttributes = BaseEnemy.GetGeneticAttributes(enemyAttributes, chromosome); var attributesAsInput = Enumerable.ToArray(EnemyAttributesToInput(effectiveAttributes)); for (var i = 0; i < MaxEnemies; i++) { inputList.AddRange(attributesAsInput); } var score = _machineLearningModel.Predict(inputList.ToArray()); return(score); }
public static double PointValue(this EnemyTypes enemyType) { if (PointValues.ContainsKey(enemyType)) { return(PointValues[enemyType]); } if (!HasCalculatedMinimums) { CalculateMinimums(); } var enemyAttributes = enemyType.Attributes(); var healthPoints = enemyAttributes.Health / minHealth; var speedPoints = enemyAttributes.Speed / minSpeed; var flyingPoints = enemyAttributes.IsFlying ? 1.5 : 1; var piercePoints = enemyAttributes.PiercingResist - minPierce; var bombardPoints = enemyAttributes.BombardResist - minBombard; var chemicalPoints = enemyAttributes.ChemicalResist - minChemical; var frostPoints = enemyAttributes.FrostResist - minFrost; var firePoints = enemyAttributes.FireResist - minFire; var electricPoints = enemyAttributes.ElectricResist - minElectric; var resistPoints = piercePoints + bombardPoints + chemicalPoints + frostPoints + firePoints + electricPoints; var survivalPoints = healthPoints * resistPoints; var movePoints = speedPoints * flyingPoints; var pointValue = survivalPoints * movePoints; PointValues.Add(enemyType, pointValue); return(pointValue); }