Як я можу придумати просте зменшення рівняння повернення?


25

Існують формули для зменшення рівняння повернення; однак, зазвичай, це стосується експоненції. Які ще способи скласти таке рівняння? Візьмемо, наприклад, наступний тестовий випадок - Одне господарство виробляє 10 продуктів харчування, на кожні 10 вироблених ферм рівень виробництва падає на 5%.


1
Це може допомогти, якщо ви сказали нам, чому ви хочете уникати експоненцій. Зокрема, чи не виходять вирази форми x ^ y ( x підняті до y- ї потужності) (оскільки комп'ютери зазвичай обчислюють ті, хто використовує експоненти, принаймні, для не цілого числа y )?
Ільмарі Каронен

7
"На кожні десять вироблених ферм рівень виробництва падає на 5%". Це, е-е, по суті експоненціальна: y = 0,9 ^ (пол (x / 10)). Як @IlmariKaronen запитує, що не так з експоненціалом?
wchargin

1. Важко пояснити не розробникам (а у деяких розробників є проблеми з експоненціалом) 2. Я маю враження, що це дорого
Extrakun

2
немає абсолютно нічого неефективного у використанні експоненціальних рівнянь. Я думаю, що ви думаєте, це алгоритми, в яких кількість кроків збільшується експоненціально порівняно з розміром вводу (наприклад, розмір масиву, який ви хочете сортувати). Це називається "O", наприклад, ви можете сказати, що певний алгоритм (або функція) робить O (n) кроки для запуску. Алгоритм, в якому дії збільшуються експоненціально, може бути описаний, наприклад, як O (n квадрат). Це зовсім інакше, ніж мати єдине рівняння, в якому є експоненціальний член.
Макс Вільямс

1
Я думаю, що Екстракун може думати про такий "дорогий": stackoverflow.com/questions/2940367/… . Повторювати те, що всі інші говорять: це не дорого. Якщо вам не вистачає експонентів, шукайте доступні пояснення їх (можливо, betterexplained.com/articles/… ), не уникайте їх.
Крістіна

Відповіді:


30

Для формулювання рівняння, що зменшується, повертається, я б одразу подумав дроби.

Графік 1 / F Це графік y=1/F

yбуде менше, як Fстає більше. Це дасть вам стійке випадання, яке ніколи не досягне 0. З цього ви можете перетворити його, щоб отримати потрібну криву. Використання цифр> 0 завжди дає позитивний результат, який ніколи не дорівнює 0.

Чесно кажучи, я рекомендую перейти до WolframAlpha і ввести деякі рівняння і подивитися графіки, які він малює, щоб побачити, чи дає він криву, яку ви хочете. Крім цього, прочитайте лінійні та квадратичні рівняння, щоб швидко зрозуміти, що ви хочете змінити у формулі. Це тому, що моделювання графіків за допомогою рівнянь є великою темою, і якби я міг би це пояснити ідеально, я б спочатку продав це пояснення деяким вчителям математики.

В основному, для лінійних графіків пам’ятайте y=mx+c. mє градієнтом, і може бути позитивним або негативним залежно від того, що вам потрібно, і cє точкою, в якій він перехоплює y axis. xє вашою вхідною змінною і yє вашим результатом.

y = mx + c Це графік, y=mx+cде m=1і деc=0

Що стосується квадратичних графіків, це стає трохи складніше, тому я буду трохи розпливчастим, і вам доведеться самостійно читати інформацію. Академія Хана - це дійсно хороший ресурс для викладання цього. Це загальної форми y=ax²+bx+c. c- це все-таки перехоплення y, і ви можете налаштувати його, щоб "підняти" графік. aі bобидва впливають на криву однаково, але в різній мірі.

y = -x² + 2x + 10 Це y=-x²+2x+10. Зауважте -x², що робить криву перевернутою.

В основному, пограйте з графіками, поки не отримаєте те, що хочете, хоча я настійно рекомендую прочитати на ньому більше, якщо ви хочете спроектувати досвід швидко та чисто. Основні рівняння важливі для ігор та дійсно цікаві.

Інші речі, що слід зазначити, - це експоненціальні та логарифмічні графіки, тобто графіки y=e^xта y=ln(x)отримувати графіки, що швидко збільшуються та швидко зменшуються, залежно від перетворення. Окрім цього, корисні вектори та перетворення, оскільки вони описують, що ви робите з "базового" графіка.


6
Ви кілька разів використовуєте "теорію графів" у дописі; це щось інше цілком . Я думаю, те, що ОП шукає, наближається до моделювання.
Chaosed0

1
@ Chaosed0 Ви абсолютно праві, я дерпев. Відредаговано, хоча :)
Янв

+1, я зіграв кілька ігор, де ефект деяких статистичних даних є в основному 1/x. Очевидно , що для такої кривої , ви ніколи не хочете , xщоб рівнятися нулю, хоча!
Брайан S

1
Я б фактично рекомендував Desmos над WA для проектування функцій. Дві основні причини полягають у тому, що це в режимі реального часу та керованість ним. Тобто встановіть y = a^x, і ви можете додати повзунок для aгри з функцією. Ви можете їх мати скільки завгодно. Можна навіть анімувати повзунки. Насправді це дуже приємно. ( Manipulate
Рівносильно

1
Графічна іграшка (яка існує з кількох років) - хороший інструмент для спробування деяких рівнянь. Я ним користуюся постійно.
tigrou

20

Зменшення прибутку = зменшення похідної

  • Оскільки ви все ще хочете отримати деяку віддачу навіть на більш високих рівнях, це означає, що похідна продукція повинна бути позитивною, інакше створення більшої кількості ферм зменшить виробництво продуктів харчування (що може навіть мати сенс, якщо врахувати логістику та витрати на утримання)
  • Він повинен підходити до нуля асимптотично, якщо він іде до нульового значення, ви закінчитеся постійним збільшенням на ферму на якомусь рівні
  • залежно від того, наскільки швидко він переходить до нуля, ви можете мати верхню межу або необмежену функцію

Отже, що вам потрібно зробити? Виберіть функцію, яка відповідає зазначеним вище критеріям та інтегруйте її.
Найпростішим вибором для цього завдання є те, g(t,n) = 1/(t+1)^nде n=1позначається межа між постійно зростаючими та обмеженими функціями.
Інтеграл g від 0 до x - це те, що вам потрібно: f(x,n) = ((x+1)**(1-n) - 1)/(1-n)
Ось як це виглядає для різнихn

введіть тут опис зображення
І тут його нормалізували до того ж кінцевого значення

введіть тут опис зображення
Змінивши показник, nви можете легко скорегувати балансування.
Примітка: Похідна тут - це продукція на ферму, тоді як інтеграл - це загальна продукція для ряду ферм


5

Загалом, лінійне рівняння почнеться з того y = mx + b, де bє ваше початкове значення, і mxяк ви регулюєте початкове значення у міру xзбільшення.

Таким чином , в першій частині вашого рівняння, то b, буде , 10тому що ви хочете ферми , щоб почати на 10 продуктів харчування.

y = mx + 10

Далі, у вашому випадку, ви хочете налагодити харчування, вироблене кожні десять ферм. Таким чином, вам потрібно буде ділити на десять, щоб отримати рівняння, яке працює для кожні десять ферм (якщо вважати, що x / 10повертає ціле число, тобто 13 / 10 = 1:

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

Отже, нарешті, нам потрібно розібратися, як ми хочемо, щоб їжа мінялася для кожного x / 10господарства. У вашому випадку ви хочете, щоб він зменшився на 0,5 (5% від 10), що є лінійним. Таким чином ми отримуємо:

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

Тож для ферми x = 5ми отримуємо 5 / 10 = 0, 0 * -0.5 = 0, 0 + 10 = 10. За ферму, яку x = 11ми отримуємо 11 / 10 = 1, 1 * -0.5 = -0.5, -0.5 + 10 = 9.5, для ферми 23 ми отримали 9,0.

Тоді потрібно просто обчислити загальну кількість продуктів харчування для всіх господарств.

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

Але, можливо, ви на 5%, ви хотіли, щоб він зменшився на 5% від попереднього значення. Тобто, 10, 10 * 0.95 = 9.5, 9.5 * 0.95 = 9.025(у цьому випадку сума, яку ми зменшуємо, стає все менше і менше). Тож давайте модифікуємо рівняння. 5%є збільшенням експоненціального типу, а експоненціальна формула - y = b*m^x.

У нас все ще є b = 10, і нам потрібно зробити ділення на 10 трюків. Так ми маємо y = 10*m^(x/10). mце 0.95, оскільки ми хочемо щоразу приймати 95% вартості. Отже, рівняння для ферми xє y = 10*0.95^(x/10).


4

Чи зробить лінійне зменшення повернення? виробництво на ферму = (1 - (0,05 * (f / 10))) * темп виробництва. Це дає пік загального виробництва (норма * # господарств) при f = 100.


Гей, дякую, хоч я шукаю загальні принципи, щоб
досягти

2

Ви можете розглянути алгоритмічне рішення, яке відповідає ситуації.

Тобто, подумайте, чому у вашій ігровій ситуації зменшуються прибутки, і моделюйте їх.

Кілька об'єктів одного типу можуть мати зменшення віддачі, тому що можуть бути інші ресурси або споруди, від яких вони залежать, або які призводять до вузьких місць або інших обмежувальних ситуацій, таких як дорожня мережа, наявні працівники, транспорт або прісна вода або електроенергія чи що завгодно.

Одне господарство може виробляти 10 продуктів харчування на день за ідеальних обставин, але для цього також потрібно дві години фермера. Також для цього потрібна одна прісна вода на їжу на день, а її власний колодязь забезпечує лише до 5 води на день. Решту потрібно взяти з сусіднього потоку чи річки або привезти транспортом. І потрапляння їжі туди, де вона повинна бути корисною, також може бути проблемою. І т.д. Видаліть деякі або додайте більше залежно від того, що ви хочете представляти, але це можуть бути набагато цікавіші та змістовніші причини, які додають інтересу та цінності вашим іншим ігровим системам, на відміну від штучної математичної формули, що не базується на інших ігрових елементах .


1

Якщо ви хочете, щоб узагальнене рівняння зіпсувалося, ви можете використовувати графік косинуса: A * cos (Bx + C) + D

Але змініть його на півперіоду, щоб воно включало псевдоекспонентний підйом на початку, потім короткий період лінійного збільшення, до остаточно зменшуваної точки прибутку. Єдина проблема з цим полягає в тому, що потрібно було б створити непрохідну стелю. Тож після певної кількості ферм ви не побачите збільшення.

Зображення, представлене нижче, - це графік збільшення темпу протягом 30 хв., Виконуючи саме такі тренування під час підготовки. Це, очевидно, не ідеально, але ви, можливо, зможете вирішити це, щоб знайти те, що шукаєте.

Приклад кривої косину, що використовується для визначення зменшення віддачі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.