The model
Every plan is one mixed-integer program covering every recipe and facility at once, solved with HiGHS. Each recipe your facility levels and modules unlock, \(r\), gets a rate \(b_r\) (batches per second) and a whole number of units \(u_r\) set to it: plots for a crop, machines for a processed item.
\[ \max \ \sum_i p_i \, s_i \;-\; \sum_r c_r \, b_r \]
where \(s_i\) is how much of item \(i\) is sold per second at price \(p_i\), and \(c_r\) is a crop's seed cost. Subject to:
- Whole units. \(b_r \, t_r \le u_r\), with \(u_r\) a whole number and \(t_r\) the time per batch. A unit runs one recipe and is left running.
- Item balance. Everything made covers what other recipes use plus what's sold. A quick variant makes the same item as the regular one.
- What you own. For every facility and level \(L\), the units on recipes needing level \(L\) or higher add up to at most what you own at that level. A higher-level plot can run a lower-level recipe.
- Growing environments. Plots of a crop needing Cool, Warm, Freeze, Scorching or Adequate must be covered by a Heat Furnace, Cooling Unit or Sunlamp set to that mode (see below).
HiGHS proves the plan is the best possible. On the rare setup where that takes longer than 30 seconds, it stops with the best plan so far and the results say how far from the best it could be. Every plan is then re-checked on its own before it's shown.
Time per batch
Crops and trees take their grow time. Everything else has a workload, and how long it takes depends on the Aniimo's Efficiency \(e\), which the facility screen shows, and a base rate \(r\):
\[ t = \frac{\text{workload}}{r \times e \times 1.2^{\,\text{personality}}} \]
At a processor, \(r\) is one workload a second. At a gathering facility (Well, Mine, Sandcastle, Dewy House and the like) and at the Dance Pad Polisher and Aniipod Maker, it's higher on recipes needing a higher ability level: 1 a second at level 1, 1.25 at level 2 and 1.5 at level 3. A Growth Fruit, 5,400 workload, takes an hour at 100%.
Efficiency \(e\) depends on the Aniimo's ability level compared with the level the recipe needs. At exactly the needed level it's 100%. At a processor, one level above the recipe's need is 300%, and each level after that adds 100% (400%, 500%). At a gathering facility, each level above adds 50% on a level-1 recipe and 40% on a harder one; the Dance Pad Polisher and Aniipod Maker add 40% a level. The personality term counts only when the Aniimo has the facility's personality (+20%); the Polisher and Aniipod Maker have none.
Environment coverage
A Heat Furnace and a Sunlamp take 1×1 tile, a Cooling Unit 2×2 (the game's data), and each covers a 9×9 area centered on it. A plot counts as covered if any part of it is inside, and everything snaps to quarter tiles. Every useful way one building can cover a mix of Farmland, Woodland and the rest is worked out once by exact packing; the plan then picks a mode and one of those mixes for each building.
Level up
A level-up costs coins \(C_0\) plus a Woodworking Bench item and a Chimney Kiln item, \(C_1\) and \(C_2\), and you may already have some of each, \(S_j\). The plan finds the most level-ups per day, \(\lambda\), it could keep up, where for coins and each item:
\[ \text{made}_j \ \ge\ \frac{\lambda \, (C_j - S_j)}{86400} \]
(\(\text{made}_j\) per second), so the level-up takes \(1/\lambda\) days. Stock of anything lower in a chain (Wood Blocks, Mineral Sand, a lower tier) counts toward what's made, since the Bench and Kiln process it up. With Next level among your objectives, \(\lambda\) is what that objective counts (see Objectives). Once the plan is set, a last solve keeps its pace and its coins and gives spare Bench and Kiln time to the level-up items, which is why ore is often ready before wood.
Each tier takes 8 of the tier below (4 for the last), so the Bench and Kiln switch between tiers rather than running one recipe like other processors.
Objectives
The objectives you switch on (next level, event points, Aniimo EXP, Aniipods, stars) are taken in your order. Each one is pushed as high as it can go while keeping what the ones above it reached, which then becomes a floor for everything after: an objective lower down never takes anything from a higher one. Coins always come last: a final solve earns as many as those floors leave room for. Aniimo EXP and Aniipods count as their own currencies, so the same model handles them like coins.
Stars
Every Aniimo at home makes wishing stars: 120 a day, ×1.5 if shiny and ×1.5 if prismatic (the game's data). The homeland holds a set number of Aniimo, so the stars objective keeps as few of them at work as the objectives above allow, counted as the team view counts them: a processing building's machines share their Aniimo while their combined time stays within 100% (its working time rounded up), a Mine or Well keeps one per unit, the crop team needs its working time rounded up per ability, and every environment building and generator has a resident. The objectives below it can't put more to work. The card shows the best case: everyone at home counted as shiny and prismatic, 270 stars a day each.
E-Mode (from RV 12)
Once the plan is set, it tries running machines on power from the generators and poles you own. A machine on power needs no Aniimo and works at the network's efficiency: power supplied over power used, up to 120%. Each generator needs a Lightning Aniimo. Every efficiency is tried, and a conversion is kept only if the plan still makes as much with fewer Aniimo and the network fits on your parcels; the smallest team wins.
Time to reach a goal
Each product starts adding up once its first batch clears its ingredient chain (its lead time), then keeps its steady rate:
\[ \text{amount}(t) = \sum_i \text{rate}_i \cdot \max(0,\ t - \text{lead}_i) \]
This only ever grows with \(t\), so the time to reach a target is found by binary search.
The backup planner
If the exact planner can't run (rare; reloading the page usually fixes it), an older planner steps in. It solves the same problem as a continuous linear program, rounds to whole plots and one recipe per machine, then re-solves. Its plans are usually close to the best but not guaranteed, and the results say when it was used.
Le modèle
Chaque plan est un seul programme linéaire en nombres entiers qui couvre toutes les recettes et tous les bâtiments en même temps, résolu avec HiGHS. Chaque recette \(r\) débloquée par vos niveaux de bâtiments et vos modules reçoit un rythme \(b_r\) (lots par seconde) et un nombre entier d’unités \(u_r\) qui lui sont affectées : des parcelles pour une culture, des machines pour un produit transformé.
\[ \max \ \sum_i p_i \, s_i \;-\; \sum_r c_r \, b_r \]
où \(s_i\) est la quantité d’objet \(i\) vendue par seconde au prix \(p_i\), et \(c_r\) le coût des graines d’une culture. Sous les contraintes :
- Unités entières. \(b_r \, t_r \le u_r\), avec \(u_r\) entier et \(t_r\) la durée d’un lot. Une unité fabrique une seule recette et reste en fonctionnement.
- Équilibre des objets. Tout ce qui est fabriqué couvre ce que les autres recettes consomment, plus ce qui est vendu. Une variante rapide fabrique le même objet que la recette normale.
- Ce que vous possédez. Pour chaque bâtiment et chaque niveau \(L\), les unités affectées à des recettes demandant le niveau \(L\) ou plus ne dépassent pas ce que vous possédez à ce niveau. Une parcelle de niveau supérieur peut accueillir une recette de niveau inférieur.
- Environnements de culture. Les parcelles d’une culture qui demande un environnement Frais, Chaud, Gel, Brûlant ou Suffisant doivent être couvertes par une Fournaise thermique, une Climatisation ou une Lampe d’incubation réglée sur ce mode (voir plus bas).
HiGHS prouve que le plan est le meilleur possible. Dans les rares configurations où cela prend plus de 30 secondes, il s’arrête sur le meilleur plan trouvé et les résultats indiquent l’écart maximal possible avec l’optimum. Chaque plan est ensuite revérifié indépendamment avant d’être affiché.
Durée d’un lot
Les cultures et les arbres suivent leur temps de pousse. Les autres recettes ont une charge de travail, et leur durée dépend de l’Efficacité \(e\) de l’Aniimo, affichée sur l’écran du bâtiment, et d’un rythme de base \(r\) :
\[ t = \frac{\text{charge}}{r \times e \times 1.2^{\,\text{personnalité}}} \]
Sur une machine de transformation, \(r\) vaut une unité de travail par seconde. Sur un bâtiment de collecte (Puits, Miner, château de sable et bâtiments similaires), ainsi que sur le Polissoir dansant et la Machine à Aniipod, il augmente avec le niveau de capacité demandé par la recette : 1 par seconde au niveau 1, 1,25 au niveau 2 et 1,5 au niveau 3. Un Fruit de croissance, soit 5 400 unités de travail, prend une heure à 100 %.
L’Efficacité \(e\) dépend du niveau de capacité de l’Aniimo par rapport à celui demandé par la recette. Au niveau exact, elle vaut 100 %. Sur une machine de transformation, un niveau au-dessus donne 300 %, puis chaque niveau supplémentaire ajoute 100 % (400 %, 500 %). Sur un bâtiment de collecte, chaque niveau au-dessus ajoute 50 % pour une recette de niveau 1 et 40 % pour une recette plus difficile ; le Polissoir dansant et la Machine à Aniipod ajoutent 40 % par niveau. Le terme de personnalité ne compte que si l’Aniimo a la personnalité du bâtiment (+20 %) ; le Polissoir et la Machine à Aniipod n’en ont pas.
Couverture des environnements
La Fournaise thermique et la Lampe d’incubation occupent 1×1 case, la Climatisation 2×2 (données du jeu), et chacune couvre une zone de 9×9 centrée sur elle. Une parcelle est couverte si une partie d’elle se trouve dans la zone, et tout est aligné au quart de case. Toutes les façons utiles dont un bâtiment peut couvrir un mélange de Fermes, de Pépinières et d’autres bâtiments sont calculées une fois par placement exact ; le plan choisit ensuite un mode et l’un de ces mélanges pour chaque bâtiment.
Montée de niveau
Une montée de niveau coûte des pièces \(C_0\), un objet de l’Établi de menuiserie et un objet du Four de cheminée, \(C_1\) et \(C_2\), dont vous avez peut-être déjà une partie en stock, \(S_j\). Le plan cherche le plus grand nombre de montées de niveau par jour, \(\lambda\), que la production peut suivre, où pour les pièces et chaque objet :
\[ \text{fabriqué}_j \ \ge\ \frac{\lambda \, (C_j - S_j)}{86400} \]
(\(\text{fabriqué}_j\) par seconde) : la montée de niveau prend donc \(1/\lambda\) jours. Le stock de tout ce qui se trouve plus bas dans une chaîne (Blocs de bois, Sable minéral, un rang inférieur) compte dans la production, puisque l’Établi et le Four le transforment. Avec « Niveau suivant » parmi vos objectifs, \(\lambda\) est la valeur de cet objectif (voir Objectifs). Une fois le plan fixé, un dernier calcul garde ce rythme et ces pièces, et donne le temps libre de l’Établi et du Four aux objets de montée de niveau : c’est pourquoi le minerai est souvent prêt avant le bois.
Chaque rang demande 8 objets du rang inférieur (4 pour le dernier) : l’Établi et le Four alternent donc entre les rangs au lieu de fabriquer une seule recette comme les autres machines.
Objectifs
Les objectifs activés (niveau suivant, points d’événement, EXP d’Aniimo, Aniipods, étoiles) sont pris dans votre ordre. Chacun est poussé au maximum en gardant ce que les précédents ont atteint, qui devient un minimum pour tous les suivants : un objectif placé plus bas ne retire jamais rien à un objectif placé plus haut. Les pièces viennent toujours en dernier : un dernier calcul en gagne autant que ces minimums le permettent. L’EXP d’Aniimo et les Aniipods sont traités comme des monnaies à part entière : le même modèle les gère comme les pièces.
Étoiles
Chaque Aniimo à la maison produit des étoiles : 120 par jour, ×1,5 s’il est shiny et ×1,5 s’il est prismatique (données du jeu). Le logis a un nombre de places fixe, donc l’objectif « Étoiles » garde le moins d’Aniimo possible au travail sans rien retirer aux objectifs placés au-dessus, comptés comme dans la vue Équipe : les machines d’un bâtiment de transformation partagent leur Aniimo tant que leur temps cumulé reste sous 100 % (temps de travail arrondi au-dessus), une mine ou un puits garde un Aniimo par bâtiment, l’équipe des cultures son temps de travail arrondi au-dessus pour chaque capacité, et chaque bâtiment d’environnement et générateur a un résident. Les objectifs placés en dessous ne peuvent plus en remettre au travail. La carte affiche le maximum : tous les Aniimo à la maison comptés shiny et prismatiques, soit 270 étoiles par jour chacun.
Mode E (dès le RV 12)
Une fois le plan fixé, il essaie de faire tourner des machines sur l’électricité de vos générateurs et poteaux. Une machine électrique n’a pas besoin d’Aniimo et travaille à l’efficacité du réseau : puissance fournie sur puissance consommée, jusqu’à 120 %. Chaque générateur demande un Aniimo Foudre. Toutes les efficacités sont essayées, et une conversion n’est gardée que si le plan produit autant avec moins d’Aniimo et que le réseau tient sur vos parcelles ; la plus petite équipe l’emporte.
Temps pour atteindre un objectif
Chaque produit commence à s’accumuler une fois que son premier lot a traversé sa chaîne d’ingrédients (son délai de démarrage), puis garde un rythme constant :
\[ \text{quantité}(t) = \sum_i \text{rythme}_i \cdot \max(0,\ t - \text{délai}_i) \]
Cette quantité ne fait qu’augmenter avec \(t\) : le temps nécessaire pour atteindre un objectif est donc trouvé par recherche dichotomique.
Le calcul de secours
Si le calcul exact ne peut pas s’exécuter (c’est rare ; recharger la page suffit généralement), un ancien calculateur prend le relais. Il résout le même problème sous forme de programme linéaire continu, arrondit à des parcelles entières et à une recette par machine, puis recalcule. Ses plans sont généralement proches du meilleur, sans garantie, et les résultats indiquent quand il a été utilisé.