package inventory;
Симуляция торговли со случайным спросом несохраняемого товара.
@author
public class RandomDemand {
static int[] h ;
static boolean integer = !true;
public static void main(String[] args) {
System.out.println("Hello!");
double x;
double p = 50;
double q = 30;
double r = 10;
double a = 2;
double b = 6;
int n = 10000000;
if (integer) h = new int[(int)b - (int)a + 1];
for (x = a; x <= b; x += 1) {
process(x, p, q, r, a, b, n);
}
if (integer){
x = (p * (b + .5) - q * (b - a + 1) - r * (a - .5)) / (p - r);
} else {
x = (q * a + p * b - q * b - r * a) / (p - r);
}
System.out.println("максимум при х: " + x);
if (integer){
for (int i = 0; i < h.length; i++) {
System.out.println(h[i]);
}
} else {
process(x, p, q, r, a, b, n);
}
}
Симуляция торговли со случайным спросом несохраняемого товара.
@param x
@param p
@param q
@param r
@param a
@param b
@param n
public static void process(double x, double p, double q, double r, double a, double b, int n) {
double profit = 0;
for (int i = 0; i < n; i++) {
double y = Math.random() * (b - a);
if (integer) { y = Math.floor(y * (b - a + 1) / (b - a)); h[(int)y]++; }
y += a;
profit += -q * x;
if (y < x) {
profit += p * y;
profit += r * (x - y);
} else {
profit += p * x;
}
}
profit /= n;
double h;
if (integer) {
h = ((x * p - x * q) * (b - x + 1)
+ (p *(a + x - 1)/2 - x * q + r * (x - (a + x - 1) / 2)) * (x - a)) / (b - a + 1);
} else {
h = ((p * (x + a) / 2 - q * x + r * x - r * (x + a) / 2) * (x - a)
+ (p * x - q * x) * (b - x)) / (b - a);
}
System.out.println("x: " + x + "; среднедневная прибыль: " + profit + "; по формуле: " + h);
}
}