LPSolve(obj [, constr, bd, opts])

Она имеет следующие параметры:

• obj — алгебраическое выражений, целевая функция;

• constr — множество или список линейных ограничений;

• bd — последовательность вида name=range, задающая границы одной или многих переменных;

• opts — равенство или равенства в форме option=value, где option одна из опций assume, feasibilitytolerance, infinitebound, initialpoint, iterationlimit или maximize, специализированных для команды LPSolve.

Пример на решение задачи линейного программирования дан на рис. 6.4. Здесь оптимизируется целевая функция -3x-2у, которая линейно зависит от переменных х и у. В этом примере интересна техника графической визуализации решения.

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

Эта функция может задаваться также в матричной форме:

LPSolve(c [, lc, bd, opts])

Здесь с вектор, задающий целевую функция, остальные параметры были определены выше. Пример применения функции LPSolve в матричном виде представлен ниже:

> с := Vector([-1,4,-2], datatype=float):

bl := Vector([2,3,1], datatype=float):

bu := Vector([5,8,2.5], datatype=float):

LPSolve(с, [], [bl, bu]);

                 ┌   ┌                   ┐┐

                 │   │                5. ││

                 │   │                   ││

                 │2.,│                3. ││

                 │   │                   ││

                 │   │                   ││

                 └   └2.50000000000000000┘┘

Ряд других подобных примеров применения функции LPSolve можно найти в справке по этой функции.

6.6.4. Квадратичное программирование — QPSolve

Для реализации квадратичного программирования служит функция

QPSolve(obj, constr, bd, opts)

С параметрами, описанными выше для функции LPSolve. Пример реализации квадратичного программирования представлен на рис. 6.5. Здесь оптимизируется выражение -3х²-2y², которое квадратично зависит от переменных x и у. Здесь также интересна техника визуализации квадратичного программирования.

Рис. 6.5. Пример квадратичного программирования

Эта функция также может быть записана в матричной форме:

QPSolve(obj, lc, bd, opts)

Пример применения этой функции дан ниже:

> с := Vector([2, 5.1 , datatype=float):

H := Matrix([[6, 3], [3, 4]], datatype=float):

A := Matrix([[-1,1]], datatype=float):

b := Vector([-2], datatype=float): QPSolve([с, H], [A, b]);

                   ┌                 ┌0.46666666666666564┐┐

                   │-3.5333333333333,│                   ││

                   │                 │-1.6000000000000030││

                   └                 └                   ┘┘

Ряд подобных примеров можно найти в справке по данной функции.

6.6.5. Нелинейное программирование — NLPSolve

Нелинейное программирование позволяет решать задачи оптимизации при нелинейных зависимостях целевой функции от ее аргументов. Для этого в пакете Optimization имеется функция:

NLPSolve(obj, constr, bd, opts)

NLPSolve(opfobj, ineqcon, eqcon, opfbd, opts)

Ее параметры те же, что и у ранее описанных функций. В связи с этим ограничимся парой примеров ее применения при целевых функциях одной и двух переменных:

> NLESolve(х*ехр(-х), х=0..6, maximize);

[0.367879441171442278, [х=0.99999998943752966]]

> NLPSolve(х*y*ехр(-х)*ехр(-y), х=0..6, y=0..6,maximize);

[0.135335283236612674, [х=0.99999999994630706, y=1.00000000003513966]]

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

Возможна и матричная форма функции:

NLPSolve(n, р, nc, nlc, lc, bd, opts)

NLPSolve(n, р, lc, bd, opts)

Примеры на ее применение можно найти в справке по функции NLPSolve.

6.6.6. Работа с функцией импорта данных из файлов — ImportMPC

Для импорта данных из файлов служит функция:

ImportMPS(filename [, maxm, maxn, lowbnd, upbnd, opts])

В ней используются следующие параметры:

• filename — имя файла для MPS(X) в виде строки;

• maxm — максимальное число линейных ограничений;

• maxn — максимальное число переменных;

• lowbnd — значение нижней границы для переменных;

• upbnd — значение верхней границы для переменных;

• opts — выражения в виде опций, записываемых в форме option=value, где option один из объектов rhsname, rangename или boundsname, заданный для Import MPS команд.

С деталями применения этой функции можно ознакомиться по справке по ней.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату