package inventory;
Created on 09.04.
@author
public class InventoryModel21 {
public static void main(String[] args) {
int n = 3;
int max = 3;
double[] inprice = {3, 6, 8};
double[] outprice = {3, 7, 9};
double[] store = {1, 1, 1};
int[] need = {2, 2, 2};
double[] profit = new double[max + 1];
double[] profitTemp = new double[max + 1];
int[][] restFromProfit = new int[n][max + 1];
int[][] saleFromProfit = new int[n][max + 1];
for (int r = 0; r <= max; r++) {
profit[r] = Integer.MIN_VALUE;
double profitFromSale ;
for (int sale = 0; sale <= need[n - 1]; sale++) {
int add_r = sale - r;
if (add_r < 0) {
profitFromSale = Integer.MIN_VALUE;
continue;
}
profitFromSale
= outprice[n - 1] * sale
- inprice[n - 1] * add_r
- store[n - 1] * ((double) r / 2);
if (profitFromSale > profit[r]) {
profit[r] = profitFromSale;
saleFromProfit[n - 1][r] = sale;
}
}
}
for (int m = n - 1; m > 0; m--) {
for (int r = 0; r <= max; r++) {
profitTemp[r] = Integer.MIN_VALUE;
for (int rr = 0; rr <= max; rr++) {
for (int sale = 0; sale <= need[m - 1]; sale++) {
int add_r = sale + rr - r;
if (add_r < 0) {
continue;
} else {
double H
= outprice[m - 1] * sale
- inprice[m - 1] * add_r
- store[m - 1] * ((double) (r + rr) / 2) + profit[rr];
if (H > profitTemp[r]) {
profitTemp[r] = H;
restFromProfit[m - 1][r] = rr;
saleFromProfit[m - 1][r] = sale;
}
}
}
}
}
System.out.print("profit");
for (int i = 0; i < profit.length; i++) {
profit[i] = profitTemp[i];
}
}
System.out.println("=========== План закупок ===============");
for (int m = 0, r = 0; m < n; m++) {
System.out.println((m + 1)
+ "; Спрос: " + need[m]
+ "; Продажи: " + saleFromProfit[m][r]
+ "; Остаток на начало: " + r
+ "; Остаток на конец: " + restFromProfit[m][r]
+ "; Закупки: " + (saleFromProfit[m][r] - r + restFromProfit[m][r])
);
r = restFromProfit[m][r];
}
System.out.println("Прибыль " + profit[0]);
}
}