Ищите функцию, которая будет равномерно распределять прибыль / убыток между двумя деловыми партнерами - PullRequest
5 голосов
/ 02 января 2011

Это не домашняя работа, потому что я не студент. Это для моего общего любопытства. Я извиняюсь, если я заново изобретаю колесо. Функция, которую я ищу, может быть определена следующим образом (независимость от языка):

int getPercentageOfA(double moneyA, double workA, double moneyB, double workB)
{
    // Perhaps you may assume that workA == 0
    // Compute result
    return result;
}

Предположим, Алиса и Боб хотят вести бизнес вместе ... например ... продавать подержанные книги. Алиса заинтересована только в том, чтобы вкладывать в нее деньги и ничего больше. Боб мог бы вложить деньги, но у него не было бы денег, доступных для инвестирования. Однако он приложит усилия, чтобы найти продавца, покупателя и провести техническое обслуживание.

Нет инструментов, расходов на образование, медицинское страхование или другие расходы, которые следует учитывать. И Алиса, и Боб хотят разделить прибыль «поровну» (разный вес, например 40/60 для продвинутых пользователей). Оба являются предпринимателями, поэтому они имеют дело как с низким ROI / заработной платой, так и с высоким доходом. Не существует фиксированной заработной платы, минимальной заработной платы, фиксированной ROI или минимальной ROI. Они пытаются найти наилучшую сделку, рискнуть и пойти на это.

Теперь давайте придерживаться модели 50/50. Если Алиса инвестирует 100 долларов, Боб вкладывает в работу, и в итоге они получают прибыль (или убыток) в размере 60 долларов, они делят ее поровну - либо оба получают по 30 долларов за свои усилия / инвестиции, либо Боб должен Алисе 30 долларов.

Вторая возможность: Алиса и Боб инвестируют 100, затем Боб выполняет всю работу, и в итоге они делят прибыль в 60 долларов. Похоже, что Алиса должна получить только 15 долларов, потому что 30 долларов этой прибыли было получено от инвестиций Боба и усилий Боба, поэтому Алиса не получит ничего, а остальные 30 долларов должны быть разделены на 50/50.

Оба приведенных выше примера тривиальны, даже когда A и B хотят разделить его 35/65 или что-то еще. Теперь все становится сложнее: что, если Алиса инвестирует 70 долларов, а Боб инвестирует 30 долларов и выполняет всю работу. Это кажется простым: (70,30) = (30,30) + (40,0) ... но, если бы мы только знали, как взвесить две части относительно друг друга. Еще один сложный (я думаю) пример: что, если Алиса и Боб инвестируют 70 и 30 долларов соответственно, а также вкладывают одинаковое количество работы?

У меня есть несколько точек данных:

  • Когда А и В вкладывают одинаковое количество работы и одинаковые $ - 50/50.
  • Когда А вкладывает 100% денег, а Б выполняет 100% работы - 50/50.
  • Когда A выполняет всю работу и вкладывает все деньги - 100 для A / 0 для B (и наоборот).
  • Когда A вкладывает 50% денег, а B вкладывает 50% денег, а также выполняет всю работу - 25 для A и 75 для B (и наоборот).

Если я исправлю вещи так, что всегда workA = 0%, workB = 100% от всей работы, тогда getPercentageOfA станет функцией: высота z с учетом x и y. Вопрос - как вы экстраполируете эту функцию между этими несколькими точками? Что это за функция?

Если вы можете охватить случаи, когда workA не должен составлять 0% от общей работы, и когда инвестиции по сравнению с работой делятся на 85/15 или с использованием какой-либо другой модели, то какой будет новая функция?

Ответы [ 3 ]

2 голосов
/ 02 января 2011

Это больше похоже на экономическую проблему, чем на проблему программирования. В идеале, вы должны разделить прибыль пропорционально вкладу партнеров. Вклады в капитал легко измерить, они уже в долларовом выражении, а труд - нет. Самый простой ответ - назначить ставку заработной платы для рабочей силы. Затем вы можете рассчитать взносы каждого человека в долларовом выражении и дать каждому человеку долю прибыли пропорционально его взносам.

2 голосов
/ 02 января 2011

Ответ на этот вопрос зависит от того, какая переменная, по вашему мнению, имеет больший вес. Исходя из ваших данных, я собираюсь предположить, что 100% работы эквивалентно вложению 100% денег.

int getPercentageOfA(double moneyA, double workA, double moneyB, double workB)
{
    // Perhaps you may assume that workA == 0

    aWorkPercentage = getPercentageOfAForWork(double workA, double workB);
    aMoneyPercentage = getPercentageOfMoney(double moneyA, double moneyB);

    weightMoney = 1;
    weightWork = 1;

    result = ( weightWork*aWorkPercentage + weightMoney*aMoneyPercentage) / 2

    return result;
}

Вычислите каждую переменную отдельно, а затем усредните их вместе. Преимущество этой формулы состоит в том, что если человек А и человек Б решат рассматривать работу как более ценную, чем деньги, или наоборот, то «весовые коэффициенты» могут быть скорректированы с учетом конечного процента.

0 голосов
/ 02 января 2011

Назначьте фиксированное значение для выполненной работы - заработную плату.Предположим, что выполненная работа оценивается по фиксированной ставке 50 долларов в час.

Итак, скажем, что Алиса инвестирует 300 долларов, а Боб инвестирует 100 долларов.Но Алиса не работает.Боб тратит 8 часов своего времени, оценивая его в 50 долларов в час.

Боб фактически вложил 100 + 8 * 50 = 500 долларов, в то время как Алиса вложила 300 долларов.Общая сумма инвестиций составляет 800 долларов.Таким образом, доход Боба составляет 5/8 прибыли, в то время как Алиса получает 3/8 прибыли.

...