package inventory;
Created on 18.04.
@author
public class InventoryModel {
static int n = 8;
static int max = 10;
static double[] inprice = { 2, 3, 1, 6, 7, 10, 8, 6};
static double[] outprice = {15, 10, 9, 10, 20, 30, 20, 10};
static double[] store = { 1, 1, 1, 1, 1, 1, 1, 1};
static int[] need = { 8, 7, 6, 7, 8, 7, 6, 7};
static int[] add = new int[n];
static double[][] profit = new double[n][max + 1];
static int[][] restFromProfit = new int[n][max + 1];
public static void main(String[] args) {
for (int r = 0; r <= max; r++) {
int add_r = need[n - 1] - r;
if (add_r < 0) {
profit[n -1][r] = Integer.MIN_VALUE;
continue;
}
profit[n - 1][r] =
outprice[n - 1] * need[n - 1]
- inprice[n - 1] * add_r
- store[n - 1] * ((double)r / 2);
}
for (int m = n - 1; m > 0; m--) {
for (int r = 0; r <= max; r++) {
profit[m - 1][r] = Integer.MIN_VALUE;
for (int rr = 0; rr <= max; rr++) {
double profitTemp;
int add_r = need[m - 1] + rr - r;
if (add_r < 0) {
profitTemp = Integer.MIN_VALUE;
} else {
profitTemp =
outprice[m - 1] * need[m - 1]
- inprice[m - 1] * add_r
- store[m - 1] * ((double)(r + rr) / 2) + profit[m][rr];
}
if (profitTemp > profit[m - 1][r] ) {
profit[m - 1][r] = profitTemp;
restFromProfit[m - 1][r] = rr;
}
}
}
}
System.out.println("=========== План закупок ===============");
for (int m = 0, r = 0; m < n; m++) {
System.out.println( (m + 1)
+ "; Остаток на начало: " + r
+ "; Остаток на конец: " + restFromProfit[m][r]
+ "; Потребление: " + need[m]
+ "; Закупки: " + (need[m] - r + restFromProfit[m][r])
);
r = restFromProfit[m][r];
}
}
}