В предыдущем посте я представлял схему имитационного моделирования для оптимизации распределения ресурсов в условиях неопределенности. В этой статье покажу приложение, которое я написал для решение этой задачи.
Данная программа предназначена для решения задач оптимизации распределения ресурсов при неполной информации с применением методов имитационного моделирования.
Ограничений на количество ресурсов и пунктов назначения теоретически нет, так как программа работает с динамической памятью. Реальный предел зависит от количества памяти и операционной системы.
Кроме того, в программе реализовано:
- Сохранение и загрузка задач во внешний файл.
- Каждый эффект от вложения определенного количества ресурса в определенный пункт может быть как статическим так и случайной величиной, лежащей в определенном диапазоне и распределенной по выбранному закону распределения.
- Использование 5 различных законов распределения:
- Равномерный
- Нормальный
- Экспоненциальный
- Вид возрастающего треугольника
- Вид убывающего треугольника
- Тестирование датчиков случайных чисел на тождественность теоретического закона ‑ эмпирическому, по критерию Колмогорова
- Проведение имитационного моделирования задачи с неполной информацией, при этом реализован вывод следующих данных:
- График плотности распределения значений эффективности за последний этап итераций
- График функции распределения значений эффективности за последний этап итераций
- Оценка соответствия полученного распределения эффективностей нормальному закону, по критерию Колмогорова
- Вывод среднего значения эффективности за последний этап итераций
- Вывод среднеквадратического отклонения от среднего за последний этап итераций
- Вывод моды за последний этап итераций
- Построение доверительного интервала
- Вычисление вероятности попадания в доверительный интервал
- Вывод уникальных, перспективных вариантов решения задачи, попадающих в доверительный интервал
- Построение графика стремления к устойчивому состоянию и указания 5% и 2% коридора
- Проверка неравенства Чебышева и вычисления необходимого числа итераций от допустимой ошибки
Программа имеет не сложный, но в то же время достаточно функциональный и удобный в применении интерфейс, позволяющий выполнять достаточно много операций для исследования и анализа результатов решения.