Научная статья на тему 'ИНТЕГРАЦИЯ В СУБД POSTGRESQL БИБЛИОТЕКИ LP_SOLVE ДЛЯ РЕШЕНИЯ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ'

ИНТЕГРАЦИЯ В СУБД POSTGRESQL БИБЛИОТЕКИ LP_SOLVE ДЛЯ РЕШЕНИЯ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
96
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
METHOD DEA / POSTGRESQL / LP_SOLVE / LINEAR PROGRAMMING SOLVER / EFFICIENCY OF SYSTEMS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Постойко А. Ю.

Integration of Open-Source Linear Programming Solver lp_solve is implemented into PostgreSQL. It will expand the capabilities of this Database Management System and will allow subsequently to integrateData Envelopment Analysis (DEA) method, designed to assess the efficiency of systems.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Постойко А. Ю.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

INTEGRATION OF LINEAR PROGRAMMING LIBRARY LP_SOLVE INTO POSTGRESQL

Integration of Open-Source Linear Programming Solver lp_solve is implemented into PostgreSQL. It will expand the capabilities of this Database Management System and will allow subsequently to integrateData Envelopment Analysis (DEA) method, designed to assess the efficiency of systems.

Текст научной работы на тему «ИНТЕГРАЦИЯ В СУБД POSTGRESQL БИБЛИОТЕКИ LP_SOLVE ДЛЯ РЕШЕНИЯ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ»

УДК 519.8

ИНТЕГРАЦИЯ В СУБД POSTGRESQL БИБЛИОТЕКИ LP_SOLVE

ДЛЯ РЕШЕНИЯ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

А. Ю. Постойко Научный руководитель - Е. П. Моргунов

Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31

E-mail: [email protected]

Реализована интеграция в СУБД PostgreSQL свободной библиотеки lpsolve, предназначенной для решения задачи линейного программирования. Это расширит возможности данной СУБД и позволит в дальнейшем интегрировать в нее метод DataEnvelopmentAnalysis (DEA), предназначенный для оценки эффективности систем.

Ключевые слова: метод DEA, СУБД PostgreSQL, библиотека lpsolve, линейное программирование, эффективность систем.

INTEGRATION OF LINEAR PROGRAMMING LIBRARY LP_SOLVE

INTO POSTGRESQL

A. Y. Postoyko Scientific Supervisor - E. P. Morgunov

Reshetnev Siberian State University of Science and Technology 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation E-mail: [email protected]

Integration of Open-Source Linear Programming Solver lpsolve is implemented into PostgreSQL. It will expand the capabilities of this Database Management System and will allow subsequently to integrateData Envelopment Analysis (DEA) method, designed to assess the efficiency of systems.

Keywords: Method DEA, PostgreSQL, lpsolve, Linear Programming Solver, efficiency of systems.

В настоящее время метод DEA, предназначенный для оценки эффективности систем, широко используется, поэтому его интеграция в СУБД PostgreSQL представляется целесообразной. Данный метод является эффективным инструментом, который может быть использован в области информационных технологий. В основе метода DEA лежит решение задачи линейного программирования. Данный метод предоставляет информацию компактно, не упуская важных деталей [1].

На начальном этапе разработкиDEA-расширения программисты могут использовать готовые библиотеки, служащие для решения задачи линейного программирования. Поэтому в качестве первого шага осуществлена интеграция в СУБД PostgreSQL свободной библиотеки lp_solve.

Библиотека lp_solve - открытое программное обеспечение (лицензия GNULGPL - Lesser General Public License) для решения задачи линейного программирования. Библиотека lp_solve имеет IDE (Integrated Development Environment), собственный CAPI (Application Programming Interface) и множество других программных интерфейсов [2].

lp_solve - это библиотека, которую можно вызвать из программы, написанной практически на любом языке программирования, для решения проблем MILP (MixedIntegerLinearProgramming).

Существует несколько способов передачи данных в библиотеку:

- через API;

Актуальные проблемы авиации и космонавтики - 2019. Том 2

- через входные файлы;

- спомощью средыГОЕ.

В данном случаеиспользуется передача данных черезАР1.

Продемонстрируем технологию создания расширения PostgreSQL на примере библиотеки функций для вычисления параметров круга. Сначала выполняется компиляцияисходных модулей, создается разделяемая библиотека, которая копируется в системный каталог PostgreSQL. Затем с помощью команды CREATEFUNCTION создаются функции, встроенные в СУБД[3].

Для использования встроенных функций необходимо выполнить запрос SELECT. Запрос и результат его работы представлены на рис. 1.

test=# select radius, circle_area( circles ) from circles

radius I circle_area

--------+------------------

1 I 3.14159274101257

2 I 12.5663709640503

3 I 28.2743339538574 (3 строки)

test=# select radius, circle_len( radius ) from circles;

radius I circle_len

--------+------------------

1 I 6.28318548202515

2 I 12.5663709640503

3 I 18.8495559692383 (3 строки)

test=# select circle_len( 5 ); circle len

31.4159259796143 (1 строка)

Рис. 2. Запрос и результат его работы

На данном этапе целевая функция и ограничения помещаются в таблицы базы данных. Для формирования структуры данных в формате, требуемом библиотеке lp_solve, используются функции, входящие в состав ее API.

Для интеграции библиотеки (в данном случае liblpsolve55.so) в PostgreSQL, ее необходимо поместить в системный каталог и выполнить команду ldconfig. Данная утилита включит имя liblpsolve55.so в список библиотек, доступных для загрузки.

Для вызова функции используется команда SELECT. Результат решения сохраняется в базе данных.

На рис. 2 представлен результат работы функции lp, решающей задачу максимизации целевой функции, с двумя ограничениями.

test=# Select lp();

ИНФОРМАЦИЯ: LP: opt_type: max, num_vars: 3, num_constrs: 2, description: H. Taha,

8th ed. P. 111, Problem set 3.4B, task 5

ИНФОРМАЦИЯ 1 = 1, J = 1, aij = 2 000000

ИНФОРМАЦИЯ 1 = 1, j = 2, ai j =1 000000

ИНФОРМАЦИЯ 1 = 1, j = 3, aij =1 000000

ИНФОРМАЦИЯ 1 = 2, J = 1, aij = 3 000000

ИНФОРМАЦИЯ 1 = 2, j = 2, aij = 4 000000

ИНФОРМАЦИЯ 1 - 2, J = Э, aij - 2 000000

ИНФОРМАЦИЯ j = 1, CJ = 2 000000

ИНФОРМАЦИЯ J = 2, CJ = 2 000000

ИНФОРМАЦИЯ j - 3, CJ = 4 000000

ИНФОРМАЦИЯ 1 = 1, bi = 2 000000, constr_ .type

ИНФОРМАЦИЯ 1 = 2, bl = В BBBBOO, constr_ _type

ИНФОРМАЦИЯ 3HaL 9HIJ e цепе ой функции: 4.000000

ИНФОРМАЦИЯ Va г 1 = 0.000000

ИНФОРМАЦИЯ Va г 2 = 2.000000

ИНФОРМАЦИЯ Va г 3 = 0.000000

lp

2

Cl строка)

test=# Select :4: from г tsst-# ; ] I val

0 | 4

1 I 0

2 I 2

3 | 0

Рис. 3. Результат работы функции интегрированной библиотеки

Таким образом, выполненная интеграция библиотеки lp_solveдополняет возможности СУБД PostgreSQL, а в дальнейшем послужит основой для реализации метода DEA в виде расширения этой СУБД.

Библиографические ссылки

1. Cooper W. W., Seiford L. M., Tone K. Data Envelopment Analysis : A comprehensive text with models, applications, references, and DEASolver software. 2nd ed. New York: Springer, 2007. - 490 p.

2. Introductiontolp solve 5.5.2.5 [Электронный ресурс]. URL: http://lpsolve.sourceforge.net (дата обращения: 31.03.2019).

3. Моргунов Е.П., Моргунова О. Н. Технологии разработки программ в среде операционных систем Linux и FreeBSD. Вводный курс: учеб. пособие. Красноярск, 2018. -207с.

© Постойко А. Ю., 2019

i Надоели баннеры? Вы всегда можете отключить рекламу.