Диссертация (1144614), страница 29
Текст из файла (страница 29)
Так, повышение164уровня ЛС повлечет увеличение затрат на выполнение процессов снабжения идоставки до 146,4 и 225,4 млн руб. соответственно. Косвенные затраты,вызванные иммобилизацией средств в запасах, возрастут на 10,8 млн руб. идостигнут 50,8 млн руб. В свою очередь, упущенные продажи сократятся на 33млн руб. и достигнут отметки 67 млн руб. Общие логистические затратывозрастут на 89,6 млн руб. и составят 489,6 млн руб., но не превзойдутустановленный предел – 490 млн руб. Вместе с затратами изменится такжезначение показателя выручки от реализации, которое достигнет 828 млн руб.
всвязи с приростом выручки равным 228 млн руб. Достижение указанных значенийприроста выручки и общих затрат обеспечит прирост прибыли равный 138,4 млнруб., который в совокупности с базовым значением прибыли сформирует прибыльравную 338,4 млн руб.
Таким образом, были определены целевые значенияпоказателей ЛС для процессов и логистической системы в целом, вызывающиеизменения значений финансовых показателей, обеспечивающие формированиемаксимальной прибыли торгового предприятия.165ПРИЛОЖЕНИЕ ДОписание принципа работы и основная часть кода программы оптимизациилогистического сервиса торгового предприятияПоскольку процедура поиска решения задачи оптимизации ЛС на основеинтегрированной модели оптимизации требует выполнения 15 операций, обменаданными между моделями, а также поочередного применения разных моделей,быларазработанапрограмма,автоматизирующаяописаннуюпроцедуру.Программа (макрос) создана в среде Visual Basic for Applications, встроенной вприложение Microsoft Excel [14; 52].Вместе с открытием файла с табличной моделью оптимизации открываетсяпользовательская форма, представленная на рисунке Д.1, с помощью которойпользователь может найти решение оптимизационной задачи с уже введеннымивходными данными, вывести отчет с оптимальной стратегией, восстановитьисходные данные или задать переменным исходные значения, отражающиепринятие базового уровня ЛС.
Входные данные могут быть изменены в самойтабличной модели.Рисунок Д.1. Пользовательская форма166По окончании ввода входных данных с помощью соответствующей кнопкипользовательской формы может быть запущена разработанная программа поискаоптимального решения, код основной части которой представлен на рисунке Д.2.DimDimDimDimSubOFRow As Byte, OFCol As Byte, StCol As Byte, IncRow As ByteVarRow As Byte, SubPrNum As Byte, p As Byte, SSV As ByteReliabilityRpt As StringReliabilityAlmr As BooleanSolveModel()' установление координат ячеек и начальных значений переменныхOFRow = 36OFCol = 6StCol = 3IncRow = 14VarRow = 16SubPrNum = 7ReliabilityRpt = ""ReliabilityAlmr = False' загрузка модели оптимизации общих затратSolverLoad LoadArea:=Worksheets("Master").Range("K30:K38")' цикл решения задачFor p = 1 To SubPrNumSSV = SolverSolve(UserFinish:=True)If SSV <> 0 Then ReliabilityAlmr = TrueReliabilityRpt = ReliabilityRpt & Chr(10) & _"Исход подзадачи " & p & " = " & SSVWorksheets("Master").Cells(IncRow, StCol + p - 1).Value = _Worksheets("Master").Cells(OFRow, OFCol).ValueIf p < SubPrNum ThenWorksheets("Master").Cells(VarRow, StCol + p - 1).Value = 0Worksheets("Master").Cells(VarRow, StCol + p).Value = 1End IfNext p' загрузка модели оптимизации логистического сервиса и решение задачиSolverLoad LoadArea:=Worksheets("Master").Range("K2:K10")SSV = SolverSolve(UserFinish:=True)If SSV <> 0 Then ReliabilityAlmr = TrueReliabilityRpt = ReliabilityRpt & Chr(10) & _"Исход подзадачи " & SubPrNum + 1 & " = " & SSV' решение задачи оптимизации общих затрат для комбинации оптимальных значенийSolverLoad LoadArea:=Worksheets("Master").Range("K30:K38")SSV = SolverSolve(UserFinish:=True)If SSV <> 0 Then ReliabilityAlmr = TrueReliabilityRpt = ReliabilityRpt & Chr(10) & _"Исход подзадачи " & SubPrNum + 2 & " = " & SSV' вывод отчета о достоверности найденных решенийIf ReliabilityAlmr = True ThenReliabilityRpt = ReliabilityRpt & Chr(10) & _"Для расшифровки значений следует перейти по ссылке:" & Chr(10) & _"https://www.solver.com/excel-solver-solversolve-function"End IfMsgReliabilityRpt = MsgBox(ReliabilityRpt, vbExclamation, _"Достоверность решения")' вывод отчета с оптимальной стратегиейCall GenerateReportEnd SubРисунок Д.2.
Код программы поиска оптимального решения167Разработаннаяпрограммапоочереднозагружаетпредварительносохраненные модели оптимизации общих затрат и ЛС и находит решение каждойиз подзадач, используя надстройку «Поиск решения». Сначала решается сериязадач оптимизации затрат для каждого значения показателя OFCT, полученныерезультаты подставляются в модель оптимизации ЛС.
Затем решается задачаоптимизации ЛС с помощью соответствующей модели. Найденная комбинацияоптимальных значений подставляется обратно в модель оптимизации общихзатрат с целью нахождения оптимальных значений показателей процессов. Далеевыводится отчет о достоверности решения каждой из подзадач. По окончаниипроцесса поиска и оценки решения выводится отчет с результатами оптимизации,представленныйнарисункеД.3,содержащийзначенияпоказателей,формирующие оптимальную стратегию торгового предприятия.Рисунок Д.3 – Отчет о результатах оптимизацииТаким образом, разработанная программа находит оптимальное решениезадачи, предлагает инструмент контроля достоверности решения и выводитрезультаты оптимизации в доступной для пользователя форме..