Научная статья на тему 'Методы решения задачи линейного программирования с дополнительными ограничениями на переменные определенного типа'

Методы решения задачи линейного программирования с дополнительными ограничениями на переменные определенного типа Текст научной статьи по специальности «Математика»

CC BY
1199
191
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ / LINEAR PROGRAMMING / НЕЛИНЕЙНАЯ ОПТИМИЗАЦИЯ / NONLINEAR OPTIMIZATION / МЕТОД БОКСА / BOX METHOD

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

Представлено описание решения задачи, связанной с учетом специфических допустимых множеств на переменные в задачах линейного программирования. В работе речь идет о допустимом множестве, представляющем собой для некоторой переменной объединение отрезков с множительным параметром. Решение указанной задачи производится в два этапа: сначала решается релаксированная задача линейной оптимизации (без учета дополнительных ограничений на переменные), а затем на основании полученного решения строится вспомогательная задача нелинейной оптимизации. Решение указанной вспомогательной задачи основывается на специализированном методе нелинейной оптимизации методе Бокса. Результатом является предложенный автором алгоритм для решения задачи линейного программирования с дополнительными ограничениями на переменные с указанием оценок точности. Решение указанной задачи имеет высокую практическую значимость. Такого рода ограничения на переменные в задачах линейного программирования возникают достаточно часто для производственных задач. Применение метода показано на примере задачи нахождения оптимального плана раскроев в бумагоделательной промышленности, при решении которой возникает задача округления количества накатов съема тамбура бумагоделательных машин в условиях найденного оптимального плана раскроев.

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

Methods for solving linear programming problems with additional restrictions to the particular variables

The paper describes the solution of the problem related to the specific admissible sets of variables in linear programming. We are discussing the feasible set which is the union of segments with multiplier parameter for some variable. The solution of this problem is performed in two stages: at the beginning the relaxed problem of linear optimization is solved (without additional restrictions to the variables), and then auxiliary nonlinear optimization problem is constructed on the basis of the obtained solution. Solution of the mentioned auxiliary problem is based on a specialized method of nonlinear optimization Box method. The result is the algorithm proposed by the author for solving linear programming problems with additional restrictions to the variables with indication of the accuracy estimates. The solution of this problem has a high practical importance. Such restrictions to the variables in the linear programming problems occur often enough for production problems. Method application is shown on the example of an optimal plan finding for pattern cutting in the paper industry, when the task arises associated with the rounding of reels number for paper machines in terms of the found optimal paper cutting plan.

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

НАУЧНО-ТЕХНИЧЕСКИМ ВЕСТНИК ИНФОРМАЦИОННЫХ ТЕХНОЛОГИИ, МЕХАНИКИ И ОПТИКИ март-апрель 2015 Том 15 № 2 ISSN 2226-1494 http://ntv.i1mo.ru/

SCIENTIFIC AND TECHNICAL JOURNAL OF INFORMATION TECHNOLOGIES, MECHANICS AND OPTICS March-April 2015 Vol. 15 No 2 ISSN 2226-1494 http://ntv.ifmo.ru/en

УДК 519.85

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

ОПРЕДЕЛЕННОГО ТИПА А.Р. Урбанa,b

a Петрозаводский государственный университет, Петрозаводск, 185910, Российская Федерация b ООО «ОПТИ-СОФТ», Петрозаводск, 185910, Российская Федерация Адрес для переписки: [email protected] Информация о статье

Поступила в редакцию 13.09.14, принята к печати 09.02.15

doi:10.17586/2226-1494-2015-15-2-322-328

Язык статьи - русский

Ссылка для цитирования: Урбан А.Р. Методы решения задачи линейного программирования с дополнительными ограничениями на переменные определенного типа // Научно-технический вестник информационных технологий, механики и оптики. 2015. Том 15. № 2. С. 322-328.

Аннотация. Представлено описание решения задачи, связанной с учетом специфических допустимых множеств на переменные в задачах линейного программирования. В работе речь идет о допустимом множестве, представляющем собой для некоторой переменной объединение отрезков с множительным параметром. Решение указанной задачи производится в два этапа: сначала решается релаксированная задача линейной оптимизации (без учета дополнительных ограничений на переменные), а затем на основании полученного решения строится вспомогательная задача нелинейной оптимизации. Решение указанной вспомогательной задачи основывается на специализированном методе нелинейной оптимизации - методе Бокса. Результатом является предложенный автором алгоритм для решения задачи линейного программирования с дополнительными ограничениями на переменные с указанием оценок точности. Решение указанной задачи имеет высокую практическую значимость. Такого рода ограничения на переменные в задачах линейного программирования возникают достаточно часто для производственных задач. Применение метода показано на примере задачи нахождения оптимального плана раскроев в бумагоделательной промышленности, при решении которой возникает задача округления количества накатов съема тамбура бумагоделательных машин в условиях найденного оптимального плана раскроев.

Ключевые слова: линейное программирование, нелинейная оптимизация, метод Бокса.

METHODS FOR SOLVING LINEAR PROGRAMMING PROBLEMS WITH ADDITIONAL RESTRICTIONS TO THE PARTICULAR VARIABLES

A.R. Urbana,b

a Petrozavodsk State University, Petrozavodsk, 185910, Russian Federation b LLC «OPTI-SOFT», Petrozavodsk, 185910, Russian Federation Corresponding author: [email protected] Article info

Received 13.09.14, accepted 09.02.15 doi:10.17586/2226-1494-2015-15-2-322-328 Article in Russian

Reference for citation: Urban A.R. Methods for solving linear programming problems with additional restrictions to the particular variables. Scientific and Technical Journal of Information Technologies, Mechanics and Optics, 2015, vol.15, no. 2, pp. 322-328. (in Russian)

Abstract. The paper describes the solution of the problem related to the specific admissible sets of variables in linear programming. We are discussing the feasible set which is the union of segments with multiplier parameter for some variable. The solution of this problem is performed in two stages: at the beginning the relaxed problem of linear optimization is solved (without additional restrictions to the variables), and then auxiliary nonlinear optimization problem is constructed on the basis of the obtained solution. Solution of the mentioned auxiliary problem is based on a specialized method of nonlinear optimization - Box method. The result is the algorithm proposed by the author for solving linear programming problems with additional restrictions to the variables with indication of the accuracy estimates. The solution of this problem has a high practical importance. Such restrictions to the variables in the linear programming problems occur often enough for production problems. Method application is shown on the example of an optimal plan finding for pattern cutting in the paper industry, when the task arises associated with the rounding of reels number for paper machines in terms of the found optimal paper cutting plan.

Keywords: linear programming, nonlinear optimization, Box method.

Введение

Рассматривается метод решения частного случая задачи линейного программирования (ЛП) с наличием одного или нескольких нелинейных ограничений на переменные [1, 2], таких, что переменные не только ограничены снизу нулем, но и должны принадлежать множеству, являющемуся объединением отрезков с множительным параметром вида U ре2 + [ p • r, p • Л], где p - множительный параметр, r, R -

границы отрезка.

Указанные математические модели возникают при решении ряда производственных задач [1, 3, 4], что обусловливает актуальность рассматриваемого предмета исследования. Рассмотрим методы решения поставленной задачи, которые используются авторами в указанных работах. Во всех источниках применяется весьма распространенный подход к решению такого рода задач - принцип релаксации нелинейной задачи, т.е. переход к решению линейной задачи путем релаксирования нелинейных ограничений с последующей корректировкой результата. Таким образом, основная суть метода заключается именно в методе корректировки полученного решения релаксированной задачи для учета нелинейных ограничений оригинальной задачи. В источнике [3] применяется метод простого математического округления, который не учитывает отклонения для неравенств и изменение целевой функции. Авторами работы [4] предложен метод «жадного» алгоритма, который учитывает изменения целевой функции, однако не рассматривает отклонения для неравенств. Данные подходы имеют существенные недостатки, поскольку влекут за собой потерю целевой функции задачи и, следовательно, получение менее оптимального плана раскроев.

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

Практическая значимость состоит в применении данного подхода к задаче нахождения оптимального плана раскроев в бумагоделательной промышленности [1], при решении которой возникает задача округления количества накатов съема тамбура бумагоделательных машин в условиях найденного оптимального плана раскроев.

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

Представим релаксированную задачу ЛП для общей производственной задачи [1] в следующем

виде:

Е ckxk+Е {c'ff + c¡fF) min ,

keK ieN

b, - f <Е AikXk < Bt + F¡, i e N, (1)

k eK

xk > 0, f > 0, Ft > 0, k e K, i e N . где N - индексное множество строк матрицы A; K - индексное множество столбцов матрицы A; bt, Bi -значения нижней и верхней границ для ограничения с номером i e N ; f¡, Ft - значения отклонений от минимальной и максимальной границ соответственно для ограничения с номером i e N ; c¡f, cf - значения штрафов для соответствующих отклонений ограничения с номером i e N ; ck - значение величины штрафа для столбца с номером k e K ; xk - значение переменной с номером k e K.

Пусть x*, k e K - найденное оптимальное решение задачи (1). Это решение найдено посредством матричного конструктора [5, 6] с различными схемами симплексного метода, а также с возможностью распараллеливания процесса поиска оптимального столбца на каждой итерации симплекс-метода [7, 8]. Более подробно метод решения описан в работе [1].

Для определения множества допустимых решений необходимо ввести следующие обозначения:

- rk - нижняя граница элементарного отрезка для переменной с номером k e K ;

- Rk - верхняя граница элементарного отрезка для переменной с номером k e K .

На основе введенных обозначений определим дискретное допустимое множество Qk для каждой переменной k e K :

Ч = Upez + [P • rk,P • Rk], k e K .

Каждое множество Qk представляет собой допустимое множество для значения переменной с номером k e K , которое определяется посредством множительного параметра p . На рис. 1 схематично представлено множество Qk. Отметим, что отрезки [p • rt, p • Rk],k e K в общем случае могут пересекаться.

Гк

Як

2-Гк

J

рЯ

2-Як ... р-Гк Рис. 1. Допустимое множество 0.к

|а, а > 0 [0, а < 0 '

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

Определим для любого ае^: а+ =

задачи {ук, к е К} с учетом указанного допустимого множества:

(

(

У

Е ь-Е ^

ik ук

кеК

(

- с( +

У

Е ^ Ук - Вг

V кеК

-су-

(2)

Ук еПк, к еК ' (3)

При этом значение параметра р для переменной с номером к е К со значением ук будет

определяться следующим образом: рк =

Ук

2 +, к е К.

Об алгоритме решения задачи

Для решения задачи (2)-(3) предлагается использовать следующую схему. Введем неизвестный вектор приращений (-ек < Axк < ек, Axк е ЭТ, к е К), где граничные значения (ек, к е К) выбираются

следующим образом: ек = X - х*, к е К, X = 0,05.

Значение коэффициента X выбирается на практике, и результаты показали, что наиболее приемлемое значение равно 0,05. Посредством введенного вектора приращений свяжем найденное решение задачи (1) и неизвестное решение задачи (2)-(3) следующим образом:

Ук = л (х* +Ахк ), к е К. (4)

сг ,я (х) =

х, если для некоторого р е 2 + верно

х х

— < р < —

Я _ Г _

иначе.

Функция Ог Я (х) определена на всем множестве вещественных чисел х е ЭТ , и в случае принадлежности аргумента к некоторому допустимому отрезку функция возвращает искомый аргумент, иначе возвращает левую границу ближайшего допустимого отрезка. Графическое изображение работы функции Ог Я (х) представлено на рис. 2. Докажем это формально.

а б

Рис. 2. Результат работы функции ОгЯ (х) : аргумент функции принадлежит допустимому отрезку (а); аргумент функции не принадлежит допустимому отрезку (б) Лемма 1. Для любого вещественного аргумента х еЭТ функция ОгЯ (х) возвращает значение, которое принадлежит к некоторому отрезку множества и + [р - г, р - Я].

ре2

Доказательство. 1. Случай

х х

— < р < —

Я _ Г _

,р е г+

Напомним, что для любых а, Ь е Я + верны следующие неравенства:

Ь

Тогда

а > а , Ь - а

— —

Ь _ Ь _

< а .

0

Г

< p ^

x<l - IR

R < pR-x < pR

P <

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

x ^ pr < x

— —

r r

pr < x .

Таким образом, рг < х < рК, р е 2 2. Случай, когда не существует такого р е 2+, что

значение GrR (x) = x принадлежит некоторому отрезку.

x r

x x

е Z + , что — < p < —

R _ r _

и результат равен r

. Докажем,

что при значении p =

значение функции GrR (x) будет попадать в интервал [pr, pR] .

GrR(x)=r<

= pr , r < R ^ GrR (x) = r

x < R - x

r r

= pR.

Таким образом, рг < ОгК (х) < рК,р е 2 + - значение Ог К (х) принадлежит некоторому отрезку. □ Из Леммы 1 следует, что значения {ук, к е К}, полученные посредством формулы (4), удовлетворяют ограничению (3) задачи (2)-(3) для любого вектора неизвестных {Дхк}, к е К .

На основании Леммы 1 и формулы (4) задачу (2)-(3) можно переписать в следующем виде:

X U -X Aikл

X Aik У, - Bi

Л

+ cy ^ min,

Ук = Grt R (4 + Ахк ), к е K >

(-ек ¿Ах, < е,, к е K).

(5)

(6) (7)

Методы решения

Задача (5)-(7) представляет собой задачу условной нелинейной оптимизации [9] в упрощенной

форме:

f (x) ^ min,

x е E = E1 x E2 x... x Ещ, Ek = [-ек,ек], к е K .

Для решения поставленной задачи применялись различные эвристические эволюционные методы решения задач нелинейной оптимизации, такие, как генетический алгоритм, метод муравьиной кучи [10-13], а также различные градиентные методы. Наиболее эффективным оказался комплексный метод Бокса [14]. Данный метод представляет модификацию метода деформируемого многогранника (метод Нелдера-Мида) [15, 16] и предназначен для решения задачи нелинейного программирования с ограничениями-неравенствами, нижними и верхними ограничениями на переменные. Суть метода заключается в минимизации функции n переменных в n-мерном пространстве посредством построения многогранников, содержащих q > n +1 вершин, называемых комплексами [14]. Основная идея метода заключается в итерационном уменьшении максимальной (относительно целевой функции) вершины комплекса. Важным аспектом данного метода является то, что на каждом шаге используется информация только о значениях целевой функции и функций ограничений задачи без необходимости расчета градиентных значений, что существенно упрощает его использование, а также способствует наличию приемлемой вычислительной сложности алгоритма [17]. Применение указанного метода облегчает тот факт, что допустимое множество задачи (5)-(7) является выпуклым и представляет собой n-мерный параллелепипед.

Укажем специфические особенности реализации метода Бокса для решения задачи (5)-(7).

Алгоритм комплексного поиска состоит из следующих шагов.

Шаг 1. Выбор количества точек многогранника (комплекса): P = 2-1K |.

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

x« = ек - (1 - 2 - rk ), i = 1..P, к = 1.. | K |, rk ~ ^[0,1].

Шаг 3. Поиск точки с максимальным значением целевой функции и расчет центра тяжести:

h = argmax(=1 P f (x(i)) , x(c) = -

1

P -1

( p

Xx' \ i=1,i

Шаг 4. Операция отражения для получения новой точки комплекса

v( r) _

Л h)

= (а +1)х ) -а-х1

а = 1,3 - значение коэффициента отражения, которое выбрано из источника [15] и подтверждено на практике для данной задачи.

Шаг 5. Проверка новой точки х(г):

1. х(г) еБ и /(х(г') < /(х(к)) - точка х(г) допустима и значение функции меньше полученного ранее максимального значения - заменяем точку х(к) на точку х(г) и переходим к шагу 7.

2. х(г) еБ и /(х(г)) > /(х(к)) - точка х(г) допустима и значение функции не меньше полученного ранее максимального значения - переходим к новой точке посредством опе-

(г) х + х — рации сжатия х(г) =- и переход на шаг 5.

2

х(г) г Б - точка х(г) недопустима - переходим к граничному условию

хк

хк , хк е Ек —р < —Р

р -1 > Р

и переход на шаг 5.

Шаг 6. Критерий выхода. За оценку критерия выхода возьмем следующую величину среднеквадратичного отклонения значений функций для точек комплекса:

с =

X (/(х(0) — /(х«>))

р—1

Если значение оценки с меньше некоторой величины (выбирается эмпирическим путем), то алгоритм заканчивает свою работу и переход на шаг 7. Иначе продолжаем поиск новой точки х(г) - на шаг 3. Шаг 7. Окончание алгоритма

1 = ш1п{ш1п1=1 р{/(х('))}, /(х(с))} = /(х) - решение задачи.

Точность

Практическая оценка. Практическая оценка базируется на отношении значения целевой функции задачи, полученной с помощью алгоритма, и значения целевой функции релаксированной задачи [18]. Под релаксированной задачей подразумевается задача ЛП (1). Введем следующие обозначения:

— 1* = ш1пхеБ /(х) - решение задачи, минимальное значение целевой функции на допустимом множестве Е ;

— х - решение, найденное методом Бокса, 1 = /(х) - верхняя оценка целевой функции задачи, полученная посредством алгоритма;

— х - решение, найденное методом полного перебора границ отрезков каждого допустимого множества Цк, к е К, 1 = /(х) - соответствующее значение целевой функции задачи;

— х - решение релаксированной задачи (1), 1 = /(х) - нижняя оценка целевой функции задачи.

Для значений целевой функции 1, г*, 1,1 справедливо следующее неравенство: 1 < 1* < 1 < 1. На основе указанных значений введем оценки точности алгоритма:

с. 1 — 2

— о =-=• > 0 - оценка относительно решения релаксированной задачи;

1

~х — 1

— с =-> 0 - оценка относительно решения, полученного посредством полного перебора.

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

Количество раскроев Оценка 5 Оценка с

5 0,01 0,004

10 0,02 0,006

15 0,02 0,011

20 0,04 0,028

25 0,05 0,045

30 0,09 0,082

35 0,10 0,087

40 0,14 0,106

45 0,18 0,118

Таблица. Оценки точности алгоритма

Как видно из таблицы, значения оценок весьма малы, особенно в контексте производственных объемов.

Теоретическая оценка. Теоретическая оценка базируется на сдвиге решения {х*, к е К}, являющимся допустимым базисным решением (угловой точкой симплекса) [19]. Зафиксируем некоторый индекс переменной х*, к е К , относительно которой будет рассматриваться сдвиг на Дхк.

О -Ахк хк Ахк хк

Рис. 3. Изменение функции при сдвиге на Дхк

При сдвиге значения x* на некоторое значение Дхk значение функции в точке будет перемещаться с некоторым углом ak по кусочно-линейной функции (рис. 3). Значение тангенса угла ak рассчитывается вместе с симплекс-таблицей в процессе расчета симплекс-метода [19].

Таким образом, за оценку сверху можно взять сумму значений угла отклонения от угловой точки:

5 = J _ z * <у ^.

k„K tgak

Заключение

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

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

Литература

1. Урбан А.Р., Кузнецов В.А. Математические модели и методы учета сроков продукции в задаче раскроя тамбуров бумагоделательных машин // Ученые записки ПетрГУ. Серия: естественные и технические науки. 2014. № 4 (141). С. 112-115.

Кузнецов В. А. Задачи раскроя в целлюлозно-бумажной промышленности. СПб.: Изд-во СПбЛТА, 2000. 132 с.

Воронов Р. В. Математические модели и методы автоматизированных систем планирования производства бумаги: автореф. дисс. ... канд. техн. наук. Петрозаводск, 2004. 22 с.

Westerlund T., Harjunkoski I., Isaksson J. Solving a production optimization problem in a paper-converting mill with MILP // Computers and Chemical Engineering. 1998. V. 22. N 4-5. P. 563-570. Voronin A.V., Kuznetsov V.A., Arkhipov I.V., Shabaev A.I. Software system for sawmill operation planning // Proc. 12th Conference of FRUCT Association. St. Petersburg, Russia, 2012. P. 165-171. Shabaev A.I., Arhipov I.V., Spirichev M.V., Urban A.R., Torozerov M.A. Development of planning system for plywood production using matrix designer // Proc. 14th Conference of FRUCT Association. St. Petersburg, Russia, 2014. P. 140-147.

Vasenin V.A., Vodomerov A.N. A formal model of a system for automated program parallelization // Programming and Computer Software. 2007. V. 33. N 4. P. 181-194. doi: 10.1134/S0361768807040019 Ilyushin A.I., Olenin M.A., Vasil'ev S.A. Solution of parallel computation problem based on «Space-Time» concept // Programming and Computer Software. 2012. V. 38. N 4. P. 189-200. doi: 10.1134/S0361768812040020

Базара М., Шетти К. Нелинейное программирование. Теория и алгоритмы. М.: Мир, 1982. 584 с.

2.

3.

4.

5.

6.

7.

9.

2

10. Афанасьева А.С., Буздалов М.В. Выбор функции приспособленности особей генетического алгоритма с помощью обучения с подкреплением // Научно-технический вестник информационных технологий, механики и оптики. 2012. № 1 (77). С. 77-81.

11. Еремеев А.В. Генетический алгоритм с турнирной селекцией как метод локального поиска // Дискретный анализ и исследование операций. 2012. Т. 19. № 2. С. 41-53.

12. Shtovba S.D. Ant algorithms: theory and applications // Programming and Computer Software. 2005. V. 31. N 4. P. 167-178. doi: 10.1007/s11086-005-0029-1

13. Khapaev M.M., Tsygankov A. A. An algorithm for the constrained extremum problem // Computational Mathematics and Modeling. 1997. V. 8. N 4. P. 322-325.

14. Трифонов А.Г. Постановка задачи оптимизации и численные методы ее решения [Электронный ресурс]. Режим доступа: http://matlab.exponenta.ru/optimiz/book_2/index.php, свободный. Яз. рус. (дата обращения 25.01.2015)

15. Медынский М.М., Антоний Е.В. Численные методы нелинейной оптимизации: алгоритмы и программы. Учебное пособие. М.: МАИ, 2003. 192 с.

16. Городецкий С.Ю., Гришагин В.А. Нелинейное программирование и многоэкстремальная оптимизация. Нижний Новгород: Изд-во ННГУ, 2007. 489 с.

17. Kapitonova A.P., Smelyanskii R.L., Terekhov I.V. A support system for estimating computational complexity in programs // Computational Mathematics and Modeling. 1994. V. 5. N 4. P. 279-287. doi: 10.1007/BF01130310

18. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: МЦМНО, 2000. 960 с.

19. Гасс С. Линейное программирование: методы и приложения. М.: Физматгиз, 1961. 304 с.

Урбан Александр Ромолдович - ведущий программист, Петрозаводский государственный

университет, Петрозаводск, 185910, Российская Федерация; ведущий программист, ООО «ОПТИ-СОФТ», Петрозаводск, 185910, Российская Федерация, [email protected]

Alexander R Urban — leading programmer, Petrozavodsk State University, Petrozavodsk,

185910, Russian Federation; leading programmer, LLC «OPTI-SOFT», Petrozavodsk, 185910, Russian Federation, [email protected]

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