Comment puis-je trouver une simple équation de rendement décroissant?


25

Il existe des formules pour une équation de rendement décroissant; cependant, ceux-ci impliquent généralement exponentielle. Quels autres moyens existe-t-il pour arriver à une telle équation? Prenons, par exemple, le cas de test suivant - Une ferme produit 10 aliments, pour 10 fermes produites, le taux de production baisse de 5%.


1
Il pourrait être utile de nous expliquer pourquoi vous souhaitez éviter les exponentielles. En particulier, sont des expressions de la forme x ^ y ( x élevé à la y pouvoir -ème) trop (car les ordinateurs calculent généralement ceux qui utilisent exponentielles, au moins pour les non-entier y )?
Ilmari Karonen du

7
"Pour dix fermes produites, le taux de production baisse de 5%." C'est, euh, essentiellement exponentiel: y = 0,9 ^ (étage (x / 10)). Comme @IlmariKaronen le demande, quel est le problème avec l'exponentielle?
wchargin

1. Difficile à expliquer aux non-développeurs (et certains développeurs ont des problèmes d'exponentielle) 2. J'ai l'impression que cela coûte cher
Extrakun

2
il n'y a absolument rien d'inefficace à utiliser des équations exponentielles. Je pense que vous pensez à des algorithmes dans lesquels le nombre d' étapes augmente de façon exponentielle par rapport à la taille de l'entrée (par exemple la taille d'un tableau que vous souhaitez trier). Ceci est appelé "O", par exemple, vous pourriez dire qu'un algorithme particulier (ou une fonction) prend O (n) étapes pour s'exécuter. Un algorithme dans lequel les étapes augmentent de façon exponentielle pourrait être décrit comme prenant des étapes O (n au carré) par exemple. C'est totalement différent d'avoir une seule équation qui contient un terme exponentiel.
Max Williams

1
Je pense qu'Extrakun pourrait penser à ce genre de "cher:" stackoverflow.com/questions/2940367/… . Pour répéter ce que tout le monde dit: ce n'est pas cher. Si vous n'êtes pas à l'aise avec les exponentielles, recherchez des explications accessibles (peut-être mieux expliquées.com / articles/… ), ne les évitez pas.
kristina

Réponses:


30

Pour formuler une équation de rendement décroissant, je pense immédiatement aux fractions.

Graphique de 1 / F Ceci est un graphique de y=1/F

ydeviendra plus petit comme Fdevient plus grand. Cela vous donnera une baisse régulière qui n'atteint jamais 0. De cela, vous pouvez la transformer pour obtenir le type de courbe que vous souhaitez. L'utilisation de nombres> 0 donnera toujours une sortie positive qui n'est jamais 0.

Honnêtement, je recommanderais d'aller à WolframAlpha et de mettre quelques équations et de regarder les graphiques qu'il dessine pour voir s'il donne la courbe que vous voulez. En dehors de cela, lisez les équations linéaires et quadratiques pour pouvoir rapidement comprendre ce que vous voulez modifier dans une formule. C'est parce que la modélisation de graphiques à travers des équations est un peu un gros sujet, et si je pouvais l'expliquer ici parfaitement, je vendrais d'abord cette explication à certains professeurs de mathématiques.

Fondamentalement, pour les graphiques linéaires, rappelez-vous y=mx+c. mest le gradient, et peut être positif ou négatif selon ce dont vous avez besoin, et cest le point auquel il intercepte le y axis. xest votre variable d'entrée et yvotre sortie.

y = mx + c Ceci est un graphique de l' y=mx+cendroit m=1etc=0

Pour les graphiques quadratiques, cela devient un peu plus compliqué, donc je serai un peu vague et vous devrez lire vous-même les détails. Khan Academy est une très bonne ressource pour enseigner cela. C'est de forme générale y=ax²+bx+c. cest toujours l'ordonnée à l'origine, et vous pouvez la modifier pour «soulever» le graphique. aet les bdeux affectent la courbe de manière similaire, mais à des degrés différents.

y = -x² + 2x + 10 C'est ça y=-x²+2x+10. Notez le -x², ce qui rend la courbe inversée.

Fondamentalement, jouez avec les graphiques jusqu'à ce que vous obteniez ce que vous voulez, bien que je recommande fortement de le lire davantage si vous voulez concevoir l'expérience rapidement et proprement. Les équations de base sont importantes pour les jeux et vraiment intéressantes.

Il faut également noter les graphiques exponentiels et logarithmiques , c'est-à-dire les graphiques de y=e^xet y=ln(x)pour obtenir des graphiques rapidement croissants et décroissants en fonction de la transformation. En plus de cela, les vecteurs et les transformations sont utiles, car ils décrivent ce que vous faites le graphique "de base".


6
Vous utilisez la "théorie des graphes" plusieurs fois dans le post; c'est tout autre chose . Je pense que ce que OP recherche se rapproche de la modélisation.
Chaosed0

1
@ Chaosed0 Vous avez tout à fait raison, je déroutais. Modifié cependant, ta :)
Yann

+1, j'ai joué à plusieurs jeux où l'effet de certaines statistiques est fondamentalement 1/x. Voulez évidemment pour une telle courbe que vous ne xà égaler zéro, bien que!
Brian S

1
Je recommanderais en fait Desmos plutôt que WA pour la conception de fonctions. Les deux principales raisons sont que c'est en temps réel et qu'il est manipulable. Autrement dit, définissez y = a^xet vous pouvez ajouter un curseur pour ajouer avec la fonction. Vous pouvez en avoir autant que vous le souhaitez. Vous pouvez même animer les curseurs. C'est plutôt sympa, en fait. (Equivalent à Mathematica Manipulate.)
wchargin

1
Graph Toy (qui existe depuis plusieurs années) est un bel outil pour essayer quelques équations. Je l'utilise tout le temps.
tigrou

20

Rendements décroissants = dérivé décroissant

  • Étant donné que vous voulez toujours des rendements même à des niveaux plus élevés, le dérivé doit être positif, sinon la construction de plus de fermes diminuerait la production alimentaire (ce qui pourrait même avoir du sens si vous prenez en compte les coûts de logistique et d'entretien)
  • Il devrait approcher zéro de manière asymptotique, s'il va vers une valeur non nulle, vous vous retrouverez avec une augmentation constante par ferme à un certain niveau
  • en fonction de la vitesse à laquelle il va à zéro, vous pouvez avoir une limite supérieure ou une fonction illimitée

Donc, qu'as tu besoin de faire? Choisissez une fonction qui correspond aux critères ci-dessus et intégrez-la.
Le choix le plus simple pour cette tâche est g(t,n) = 1/(t+1)^nn=1marque la frontière entre les fonctions toujours croissantes et bornées.
L'intégrale de g de 0 à x est ce dont vous avez besoin: f(x,n) = ((x+1)**(1-n) - 1)/(1-n)
voici à quoi cela ressemblen

entrez la description de l'image ici
Et ici, c'est normalisé à la même valeur finale

entrez la description de l'image ici
En changeant l'exposant, nvous pouvez facilement ajuster l'équilibrage
Remarque: La dérivée ici est la production par ferme, tandis que l'intégrale est la production totale pour un certain nombre de fermes


5

En général, une équation linéaire commencera par y = mx + b, où best votre valeur de départ et mxcomment vous ajustez la valeur de départ au fur et à xmesure.

Donc, la première partie de votre équation, le b, sera 10parce que vous voulez que les fermes commencent à 10 aliments.

y = mx + 10

Ensuite, dans votre cas, vous souhaitez ajuster la nourriture produite par dix fermes. Vous devrez donc diviser par dix pour obtenir une équation qui fonctionne pour dix fermes (en supposant que le x / 10renvoie un entier, c'est 13 / 10 = 1-à- dire :

y = m * (x / 10) + 10.

Donc, finalement, nous devons déterminer comment nous voulons que la nourriture change pour chaque x / 10ferme. Dans votre cas, vous voulez qu'il diminue de 0,5 (5% de 10), ce qui est linéaire. Nous obtenons donc:

y = -0.5 * ( x / 10 ) + 10.

Donc, pour la ferme x = 5, nous obtenons 5 / 10 = 0, 0 * -0.5 = 0, 0 + 10 = 10. Pour la ferme que x = 11nous obtenons 11 / 10 = 1, 1 * -0.5 = -0.5, -0.5 + 10 = 9.5, pour la ferme 23, nous obtiendrions 9,0.

Ensuite, il vous suffit de calculer la nourriture totale pour toutes les fermes.

y = 0
for( x = 0; x < totalFarms; x++ )
{
    y += -5 * ( x / 10 ) + 10;
}

Mais peut-être que vous de 5%, vous vouliez qu'il diminue de 5% de la valeur précédente. C'est-à-dire 10, 10 * 0.95 = 9.5, 9.5 * 0.95 = 9.025(dans ce cas, le montant que nous diminuons devient de moins en moins). Permet donc de modifier l'équation. 5%est une augmentation de type exponentielle, et la formule exponentielle est y = b*m^x.

Nous avons encore b = 10, et nous devons faire notre division par 10 astuce. Nous avons donc y = 10*m^(x/10). mest 0.95, puisque nous voulons prendre 95% de la valeur à chaque fois. Donc, l'équation pour la ferme xest y = 10*0.95^(x/10).


4

Un rendement décroissant linéaire ferait-il l'affaire? production par exploitation = (1 - (0,05 * (f / 10))) * taux de production. Cela donne un pic de production totale (taux * # d'exploitations) à f = 100.


Hé, merci, bien que je cherche des principes généraux pour arriver à l'équation (comme vous pouvez le voir, les mathématiques ne sont pas mon fort)
Extrakun

2

Vous voudrez peut-être envisager une solution algorithmique qui correspond à la situation.

C'est-à-dire, réfléchissez aux raisons pour lesquelles la rentabilité de votre jeu diminue et modélisez-les.

Plusieurs installations du même type peuvent avoir des rendements décroissants, car il peut y avoir d'autres ressources ou installations dont elles dépendent, ou qui entraînent des goulets d'étranglement, ou d'autres situations limitantes, comme un réseau routier, ou des travailleurs ou des transports disponibles ou de l'eau douce ou l'électricité ou autre chose.

Une ferme peut produire 10 aliments par jour dans des circonstances idéales, mais cela nécessite également deux heures d'agriculteur par jour. Il nécessite également une eau fraîche par aliment et par jour, et son propre puits ne fournit que jusqu'à 5 eaux par jour. Le reste doit être prélevé dans un ruisseau ou une rivière adjacent ou apporté par transport. Et amener la nourriture là où elle doit être utile peut également être un problème. Etc. Supprimez-en ou ajoutez-en plus selon ce que vous voulez représenter, mais cela peut être des raisons beaucoup plus intéressantes et significatives, qui ajoutent de l'intérêt et de la valeur à vos autres systèmes de jeu, par opposition à une formule mathématique artificielle non basée sur d'autres éléments du jeu .


1

Si vous voulez utiliser une équation généralisée, vous pouvez utiliser un graphique en cosinus: A * cos (Bx + C) + D

Mais modifiez-le à une demi-période, de sorte qu'il inclurait la hausse pseudo exponentielle au début, puis une courte période d'augmentations linéaires, jusqu'à un point de rendement finalement décroissant. Le seul problème avec cela est qu'il faudrait créer un plafond infranchissable. Donc, après un certain nombre de fermes, vous ne verriez aucune augmentation.

L'image ci-dessous est un graphique des augmentations de rythme pendant 30 minutes, faisant exactement la même séance d'entraînement en préparation. Ce n'est évidemment pas parfait, mais vous pourrez peut-être travailler dessus pour trouver ce que vous cherchez.

Exemple de courbe cosinus utilisée pour déterminer les rendements décroissants

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.