Курсовая работа: Решение экономических задач с помощью VBA
На листе это будет выглядеть так:
Д л и н ы р у л о н о в н а з а к а з | |||||
Варианты | Остаток | ||||
раскройки | 4 | 6 | 9 | 11 | от расктоя |
1 | 0 | 0 | 3 | 0 | 1 |
2 | 0 | 1 | 0 | 2 | 0 |
3 | 0 | 1 | 1 | 1 | 2 |
4 | 0 | 3 | 1 | 0 | 1 |
5 | 1 | 0 | 0 | 2 | 2 |
6 | 1 | 1 | 2 | 0 | 0 |
7 | 1 | 2 | 0 | 1 | 1 |
8 | 1 | 2 | 1 | 0 | 3 |
9 | 1 | 4 | 0 | 0 | 0 |
10 | 2 | 0 | 1 | 1 | 0 |
11 | 2 | 0 | 2 | 0 | 2 |
12 | 2 | 1 | 0 | 1 | 3 |
13 | 2 | 3 | 0 | 0 | 2 |
14 | 3 | 1 | 1 | 0 | 1 |
15 | 4 | 0 | 0 | 1 | 1 |
16 | 4 | 0 | 1 | 0 | 3 |
17 | 4 | 2 | 0 | 0 | 0 |
18 | 5 | 1 | 0 | 0 | 2 |
19 | 7 | 0 | 0 | 0 | 0 |
Пусть Xj – кол-во стандартных рулонов, разрезанных по варианту j, где j[1..19]. Ограничения налагаемые на переменные Xj связаны с требованием обеспечить изготовление заказанного кол-ва нестандартных рулонов. Ф-ция цели учитывает суммарные отходы, получаемые при выполнении заказа. Таким образом имеем следующую мат. модель:
Минимизировать:
Z=x1+2x3+x4+2x5+x7+3x8+2x11+2x12+2x13+x14+x15+3x16+
+2x18 + 4(x5+x6+x7+x8+x9+2x10+2x11+2x12+2x13+3x14+4x15+4x16+4x17+5ч18+7x19-220)+ 6(...-210)+9(...-350)+
+11(...-380)
Отведем диапазон ячеек (i4:i22) под переменные . Введем в диапазон ячеек (j3:m3) левые части ограничений, определенные слежующими формулами:
=СУММПРОИЗВ($I$4:$I$22;B4:B22)
=СУММПРОИЗВ($I$4:$I$22;c4:c22)
=СУММПРОИЗВ($I$4:$I$22;d4:d22)
=СУММПРОИЗВ($I$4:$I$22;e4:e22)
В ячейку N4 введем ф-цию цели:
=СУММПРОИЗВ($I$4:$I$22;F4:F22)+B3*(СУММПРОИЗВ($I$4:$I$22;B4:B22)-J3)+C3*(СУММПРОИЗВ($I$4:$I$22;C4:C22)-K3)+D3*(СУММПРОИЗВ($I$4:$I$22;D4:D22)-L3)+E3*(СУММПРОИЗВ($I$4:$I$22;E4:E22)-M3)
где в ячейки B3:E3 введены длины, а в ячейки J3:M3 – кол-ва заказанных рулонов
Выберем команду сервис – Поиск решения и заполним открывшееся диалоговое окно Поиск решения (Solver):
- Установим целевую ячейку – N4
- Изменяя ячейки I4:I22
- Ограничения $I$4:$I$22=целое
$I$4:$I$22>=0
$j$4:$m$4>=$j$3:$m$3
- Ф-ция = минимизация
К о л - в а з а к а з а н н ы х р у л о н о в | ||||
220 | 210 | 350 | 380 | Отходы |
220 | 210 | 350 | 380 | 49,99996 |
2.3.7 База данных
Создадим поля базы данных, и занесем их в таблицу. База данных будет заполняться программой, программе не требуются названия полей, но для облегчения ориентации в первой строке введем данные соответствующие полям БД
Создадим кнопку “Добавление” для добавления записей в БД, делается это так: Вызываем панель инструментов на которой расположены примитивы, т.е. окна ввода, кнопки и т.д. Создаем на форме кнопку, и спомощью св-ва Caption присваиваем ей название “Добавление”
Создадим макрос который будет отвечать за обработку событий по нажатию этой кнопки. Перейдем в среду Visual Basic for Application и в меню «Вставка» выберем UserForm, на эту форму и поместим все обьекты оговоренные в условии(m раскрывающихся списков, n полей ввода, ...).
В макросе отвечающем за событие кнопки «Добавление» введем процедуру которая будет активизировать форму UserForm1, и заносить все данные из окна ввода в ячейки листа A4:L4, A5:L5 и т.д.
По нажатию кнопки “OK” выполнится следующий код программы:
Окно ввода выглядит следующим образом: