Компания ALT Linux
Опубликован: 12.03.2015 | Доступ: свободный | Студентов: 576 / 64 | Длительность: 20:55:00
Лекция 10:

Решение оптимизационных задач

10.2.2 Решение задач линейного программирования в Octave

Для решения задач линейного программирования в Octave существует функция [xopt, fmin, status, extra] = glpk(c, a, b, lb, ub, ctype, vartype, sense, param)

Здесь:

  • c — вектор-столбец, включающий в себя коэффициенты при неизвестных функции цели, размерность вектора c равна количеству неизвестных n в задаче линейного программирования;
  • a — матрица при неизвестных из левой части системы ограничений, количество строк матрицы равно количеству ограничений m, а количество столбцов совпадает с количеством неизвестных n;
  • b — вектор-столбец содержит свободные члены системы ограничений, размерность вектора равна количеству ограничений m.
  • lb — вектор-столбец размерности n, содержащий верхнюю систему ограничений (x > lb), по умолчанию lb — вектор столбец, состоящий из нулей;
  • ub — вектор-столбец размерности n, содержащий нижнюю систему ограничений (x < ub), по умолчанию верхняя система ограничений отсутствует, подразумевается, что все значения вектора ub равны +\infty;
  • ctype — массив символов размерности n, определяющий тип ограничения (например, (10.7) или (10.8)), элементы этого век-тора могут принимать одно из следующих значений:
    • "F" — ограничение будет проигнорировано,
    • "U" — ограничение с верхней границей ((A(i,:)*x <= b(i)),
    • "S" — ограничение в виде равенства ((A(i,:)*x = b(i)),
    • "L" — ограничение с верхней границей ((A(i,:)*x >= b(i)),
    • "D" — двойное ограничение ((A(i,:)*x <= b(i) и (A(i,:)*x>= b(i));
  • vartype — массив символов размерности n, который определяет тип переменной x_i "C" — вещественная переменная, "I" —целочисленная переменная;
  • sense — значение, определяющее тип задачи оптимизации:
    • 1 — задача минимизации,
    • -1 — задача максимизации;
  • param — структура, определяющая параметры оптимизационных алгоритмов, при обращении к функции glpk.

Во многих случаях достаточно значений структуры param по умолчанию, в этом случае последний параметр в функции glpk можно не указывать. Подробное описание структуры param выходит за рамки книги, в случае необходимости его использования авторы рекомендуют обратиться ко встроенной справке Octave.

Функция glpk возвращает следующие значения:

  • xopt — массив значений x, при котором функция цели L принимает оптимальное значение;
  • fmin — оптимальное значение функции цели;
  • status — переменная, определяющая как решена задача оптимизация, при status = 180, решение найдено и задача оптимизации решена полностью2Если status\not =180, то полученному решению доверять нельзя, подробнее о значениях переменной status в этом случае можно прочитать в справке.;
  • extra — структура, включающая следующие поля:
    • lambda — множители Лагранжа;
    • time — время в секундах, затраченное на решение задачи;
    • mem — память в байтах, которая была использована, при решении задачи (значение недоступно, если была использована библиотека линейного программирования GLPK 4.153В последней на момент написания книги версии Octave использовалась библиотека GLPK версии 4.38.и выше).

Рассмотрим несколько примеров решения задач линейного программирования.

Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?