Persona 3 FES Calculator - Algorithmique Optimisation (2), la géométrie sauve la Terre!

Un bref récapitulatif du dernier message. avec quelques optimisations, nous pouvons réduire le nombre de contrôles pour respectivement valables à partir de fusions et à. Dans ce post, je voudrais démontrer que nous pouvons, comme si souvent, réduire ce au prix d'une augmentation de l'empreinte mémoire du programme.







Persona niveaux Mise en cache

La première chose à noter est que nous pouvons prédire le niveau d'un Persona nous FUSE obtenir quelle que soit la Persona actuelle dans l'inventaire, puisqu'il est seulement influencé par le lien social associé aux Arcanes du Persona. Par conséquent, nous pouvons mettre en cache les niveaux de tous les possibles Persona, ce qui sera utile pour le triangle des fusions.

Une mise en oeuvre par la force brute d'un système de mise en mémoire cache des résultats de fusion serait d'utiliser un réseau à deux dimensions (trois dimensions pour des fusions en triangle) pour enregistrer les résultats de chaque fusion possible. Toutefois, en raison des règles des fusions, une grande partie des combinaisons de Persona sont réellement invalides. Pour des fusions propagation normales, le nombre de combinaisons possibles est, avec seulement 9998 d'entre eux entraînant une Persona valide. Cet effet est encore plus prononcé dans le cas de triangle, fusions où les combinaisons possibles pour élèvent. Le nombre de valides lors du démarrage fusion du Persona l'utilisateur possède actuellement dépend des niveaux de la Persona, si nous utilisons le niveau de base de chaque Persona, il n'y a que 13344 combinaisons résultant dans une nouvelle Persona.

Lors du remplissage du cache, nous pouvons sauver les fusions de telle façon que nous pouvons obtenir une liste de toutes les fusions qui se traduisent par un Persona donné. Par conséquent, maintenant que nous ne devons vérifier toutes les combinaisons comme précédemment, nous pouvons omettre ces fusions qui conduiraient à un Persona nous avons déjà dans l'ensemble de Persona créé. De plus, nous avons pu mettre en cache les listes de Persona qui apparaissent comme ingrédients pour un Persona spécifique, afin que nous puissions vérifier cette liste contre la Persona disponible pour voir s'il est même possible de créer la Persona de ceux disponibles. Cependant, je suppose que, dans ce cas, il est plus simple de vérifier que tous et obtenir à peu près la même vitesse.







Le système de mise en cache bien sûr vient à un coût de la mémoire. Pour chaque fusion propagation normale, nous devons sauver les deux ingrédients Persona ainsi que le Persona résultant. Comme il y a 169 Persona dans le jeu, une référence à un Persona dans un octet correspond. Nous avons donc besoin 3 octets pour mettre en cache un résultat de la fusion. Comme mentionné ci-dessus, il y a 10580 valides possible sur des fusions de l'ensemble de tous les Persona, nous avons donc 3 * 10580 octets qui est d'environ 31 Ko. Pour les fusions de propagation du triangle, nous ne pouvons pas donner un nombre exact sans utiliser les niveaux réels de Persona de l'utilisateur. Mon hypothèse est que le nombre résultant de l'ensemble Persona à leur niveau de base, 13986, est proche du pire des cas, ce qui signifie que nous aurons besoin (avec l'octet supplémentaire pour le troisième Persona) 4 * 13986 octets = 55 Ko. (Le calculateur Persona utilise plus de mémoire en raison de ne pas mettre en œuvre un éventail d'informations rares et une économie d'environ Persona en utilisant les références d'objets (32/64 bits) et pas les chiffres).

Triangle Fusion Résultats Mise en cache

Une chose importante à propos de la mise en cache des résultats de fusion triangle est le suivant: Dans le triangle des fusions, le niveau des trois impliqués Persona effective maximale (pas de base) est nécessaire pour savoir dans quel ordre pour les fusionner. Par conséquent, un cache pour les fusions triangle a besoin d'utiliser les niveaux de Persona dans le Compendium actuel de l'utilisateur. Pour être en mesure de renoncer au tri chaque fois un ensemble arbitraire de 3 Persona est testé, nous pouvons sauver le même résultat pour chaque permutation de la fusion dans le cache. Pour la Persona qui ne sont pas encore dans le recueil du joueur, nous pouvons prédire leurs niveaux sur la base des rangs de lien social. De cette façon, la Persona peut être entré dans un ordre arbitraire, au coût d'utilisation de la mémoire pour les informations redondantes pour les permutations.

post navigation

Laisser un commentaire Annuler la réponse