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

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



НазваниеВ. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования
Дата конвертации25.06.2012
Размер121.6 Kb.
ТипЗадача


В.Л. ВОЛЬФСОН, канд. техн. наук

Алгоритм оптимального проектирования АСУ в задачах с неизвестной целевой функцией, обладающей свойством доминирования


В статье продолжается рассмотрение комбинаторных алгоритмов и методов поиска оптимального решения для задач проектирования различных, в т.ч. программных, компонентов АСУ с целевой функцией (ЦФ), обладающей свойством доминирования. Исследованы алгоритмы и методы решения задач с неизвестной ЦФ и функциями ограничений (ФО). Приведены примеры решения задач с использованием указанных алгоритмов и методов.

In the paper there is continued the description of combinatorial algorithms and methods for searching an optimal solution for designing different parts of control systems (including software) with a goal function having the property of domination. Algorithms and the problem solution methods are investigated for the cases with unknown goal function and functions of restriction. Several examples are given applying the mentioned algorithms and methods.
Введение

При необходимости оптимизации различных компонентов АСУ проектировщик часто затрудняется дать аналитическое представление для ЦФ задачи оптимизации и ФО. Однако он может отдать предпочтение одному варианту проектирования по сравнению с другим на основании собственного опыта. Таким образом, проектировщик может указать какой вариант проектирования доминирует над другим. Более детально свойство доминирования было рассмотрено ранее.1 Там же исследованы алгоритмы доминирующих векторов при известных ЦФ и ФО. Рассмотрим случаи, когда ЦФ либо неизвестна, либо многокритериальна, при этом ФО также могут быть неизвестны.

^
Алгоритмы доминирования при неизвестных ЦФ и ограничениях

Рассмотрим сначала случай, когда ЦФ неизвестна, но мы знаем, что она обладает свойством доминирования и выполняются условия :

f(0,...0,1)  f(0,...1,0) . . .  f(1,...,0).

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

Рассмотрим следующую задачу. Необходимо спроектировать программу с минимальным временем выполнения при заданных сроках разработки (трудоемкости) – Т0. При проектировании программы используются различные варианты сокращения времени ее выполнения. Вопрос ставится так  применять тот или другой вариант или не применять. Пусть трудоемкость реализации i-го варианта – Тi. Тогда ограничение будет иметь вид

gif" name="object1" align=absmiddle width=87 height=39>

где Xi = [0,1].

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

Рассмотрим следующий пример. Пусть m = 3; T1= 1; T2= 2; T3= 3; T0= 5.

Построим переборное дерево:


(0,0,0)

(0,0,1) (0,1,0) (1,0,0)

(0,1,1) (1,1,0) (1,0,1)

(1,1,1)

Определим Т(0,1,1) =1 +2= 3 < T0= 5. Отбрасываем верхнюю часть поддерева, так как значение ЦФ там меньше. Проверим последнюю точку поддерева Т(1,1,1) = 1 +2 +3 = 6 > T0= 5. Отбросим эту точку, так как она не удовлетворяет ограничениям. Переходим на следующее поддерево Т(1,1,0) = 3 < T0= 5. Отбросим верхнюю часть поддерева. Переходим на последнее поддерево Т(1,0, 1) = 4 < T0= 5. Отбросим верхнюю часть поддерева. Подчеркнуты значения, наилучшие для каждого поддерева. Если известно, что для ЦФ выполняется соотношение f(0,0,1)  f(0,1,0)  f(1,0,0), то естественно оптимальное значение достигается в точке (0,1,1).

Обратим внимание, что в последнем примере выполняется условие:

g1(0,0,1) = T1 = 1 < g1 (0,1,0) = T2 = 2 < g1 (1,0,0) = T3= 3.

В этом случае оптимальное значение находится на крайнем слева поддереве и для его нахождения можно использовать алгоритм пожирающих единиц, либо дихотомический алгоритм для крайнего слева поддерева. Определим Т(0,1,1) = 1 + 2= 3 < T0 = 5. Отбрасываем верхнюю часть поддерева ( по дихотомическому алгоритму). Проверим последнюю точку поддерва Т(1,1,1) = 1 + 2 + 3 = 6 > T0 = 5. Другие поддеревья проверять не надо, так как выполняется указанное выше соотношение. Таким образом, мы проверили только две точки вместо четырех в последнем примере.

Исследуем другие случаи: T1 = 2; T2 = 3; T3 = 4; T0 = 1, когда ни одна точка не принадлежит области допустимых значений кроме (0,0,0). Следовательно, она и является оптимальной. Будем считать, что она относится к крайнему слева поддереву.

Если T0 > T1 = Tmin = 2; Т2 = 3; T3 = 4, то оптимальное значение также находится на крайнем слева поддереве.

Рассмотрим еще один случай: Т1 = 5; T2 = 3; T3 = 1, когда дополнительные условия не выполняются

g1(0,0,1) = T1 = 5 > g1 (0,1,0) = T2 =3 > g1 (1,0,0) = T3= 1.

Однако, если известно, что выполняются условия на ЦФ f(0,0,1)  f(0,1,0)  f(1,0,0), можно использовать радиальный алгоритм. Покажем, как это сделать. Сначала проверим крайнее слева поддерево: Т(0,0,1) = T1 = 5 = T0, затем находим Т(0,1,1) = T1 + T2 = 8 > T0= 5. Переходим на поддерево правее в точку Т(1,0,1) = T1 + T3 = 6 > T0 = 5. Условие не выполняется, поэтому переходим на следующее поддерево в точку Т(1,1,0) = T2 + T3 = 4 < T0 = 5. Подчеркнуты точки, подозрительные на оптимальную. Окончательный выбор остается за лицом, принимающим решение (ЛПР).

Покажем наш путь движения по переборному дереву решений.


(0,0,0)

(0,0,1) (0,1,0) (1,0,0)

(0,1,1) (1,0,1) (1,1,0)

(1,1,1)


Если нам неизвестно – выполняются ли условия на ЦФ, то необходимо для данной задачи использовать дихотомический алгоритм, рассмотренный в предыдущем примере. Однако в связи с тем, что дополнительные условия на ограничения не выполняются, оптимальное значение может находиться не на крайнем слева поддереве. В общем случае может быть несколько значений, как в предыдущем примере, подозрительных на оптимальное, и окончательный выбор остается за ЛПР.

Рассмотрим случай, когда ЦФ известна и для нее выполняется отношение доминирования. В этом случае варианты можно упорядочить так: f(0,...,1)  ...  f(1,...,0). Функции ограничений неизвестны.

В этом случае нужно взвесить ФО в условных единицах. Делается это следующим образом. Примем минимальные затраты на первое ограничение условно за единицу, а все остальные затраты по первому ограничению выразим в условных единицах, в т. ч. и само значение первого ограничения – g10. Примем условно за вторую единицу минимальные затраты по второму ограничению, а остальные затраты по второму ограничению выразим в условных единицах, в т. ч. g20 и т.д. для третьего ... n-го ограничений. Далее используем алгоритмы доминирующих векторов при известных ФО.

Данный вариант удобен тогда, когда нет других способов определить ФО и он дает хоть какое-то обоснование принятого решения.

Рассмотрим пример. Проектируется программа, в которой надо минимизировать время ее выполнения при заданных сроках разработки – Т0. При проектировании программы можно использовать три варианта сокращения времени выполнения.. Первый вариант сокращает время выполнения на 15, второй на 10, третий на 6 с. При этом численные значения трудоемкости реализации вариантов неизвестны. Однако можно предположить, что минимальные затраты трудоемкости расходуются на третий вариант. Примем эти затраты за условную единицу. Тогда трудовые затраты на остальные варианты в условных единицах составят Т1 = 3; Т2 = 2; Т0 = 4.

В данном случае не требуется упорядочивать варианты, так как для них уже выполняются условия:

f(0,0,1) =15 > f(0,1,0) = 10 > f(1,0,0) = 6.

Проверим теперь выполнение условий на ФО:

g1(0,0,1) = T1 = 3 > g1(0,1,0) = T2 = 2 > g1(1,1,0) = T3 = 1.

Они не выполняются. Следовательно, оптимальное решение может быть не на крайнем слева поддереве, и для его нахождения надо использовать радиальный алгоритм.

Найдем g1(0,0,1) = T1 =3 < T0, f(0,0,1) = 15. Далее проверим g1(0,1,1) = T1 + Т2 = 5 > T0. Переходим на следующее поддерево в точку g1(1,0,1) = T1 + Т3 = 4 = T0, f(1,0,1) = 15 + 6 = 21. Следовательно, оптимальной является точка (1,0,1).

Если бы минимальными были затраты на первый вариант (Т1 = 1), а затраты трудоемкости на другие варианты составляли бы соответственно: Т2 = 2; Т3 = 3; Т0 = 4, то выполнялись бы условия на ФО:

g1(0,0,1) = T1 = 1 < g1(0,1,0) = T2 = 2 < g1(1,1,0) = T3 = 3 и оптимальное значение находилось бы на крайнем слева поддереве. Его можно найти методом пожирающих единиц:

g1(0,0,1) = T1 = 1 = T0, g1(0,1,1) = T1 + T2 = 3 < T0, g1(1,1,1) = T1 + T2 + T3 = 6 > T0 .

Следовательно, оптимальным являлось бы значение f(0,1,1) =15 + 10 =25.

Теперь рассмотрим случай, когда ЦФ неизвестна или многокритериальна. Для ЦФ выполняется свойство доминирования. Неизвестны ФО.

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

Рассмотрим пример. Проектируется программа, в которой надо минимизировать время выполнения при заданных сроках разработки  Т0. При проектировании программы используются три варианта сокращения времени выполнения. На сколько сокращает время выполнения программы каждый вариант в данном случае неизвестно. Неизвестны также численные значения трудоемкости реализации вариантов. Предположим нам известно, что минимальные затраты трудоемкости требует третий вариант, поэтому примем Т3 = 1. Тогда можно выразить затраты на другие варианты и ограничения в условных единицах соответственно: T1 = 3; T2 = 4; T0 = 4.

Для нахождения решения будем использовать алгоритм доминирующих векторов, так как ЦФ  время выполнения программы, как уже было показано выше, удолетворяет свойству доминирования. Находим g1(0,0,1) = T1 = 3 < T0 = 4. Перейдем к следующей точке g1(0,1,1) = T1 + T2 = 5 > T0 = 4. Перейдем на следующее поддерево g1(0,1,0) = T2 = 2 < T0 = 4. Переходим к следующей точке поддерева g1(1,1,0) = T2 + T2 = 3 < T0 = 4. Перейдем на следующее поддерево g1(1,0,0) = T3 = 1 < T0 = 4. Переходим к следующей точке поддерева g1(1,0,1) = T1 + T3 = 1 + 3 = 4 = T0. Подчеркнуты три точки, подозрительные на оптимальные (наилучшие в каждом поддереве). Окончательный выбор остается за ЛПР.

Если можно установить отношение предпочтения для ЦФ: f(0,0,1)  f(0,1,0)  f(1,0,0), то возможно сократить количество вариантов перебора, использовав радиальный алгоритм. Возможно также сократить количество точек, подозрительных на оптимальную.

Предположим, что в последнем примере отношение предпочтения для ЦФ выполняется и поэтому можно использовать радиальный алгоритм.

Находим g1(0,0,1) = T1 = 3 < T0 = 4. Перейдем к следующей точке g1(0,1,1) = T1 + T2 = 5 > T0 = 4. Переходим на следующее поддерево g1(1,0,1) = T1 + T3 = 1 + 3 = 4 = T0. Покажем наш путь перемещения по переборному дереву решений в данном примере.


(0,0,0)

(0,0,1) (0,1,0) (1,0,0)

(0,1,1) (1,0,1) (1,1,0)

(1,1,1)


Точки, подозрительные на оптимальные, подчеркнуты. Число вариантов перебора сократилось с шести до трех. Число точек, подозрительных на оптимальные, сократилось с трех до двух, что облегчает задачу окончательного выбора для ЛПР. Проверим выполнение дополнительных условий на ФО для нашего примера:

g1(0,0,1) = T1 = 3 > g1(0,1,0) = T2 = 2 > g1(1,0,0) = T3 = 1. Они не выполняются. Следовательно, оптимальное решение может быть не на крайнем поддереве слева. Действительно, кроме точки (0,0,1) подозрительной на оптимальную является точка (1,0,1).

Предположим, что минимальными являются затраты на первый вариант. Примем их за условную единицу (^ Т1 = 1), а трудовые затраты на другие варианты и ограничения представим в условных единицах соответственно: T2 = 2; T3 = 3; T0 = 4. Дополнительные условия на ФО выполняются: g1(0,0,1) = T1 = 1 < g1(0,1,0) = T2 = 2 < g1(1,1,0) = T3 = 3 и оптимальное значение находится на крайнем поддереве слева. В этом случае оптимальное решение можно найти методом пожирающих единиц: g1(0,0,1) = T1 = 1 < T0 = 4; g1(0,1,1) = T1 + T2 = 3 < T0 = 4; g1(1,1,1) = T1 + T2 + T3= 6 > T0 = 4. Следовательно, оптимальной является точка (0,1,1). Окончательное значение ЦФ можно определить после реализации первого и второго вариантов. В данном случае число точек, подозрительных на оптимальную, уменьшилось до 1 и ЛПР не потребуется выбор между вариантами.

Подведем некоторые итоги и определим какие алгоритмы доминирующих векторов надо использовать в различных случаях, когда известно, что ЦФ обладает свойством доминирования.

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

  2. Целевая функция неизвестна либо многокритериальна. Удается установить отношение предпочтения для ЦФ. Функции ограничений известны. Дополнительные условия на ФО не выполняются. Для решения используется радиальный алгоритм. Количество вариантов перебора по сравнению со случаем 1 возможно сократится. Возможно уменьшится и число точек, подозрительных на оптимальную.

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

  4. Известна ЦФ, и для нее можно установить отношение предпочтения. Функции ограничений неизвестны. В этом случае надо применить метод взвешивания к ФО. Затем с помощью радиального алгоритма найти точки, подозрительные на оптимальную, вычислить значения ЦФ в подозрительных точках и выбрать точку с максимальным (минимальным) значением.

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

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

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

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

Алгоритм поиска оптимального решения для ЦФ, обладающей свойством доминирования, представлен на рисунке.

Рассмотрим пример. С помощью SQL-запросов сначала на сервере, а затем на рабочей станции формируется документ. В распоряжении проектировщика имеются несколько вариантов сокращения времени его формирования.

  1. Произвести предварительное агрегирование данных на сервере.

  2. Сделать объединенный запрос к серверу сразу для нескольких разделов документа.

  3. Использовать функции быстрого формирования документа в редакторе на рабочей станции.

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

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

Минимальные затраты по трудоемкости потребует третий вариант, поэтому примем ^ Т3 = 1. В этом случае затраты в условных единицах составят на первый вариант Т1 = 7, второй – Т2 = 5 и ограничение  Т0 = 10.

Рассмотрим первый случай  документ долго формируется в редакторе на рабочей станции. В этом случае выполнены отношения предпочтения для ЦФ: f(1,0,0)  f(0,1,0)  f(0,0,1). Проверим выполнение дополнительных условий на ФО: g1(1,0,0) = Т3 = 1 < g1(0,1,0) = Т2 = 5 < g1(0,0,1) = Т1 = 7. Условия выполняются, поэтому для нахождения оптимального решения можно использовать алгоритм пожирающих единиц: g1(1,0,0) = 1 < Т0 = 10; g1(1,1,0) = 6 < Т0 = 10; g1(1,1,1) = 13 > Т0 = 10. Следовательно, оптимальной является точка (1,1,0), т.е. решение, когда используются второй и третий вариант одновременно. На сколько сократилось время формирования документа можно определить, разработав два указанных варианта.

Рассмотрим второй случай, когда при формировании документа долго идет запрос к серверу. В этом случае выполнено следующее отношение предпочтения для ЦФ: f(0,0,1)  f(0,1,0)  f(1,0,0). Проверим выполнение дополнительных условий на ФО: g1(0,0,1) = Т1 = 7 > g1(0,1,0) = Т2 = 5 > g1(1,0,0) = Т3 = 1. Условия не выполняются, поэтому надо использовать радиальный алгоритм: g1(0,0,1) = Т1 = 7 < Т0 = 10; g1(0,1,1) = 7 + 5 = 12 > Т0 = 10. Переходим на следующее поддерево g1(1,0,1) = 1 + 7 = 8 < Т0 . Таким образом оптимальное решение в этом случае достигается в точке (1,0,1), т.е. при использовании первого и третьего вариантов одновременно.

Выводы

В статье даны алгоритмы, которые можно использовать для случаев с неизвестной или многокритериальной ЦФ и/или неизвестными ФО.

Предложен алгоритм взвешивания ФО, который сводит решение указанных задач к ранее рассмотренным.

Получен общий алгоритм поиска оптимального решения для известных и неизвестных ЦФ и ФО.


Контактный телефон (095) 921-48-29.

E-mail: Volfson. Viktor@gci.cbr.ru

1 Вольфсон В.Л. Алгоритмы оптимального проектирования АСУ в задачах с известной целевой функцией, обладающей свойством доминирования // Приборы и системы. Управление, контроль, диагностика. 2001. № 6.





Похожие:

В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconКанд техн наук. В. Л. Вольфсон
...
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconВ. Л. Вольфсон, канд техн наук Алгоритмы оптимального проектирования асу в задачах с известной целевой функцией, обладающей свойством доминирования
Мотренные алгоритмы применимы к задачам с целевой функцией (ЦФ) булевых и целочисленных переменных, обладающей свойством доминирования....
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconCНиП 01. 09-91
Усср (канд техн наук А. А. Петраков; канд техн наук Ю. Л. Бучинский), Киевзнииэп госкомархитектуры (канд техн наук В. Б. Шевелев),...
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconСНиП 02. 03-84
Л. Гугель), Южгипрошахтом Минуглепрома СССР (Е. М. Дуров, А. М. Парецкий), вними минуглепрома СССР (кандидаты техн наук И. И. Добкин,...
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconПроектирование систем оповещения и управления эвакуацией людей при пожарах в общественных зданиях пособие (к сниП 08. 02-89)
Пособие разработано авторским коллективом в составе: канд техн наук Мешалкин Е. А., канд техн наук Никонов С. А., Тадеуш С. В. (Вниипо...
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconСтроительные нормы и правила защита горных выработок от подземных и поверхностных вод сниП 06. 14-85 издание официальное
Шахтспецстрой и треста Союзшахтоосушение Минмонтажспецстроя СССР (инженеры Я. И. Фэйгин, Э. В. Олизаревич, Л. Н. Московская). Всегингео...
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconВедомственные строительные нормы проектирование среды жизнедеятельности
Н. Н. Щетинина, М. Н. Тюричева), цнииэп курортно туристских зданий и комплексов (кандидаты архитектуры Н. О. Шенгелия, Е. М. Либерман),...
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconА. О. Простейшая оценка риска инвестиционного проекта Простейшая оценка риска инвестиционного проекта Недосекин Алексей Олегович, консультант компании Сименс Бизнес Сервисез, канд техн наук Рассмотрим процесс бизнес-план
Недосекин Алексей Олегович, консультант компании Сименс Бизнес Сервисез, канд техн наук
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconВероятностные распределения с нечеткими параметрами
Недосекин Алексей Олегович, ст консультант компании Сименс Бизнес Сервисез, канд техн наук
В. Л. Вольфсон, канд техн наук Алгоритм оптимального проектирования асу в задачах с неизвестной целевой функцией, обладающей свойством доминирования iconРиск-функция инвестиционного проекта
Недосекин Алексей Олегович, ст консультант компании Сименс Бизнес Сервисез, канд техн наук
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов