План ремонта станков

Описание

Производственная линия состоит из 5 видов станков и выпускает семь типов изделий (P1-P7). Количество станков каждого типа составляет:
• шлифовальный – 4 шт;
• вертикально-сверлильный – 2 шт;
• горизонтально-сверлильный – 3 шт;
• расточный - 1 шт;
• строгальный – 1 шт;
Прибыль (цена продажи – стоимость сырья) от продажи 1 ед. изделия (P1-P7), затраты времени на обработку изделия на каждом станке составляют:

(Прочерк указывает, что обработка на данном станке не требуется.)
Ниже представлены объемы ожидаемого спроса (по месяцам) для изготавливаемых изделий:

Линия работает в двухсменном режиме (8 часов каждая), 6 дней в неделю. Всего за рабочий месяц планируется отработать 24 рабочих дней. Порядок обработки на станках не имеет значения.
Для каждого станка (кроме 2-х шлифовальных) необходимо один раз в полгода (на месяц) проводить техническое обслуживание. Для этого их необходимо вывести из работы на 1 мес.
Складские площади позволяют хранить одновременно не более 100 единиц каждого изделия, по цене $0,5 за штуку в месяц. В начале рассматриваемого периода на складах отсутствуют запасы готовой продукции, однако в конце июня необходимо иметь запас в 50 изделий каждого типа.
Цель: разработать план производства продукции (по месяцам) максимизирующий прибыль с учетом требования по проведению технического обслуживания станков.

Решение

В результате решения модели мы получим план производства, продаж продукции и ремонта оборудования максимизирующих общий доход. Так, план производства составляет (ед./мес.):
План продаж имеет следующие характеристики (ед./мес.):
Выполнение указанного плана продаж принесет предприятию максимальный доход в размере ($):
При этом, план возможной остановки оборудования для проведения технического обслуживания выглядит следующим образом (количество станков определенного типа, которые можно остановить):
Суммарный доход компании составит 116630$.

В случае необходимости модель может быть адаптирована под дополнительные потребности клиента.

* Пример заимствован из учебного пособия: Зайцев М.Г., Варюхин С.Е. "Методы оптимизации управления и принятия решений: примеры, задачи, кейсы." - 2 изд. испр.-М: Издательство "Дело" АХН, 2008 - 664с.

Форма ввода данных


Раздел находится в разработке...
* Сообщите нам (E-mail, комментарий) если требуется решение модели с данными пользователя.

Модель AMPL (фрагмент кода)
# Производственная задача
reset;
set PROD := {'P1','P2','P3','P4','P5','P6','P7'};   # Продукты
set machine := {'Grinding', 'Vertical drilling', 
'Horizontal drilling', 'Boring', 'Planing'};        # Типы станков
set month := {'January', 'February', 'March', 'April', 'May', 'June'/*, July, August, September, October, November, December*/} ordered;
param machine_count{machine} >= 0;                  # Ежемесячное количество работающих станков
param revenue{PROD} >= 0;                           # Доход от продажи продукции 
set LINKS within {machine, PROD};                   # 
param time{LINKS} >= 0;                             # Продолжительность обработки каждого вида продукции на каждом виде станка
param demand{month,PROD} >= 0;                      # Спрос на продукцию
param Total_time:= 8*2*24;                          # Общий резерв рабочего времени завода (час./мес.)
param storage{month, PROD}>=0;                      # Ежемесячный резерв для хранения каждого вида продукции  
param storage_cost{month,PROD} >=0;                 # Стоимость хранения 1 ед.продукции в месяц
var X{month, PROD} >= 0;                            # План производства
var Y{month, PROD} >= 0;                            # План продаж
var Z{month, machine} >=0, integer;                 # Максимальное количество работающих станков каждого вида
maximize Total_cost: sum {p in PROD, m in month} Y[m,p] * revenue[p];   # Максимизировать прибыль
subject to 
A_1{p in PROD, m in month}:Y[m,p] <= demand[m,p] ;   # Объем продаж <= спрос 
...
data;
param storage_cost default 0.5;
param storage default 100;
param machine_count:=
    Grinding              4
    'Vertical drilling'   2
    'Horizontal drilling' 3 
    Boring                1
    Planing               1 ;
param revenue:=
P1      10
P2      6
P3      8
P4      4
P5      11
P6      9
P7      3   ;
param: LINKS: time:           'P1'    'P2'    'P3'    'P4'    'P5'    'P6'    'P7':=
Grinding              0.5      0.7     .       .       0.3     0.2     0.5      
'Vertical drilling'   0.1      0.2     .       0.3     .       0.6      .     
'Horizontal drilling' 0.2      .       0.8     .       .        .      0.6
Boring                0.05     0.03    .       0.07    0.1      .      0.08
Planing               .         .      0.01    .       0.05     .      0.05 ;            
param demand:   'P1'    'P2'    'P3'    'P4'    'P5'    'P6'    'P7':=
January         500     1000    300     300     800     200     100
February        600     500     200     0       400     300     150
March           300     600     0       0       500     400     100
April           200     300     400     500     200     0       100
May             0       100     500     100     1000    300     0
June            500     500     100     300     1100    500     60  ;
solve;
display X,              # План производства
Y;                      # План продаж