import random as rm # Функция для генерации процесса def process (x, p, q, r, a, b, n): profit = 0 # Прибыль res = 0 # Остаток for i in range(0,n): y = rm.uniform(a,b) # Генерация случайного спроса profit += -q*(x-res) # Издержки, связанные с закупкой if (y < x): profit += p*y; # Доход от продажи profit += -r # Издержки на хранение (не зависят от величины остатка) res = x-y # Вычисление остатка else: profit += p*x; # Доход от продажи res = 0 # Остатка нет profit /= n; print("x = " + str(x) + ";" + (3-len(str(x)))*" " + " Средняя прибыль: " + str(profit) + (21-len(str(profit)))*" " + " Прибыль по формуле: " + str(pfit(x))) # Функция прибыли (по формуле) def pfit(x): if x <= a: # Функция прибыли если запас меньше минимального спроса pi= (p-q) * x elif x >= b: # Функция прибыли если запас больше максимального спроса pi = (a+b)/2 * (p - q) - r else: # Функция прибыли если запас лежит в отрезке [a, b] pi = ((q-p)*(x**2 + a**2) - 2*b*q*x - 2*r*x + 2*r*a + 2*b*p*x)/(2*(b-a)) return pi # Блок начальных данных x = 0 # Дневной запас товара p = 30 # Отпускная цена q = 28 # Закупочная цена r = 30 # Остаточная цена a = 2 # Наименьший спрос b = 10 # Наибольший спрос n = 1000000 #Число испытаний for x in range(-b,2*b+1): # Проверка прибыли для всех целых x process(x,p,q,r,a,b,n) x_best = b + r/(q-p) # Поиск лучшего запаса продукции print ('\n' + "Согласно формуле: x = " + str(x_best) + "; Прибыль:" + str(pfit(x_best)))
x = -10; Средняя прибыль: -20.0 Прибыль по формуле: -20 , x = -9; Средняя прибыль: -18.0 Прибыль по формуле: -18 , x = -8; Средняя прибыль: -16.0 Прибыль по формуле: -16 , x = -7; Средняя прибыль: -14.0 Прибыль по формуле: -14 , x = -6; Средняя прибыль: -12.0 Прибыль по формуле: -12 , x = -5; Средняя прибыль: -10.0 Прибыль по формуле: -10 , x = -4; Средняя прибыль: -8.0 Прибыль по формуле: -8 , x = -3; Средняя прибыль: -6.0 Прибыль по формуле: -6 , x = -2; Средняя прибыль: -4.0 Прибыль по формуле: -4 , x = -1; Средняя прибыль: -2.0 Прибыль по формуле: -2 , x = 0; Средняя прибыль: 0.0 Прибыль по формуле: 0 , x = 1; Средняя прибыль: 2.0 Прибыль по формуле: 2 , x = 2; Средняя прибыль: 4.0 Прибыль по формуле: 4 , x = 3; Средняя прибыль: 2.1083067945908853 Прибыль по формуле: 2.125 , x = 4; Средняя прибыль: 0.009384661916394763 Прибыль по формуле: 0.0 , x = 5; Средняя прибыль: -2.347312168744904 Прибыль по формуле: -2.375 , x = 6; Средняя прибыль: -5.02258944211615 Прибыль по формуле: -5.0 , x = 7; Средняя прибыль: -7.877780480741864 Прибыль по формуле: -7.875 , x = 8; Средняя прибыль: -11.000088569543985 Прибыль по формуле: -11.0 , x = 9; Средняя прибыль: -14.400737330349708 Прибыль по формуле: -14.375 , x = 10; Средняя прибыль: -18.00052731589199 Прибыль по формуле: -18.0 , x = 11; Средняя прибыль: -17.99641450349908 Прибыль по формуле: -18.0 , x = 12; Средняя прибыль: -17.999079110335835 Прибыль по формуле: -18.0 , x = 13; Средняя прибыль: -17.995438294015152 Прибыль по формуле: -18.0 , x = 14; Средняя прибыль: -18.0060712090063 Прибыль по формуле: -18.0 , x = 15; Средняя прибыль: -17.991132748310882 Прибыль по формуле: -18.0 , x = 16; Средняя прибыль: -18.004043559645893 Прибыль по формуле: -18.0 , x = 17; Средняя прибыль: -17.9968053592084 Прибыль по формуле: -18.0 , x = 18; Средняя прибыль: -17.998354908703945 Прибыль по формуле: -18.0 , x = 19; Средняя прибыль: -18.003893237312603 Прибыль по формуле: -18.0 , x = 20; Средняя прибыль: -17.995673015955557 Прибыль по формуле: -18.0 , , Согласно формуле: x = -5.0; Прибыль:-10.0