Главная страница
Навигация по странице:

  • Рисунок 25. Итоговый отчёт

  • Функция: Rglpk_solve_LP(obj, mat, dir, rhs, bounds = NULL, types = NULL, max = FALSE, control = list(), ...) Аргументы

  • Пример

  • Постановка задачи.

  • Решение транспортной задачи в языке R В языке R решение транспортной задачи осуществляется с помощью функции lp.transport из пакета lp.Solve. Формат

  • симплекс метод. Лабораторная работа 3 Решение однокритериальных задач принятия решений методами линейного программирования Общие сведения


    Скачать 1.31 Mb.
    НазваниеЛабораторная работа 3 Решение однокритериальных задач принятия решений методами линейного программирования Общие сведения
    Анкорсимплекс метод
    Дата14.10.2021
    Размер1.31 Mb.
    Формат файлаdocx
    Имя файлаLaboratornaya_rabota_3.docx
    ТипЛабораторная работа
    #247388
    страница5 из 5
    1   2   3   4   5

    Вывод


    Подведем итог выполнения работы по поиску решения и анализу чувствительности найденного решения для рассматриваемого примера:

    1. Первоначальное решение (сценарий «Исходный») — производить 257 ед. дисплеев 46” и 150 ед. дисплеев 51”, при этом будет получена прибыль в размере 889285,17 руб. — не загружает полностью производственные мощности.

    2. Чтобы полностью загрузить производственные мощности, надо увеличить месячный запас сырья 2 с 30000 до 36500 ед. (сценарий «Полная загрузка»), при этом следует производить 350 ед. дисплеев 46” и 150 ед. дисплеев 51”, тогда будет получена прибыль в размере 1075000 руб.

    3. Первые два решения имеют силу, если удельная прибыль дисплеев 51” превышает удельную прибыль дисплеев 46”. Если удельная прибыль дисплеев 51” меньше удельной прибыли дисплеев 46”, то производить дисплеи 51” нерентабельно.

    4. Если удельная прибыль дисплеев 51” примерно равна удельной прибыли дисплеев 46”, то прибыль (целевая функция) не зависит от количества произведенных дисплеев 51” (сценарии «Без дисплеев 15”» и «С дисплеями 51"»). При этом в условиях поставленных ограничений рационально отказаться от производства дисплеев 51” или уменьшить их производство до минимума, поскольку это сокращает необходимый для производства суммарный запас всех видов сырья (сценарий «Без дисплеев 15”»).



    Рисунок 25. Итоговый отчёт
    Так можно кратко подвести итоги анализа математической модели реальной ситуации. Подобного итогового результата достаточно при решении задач линейной оптимизации в реальном производственном процессе и в задачах научных исследований.

    Анализ математической модели и получение математического решения проблемы на языке R.



    R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Язык создавался как аналогичный языку S, разработанному в Bell Labs, и является его альтернативной реализацией, хотя между языками есть существенные отличия, но в большинстве своём код на языке S работает в среде R. Изначально R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой (англ. Ross Ihaka) и Робертом Джентлменом (англ. Robert Gentleman) (первая буква их имён — R); язык и среда поддерживаются и развиваются организацией R Foundation.

    R широко используется как статистическое программное обеспечение для анализа данных и фактически стал стандартом для статистических программ.

    R поддерживает широкий спектр статистических и численных методов и обладает хорошей расширяемостью с помощью пакетов. Пакеты представляют собой библиотеки для работы специфических функций или специальных областей применения. В базовую поставку R включен основной набор пакетов, а всего по состоянию на 2017 год доступно более 11778 пакетов. Дополнительные пакеты распространяются через CRAN (акроним Comprehensive R Archive Network).

    Для решения задач линейного программирования в R включен пакет Rglpk. Интерфейс высокого уровня R с линейным программным комплексом GNU (GLPK) для решения линейных задач и смешанной целочисленной задачи линейного программирования (MILP).

    Функция:
    Rglpk_solve_LP(obj, mat, dir, rhs, bounds = NULL, types = NULL, max = FALSE, control = list(), ...)
    Аргументы:

    obj

    Вектор коэффициентов целевой функции

    mat

    Числовой вектор или матрица коэффициентов ограничений. Если целевая функция не ограничена, тогда матрица размерности 0

    dir

    Вектор символов с направлениями ограничений. Для ненулевого числа ограничений каждый элемент должен быть одним из символов «<», «<=», «>», «> =» или «==». Обратите внимание, однако, что API GLPK допускает только нестрогое неравенство. Строгие неравенства обрабатываются так же, как нестрогие.

    rhs

    Числовой вектор содержащий правые части ограничений

    bound

    NULL (по умолчанию) или список с элементами сверху и снизу, содержащими индексы и соответствующие границы объективных переменных. Значение по умолчанию для каждой переменной

    является границей между 0 и Inf.

    types

    Вектор символов, указывающий типы переменных. типы могут быть либо «B» для двоичного, «C» для непрерывного, либо «I» для целого. По умолчанию NULL, считаются непрерывными.

    max

    Логическое направление направления оптимизации. ИСТИНА означает, что цель состоит в том, чтобы максимизировать целевую функцию, FALSE (по умолчанию) означает минимизировать ее.

    control

    Список параметров решателя


    Результаты:

    solution

    вектор оптимальных коэффициентов

    objval

    значение целевой функции при оптимальных коэффициентах

    status

    Сведения о состоянии возвращенного решения. Возвращатет 0 если оптимальное решение найдено, а ненулевое в противном случае.

    solution_dual




    auxiliary

    список с двумя векторами, каждый из которых содержит значения вспомогательной переменной, связанной с соответствующим ограничением в решении, primal и dual (если доступно, NA иначе.)



    Пример:

    ## Simple linear program.

    ## maximize: 2 x_1 + 4 x_2 + 3 x_3

    ## subject to: 3 x_1 + 4 x_2 + 2 x_3 <= 60

    ## 2 x_1 + x_2 + 2 x_3 <= 40

    ## x_1 + 3 x_2 + 2 x_3 <= 80

    ## x_1, x_2, x_3 are non-negative real numbers
    obj <- c(2, 4, 3)

    mat <- matrix(c(3, 2, 1, 4, 1, 3, 2, 2, 2), nrow = 3)

    dir <- c("<=", "<=", "<=")

    rhs <- c(60, 40, 80)

    max <- TRUE
    Rglpk_solve_LP(obj, mat, dir, rhs, max = max)


    ## Simple mixed integer linear program.

    ## maximize: 3 x_1 + 1 x_2 + 3 x_3

    ## subject to: -1 x_1 + 2 x_2 + x_3 <= 4

    ## 4 x_2 - 3 x_3 <= 2

    ## x_1 - 3 x_2 + 2 x_3 <= 3

    ## x_1, x_3 are non-negative integers

    ## x_2 is a non-negative real number
    obj <- c(3, 1, 3)

    mat <- matrix(c(-1, 0, 1, 2, 4, -3, 1, -3, 2), nrow = 3)

    dir <- c("<=", "<=", "<=")

    rhs <- c(4, 2, 3)

    types <- c("I", "C", "I")

    max <- TRUE

    Rglpk_solve_LP(obj, mat, dir, rhs, types = types, max = max)

    ## Same as before but with bounds replaced by

    ## -Inf < x_1 <= 4

    ## 0 <= x_2 <= 100

    ## 2 <= x_3 < Inf
    bounds <- list(lower = list(ind = c(1L, 3L), val = c(-Inf, 2)),

    upper = list(ind = c(1L, 2L), val = c(4, 100)))

    Rglpk_solve_LP(obj, mat, dir, rhs, bounds, types, max)

    Решение транспортной задачи в пакете EXCEL


    Транспортная задача — математическая задача линейного программирования специального вида о поиске оптимального распределения однородных объектов из аккумулятора к приемникам с минимизацией затрат на перемещение.

    Решение транспортной задачи рассматривается практически на всех специальностях, где хоть как-то присутствует курс математики. Решить транспортную задачу можно различными способами и программными средствами.

    Постановка задачи.

    Есть запасы однотипной продукции у поставщиков A1, A2, A3, A4.

    Существует потребность в этой продукции B1, B2, B3

    Стоимость доставки единицы продукции от поставщиков к потребителям представлена в таблице.

    Поставщик

    Потребитель

    Запас

    В1

    В2

    В2

    А1

    6

    5

    2

    250

    А2

    3

    7

    4

    100

    А3

    7

    8

    1

    80

    А4

    2

    2

    3

    120

    Потребность

    150

    150

    250




    Необходимо составить такой план перевозок, который бы удовлетворил все потребности и имел минимальную стоимость.

    Решение задачи.

    Для решения данной задачи в табличном процессоре необходимо составить две таблицы, приведенные выше, но вторую таблицу не заполнять данными.



    В пустую таблицу в ячейки запас и потребность внесем следующие формулы:



    Дальше выбираем команду "Поиск решения" на вкладке "Данные":



    Решение поставленной задачи представлено ниже.

    Решение транспортной задачи в языке R

    В языке R решение транспортной задачи осуществляется с помощью функции lp.transport из пакета lp.Solve.
    Формат:

    lp.transport (cost.mat, direction="min", row.signs, row.rhs, col.signs,col.rhs, presolve=0, compute.sens=0, integers = 1:(nc*nr) )

    Аргументы:

    cost.mat

    Матрица затрат; ij-й элемент-это затраты на транспортировку одного товара из источника ito в пункт назначения j

    direction

    Символ, длина 1: "min" или "max

    row.signs

    Вектор символьных строк, задающий направление ограничений строки: каждое значение должно быть одним из "<," "<=," "=," "==," ">," или ">=." (в каждой паре эти два значения идентичны.)

    row.rhs

    Числовой вектор содержащий правые части ограничений

    col.signs

    Вектор символьных строк, задающий направление ограничений столбца: eachvalue должно быть одним из "<," "<=," "=," "==," ">," или ">=."

    col.rhs

    Вектор числовых значений для правых частей ограничений столбца.

    compute.sens

    Числовой: вычислить чувствительность? По умолчанию 0 (нет); любое ненулевое значение означает "да."

    integers

    Вектор целых чисел, I-й элемент которого дает индекс I-й целочисленной переменной.Его длина будет равна числу целых переменных. По умолчанию: все переменные являются целыми. Значение null, нет переменных типа integer.


    Пример

    ## Transportation problem,

    ## Set up cost matrix

    #

    costs <- matrix (10000, 8, 5);

    costs[4,1] <- costs[-4,5] <- 0

    costs[1,2] <- costs[2,3] <- costs[3,4] <- 7;

    costs[1,3] <- costs[2,4] <- 7.7;

    costs[5,1] <- costs[7,3] <- 8;

    costs[1,4] <- 8.4;

    costs[6,2] <- 9costs[8,4] <- 10;

    costs[4,2:4] <- c(.7, 1.4, 2.1)

    ## Set up constraint signs and right-hand sides.#

    row.signs <- rep ("<", 8)

    row.rhs <- c(200, 300, 350, 200, 100, 50, 100, 150)

    col.signs <- rep (">", 5)col.rhs <- c(250, 100, 400, 500, 200)

    ## Run#

    lp.transport (costs, "min", row.signs, row.rhs, col.signs, col.rhs)

    ## Not run: Success: the objective function is 7790lp.transport (costs, "min", row.signs, row.rhs, col.signs, col.rhs)$solution#

    1 — значения 1Е+30 в столбце Допустимое увеличение (или Допустимое уменьшение) показывают, что допускается неограниченное возрастание (или убывание) значения соответственно целевого коэффициента или правой части ограничения.
    1   2   3   4   5


    написать администратору сайта