Всякие лабы разных вариантов + задания / laby / Report_4
.docxЛабораторная работа №4
Вариант 1
Выполнили:
ст. гр.
Задание:
Предприятие имеет 20 станков типа Ст1 и 30 станков типа Ст2. На каждом из них можно выпускать детали трёх видов. Производительность станков (деталей в день) приведена в таблице 1.
Таблица 1
Станок |
Деталь |
||
Д1 |
Д2 |
Д3 |
|
Ст1 |
20 |
35 |
15 |
Ст2 |
15 |
30 |
45 |
Каждый станок настраивается на выпуск детали только какого-либо одного вида. В течение каждого рабочего дня предприятие должно выпускать не менее 150 деталей Д1 и не менее 100 деталей Д2. Прибыль от продажи одной детали Д1 составляет 6 ден. ед., от продажи детали Д2 – 4 ден. ед., от продажи Д3 – 8 ден. ед.
Требуется составить план использования станков, обеспечивающий получение максимальной прибыли от выпуска деталей.
Код (VBA MS Excel):
Sub lab()
itog = 0: minprib = 0: d1itog = 0: d2itog = 0: d3itog = 0: nst1d1itog = 0: nst1d2itog = 0: nst1d2itog = 0: nst1d3itog = 0: nst2d1itog = 0: nst2d2itog = 0: nst2d3itog = 0
n = 5000000
For k = 1 To n
d1 = 0: d2 = 0: d3 = 0
nst1d1 = 0: nst1d2 = 0: nst1d3 = 0: nst2d1 = 0: nst2d2 = 0: nst2d3 = 0
For i = 1 To 20
r = Rnd
If r < 0.33 Then d1 = d1 + 20: nst1d1 = nst1d1 + 1
If (r >= 0.33) And (r < 0.67) Then d2 = d2 + 35: nst1d2 = nst1d2 + 1
If r >= 0.67 Then d3 = d3 + 20: nst1d3 = nst1d3 + 1
Next i
For j = 1 To 30
r = Rnd
If r < 0.33 Then d1 = d1 + 15: nst2d1 = nst2d1 + 1
If (r >= 0.33) And (r < 0.67) Then d2 = d2 + 30: nst2d2 = nst2d2 + 1
If r >= 0.67 Then d3 = d3 + 45: nst2d3 = nst2d3 + 1
Next j
If (d1 >= 150) And (d2 >= 100) Then minprib = d1 * 6 + d2 * 4 + d3 * 8
If minprib > itog Then
d1itog = d1: d2itog = d2: d3itog = d3
itog = minprib: minprib = 0
nst1d1itog = nst1d1: nst1d2itog = nst1d2: nst1d3itog = nst1d3: nst2d1itog = nst2d1: nst2d2itog = nst2d2: nst2d3itog = nst2d3
End If
Next k
MsgBox ("Ст1 для деталей Д1: " + Str(nst1d1) + ", для Д2: " + Str(nst1d2) + ", для Д3: " + Str(nst1d3))
MsgBox ("Ст2 для деталей Д2: " + Str(nst2d1) + ", для Д2: " + Str(nst2d2) + ", для Д3: " + Str(nst2d3))
MsgBox ("Прибыль предприятия: " + Str(itog))
End Sub
Пример результата: