Теория принятия решений. Оптовая база

Оптовая база вмещает 12 т продукции. Запасы продукции могут пополняться и продаваться в начале каждого из 4 месяцев, причем продажа предшествует пополнению. Хранение 1 т продукции в течение К-го месяца обходится в А руб., а продажа того же количества в начале К-го месяца приносит доход В руб. Коэффициенты А и Б представлены в таблице:
К
1
2
3
4
А
10
15
10
6
В
7
12
9
8
Начальное количество продукции на базе составляет 5 т.

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


Решение задания

Я долго думал и не мог понять что вообще от меня требуется. После получаса размышлений понял.
Решение задачи заключается в том чтобы найти в каком месяце следует хранить продукцию чтобы в следующем месяце продать её дороже чем мы потратили на хранение. То есть должно выполнятся условие в i-м месяце хранение стоит дешевле чем продажа в i+1  месяце, иначе склад работает себе в убыток и эффективнее не хранить продукцию.

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <locale.h>
void main()
{
       setlocale (LC_ALL, "Russian");
      
       int ar[4]={10,15,10,6};//расход в течении к-го месяца(за 1т хранения)
       int bd[4]={7,12,9,8};// доход за продажу 1т продукции
       int i;
       // Суть в том что сравниваем значения ar[i] и bd[i+1]
       // если ar[i]>bd[i+1] то расход на хранение больше чем доход на продажу
       // хранить нужно 0 тонн

       // если ar[i]<bd[i+1] то расход на хранение меньше чем доход на продажу
       // хранить нужно 12 тонн
       int pr[4],xr[4],PR;
       pr[0]=5*bd[0];
       PR=pr[0];
       printf("1.продали 5*%d = +%d\n",bd[0],pr[0]);
       for(i=0;i<3;i++)
       {
            
             if(ar[i]<bd[i+1])
             {
                    xr[i]=12*ar[i];
                    PR=PR-xr[i];
                    printf("%d.хранение 12*%d = -%d\n",i+1,ar[i],xr[i]);
                    pr[i]=12*bd[i+1];
                    PR=PR+pr[i];
                    printf("%d.продали 12*%d = +%d\n",i+2,bd[i+1],pr[i]);
             }
             else
             {
                    xr[i]=0*ar[i];
                    PR=PR-xr[i];
                    printf("%d.хранение 0*%d = -%d\n",i+1,ar[i],xr[i]);
                    pr[i]=0*bd[i+1];
                    PR=PR+pr[i];
                    printf("%d.продали 0*%d = +%d\n",i+2,bd[i+1],pr[i]);
             }
       }
       xr[3]=4*ar[3];
       printf("4.хранение 4*%d = -%d\n",ar[3],xr[3]);
       PR=PR-xr[3];
       printf("ПРИБЫЛЬ = %d",PR);
       getch();
}

Результат работы программы

Судя по полученным данным прибыль при данных
К
1
2
3
4
А
10
15
10
6
В
7
12
9
8
 составила 35 рублей(144-120-24+35=35)

Комментариев нет:

Отправить комментарий