- •Технология разработки интеллектуальных информационных систем Учебное пособие по курсовому проектированию по дисциплине «Технология разработки интеллектуальных информационных систем»
- •Содержание
- •1. Функциональная структура иис
- •1.1. Внешние объекты и диаграммы окружения
- •1.2. Данные, результаты, хранилища и логическая модель
- •1.3. Задачи, функции и модель поведения
- •2. Математическое обеспечение
- •2.1. Построение математической модели задачи
- •2..2.1. Выбор метода решения задачи
- •2.2.2. Эвристические методы принятия решений
- •2.2. Метод решения задачи
- •2.3. Решение задачи на контрольном примере
- •3. Проектирование информационного обеспечения
- •3.1. Концептуальное проектирование базы данных.
- •3.2. Логическое проектирование базы данных
- •Нормализация отношений.
- •1. Первая нормальная форма (1нф).
- •2. Вторая нормальная форма(2нф)
- •3. Третья нормальная форма (3нф).
- •Этапы логического проектирования базы данных.
- •3.3. Ведение бд.
- •Примеры описаний структуры отношения и списка событий приведены в табл. 2.9-2.11 (данные приведены для факультета университета).
- •4. Технологический процесс обработки данных
- •5. Разработка алгоритмов решения прикладных задач
- •Задание курсовой работы по дисциплине «технология разработки интеллектуальных информационных систем»
- •Сроки контроля выполнения проекта
- •Приложение 4. Образец содержания курсовой работы содержание
- •Приложение 6. Общие требования к оформлению пояснительной записки
- •Приложение 7. Структура текстовой части
- •Приложение 8. Рубрикация текста. Требования к изложению и стилю текста
- •Приложение 9. Оформление таблиц и иллюстраций
- •Приложение 10. Список использованных источников. Оформление ссылок
- •Оформление ссылок. Встречаются ссылки двух видов: ссылки внутри текста (на различные рисунки, на страницы, формулы, таблицы, иллюстрации) и библиографические ссылки.
2.2. Метод решения задачи
2..2.1. Выбор метода решения задачи
Для выбора или разработки метода решения необходимо отнести поставленную задачу к одному из классов.
Пусть
-
заданное множество элементов x
произвольной природы,
–
заданное отображение множества
в множество Y
чисел (натурального ряда, рациональных,
действительных, неотрицательных,
и
т. д.).
Тогда
задача минимизации (максимизации) может
быть сформулирована следующим образом:
либо найти элемент
,
,
который минимизирует функцию f(x),
либо установить его отсутствие. Если
существует такой элемент
,
то
для всех
.
Класс задачи оптимизации определяется:
свойствами множества Х;
видом ограничений;
видом целевой функции.
Множества Х может быть:
непрерывное (н), дискретное (д)- [
]
, целочисленное
(ц) -
;отрицательное (о), неотрицательное (н);
бесконечное (б), конечное (к) ;
бинарное (B) – [0,1], не бинарное (N).
Классы задач при учете свойств множества X представлены в табл. 3.2.:
Таблица 3.2
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
1 |
Непрерывность |
н |
н |
н |
н |
д |
д |
д |
д |
ц |
ц |
ц |
ц |
ц |
2 |
Отрицательность |
о |
о |
н |
н |
О |
о |
н |
н |
о |
о |
н |
н |
н |
3 |
Бесконечность |
б |
к |
б |
к |
Б |
к |
б |
к |
б |
к |
б |
к |
к |
4 |
Бинарность |
N |
N |
N |
N |
N |
N |
N |
N |
N |
N |
N |
N |
B |
Все ограничения относят к следующим видам:
линейные -
,
или нелинейные
,
где
нелинейная
функция;логически связанные:
,
где
- множество Н
дизъюнктивных уравнений
Виды целевой функции может быть следующим:
однокритериальные -
,
или многокритериальные -
,
где n-
количество критериев.линейные или нелинейные.
Для определения класса задачи математического программирования необходимо воспользоваться источником: «Хохлюк В.И. Параллельные алгоритмы целочисленной оптимизации. -М.: Радио и связь, 1987.».
При установленном классе задачи можно воспользоваться методом решения задачи (см. Венцель Е.С. Исследование операций - М., «Советское радио», 1972).
2.2.2. Эвристические методы принятия решений
Приведем описание эвристического метода решения задачи в качестве примера.
Термин эвристический носит двоякий смысл. Во-первых, к эвристическим методам относят методы, являющимися человеко-машинными, т.е. методы, которые не во всех своих деталях могут быть записаны формально и требуют непосредственного принятия решения человеком на некоторых стадиях вычислительного процесса. Во-вторых, эвристические методы характеризуются использованием некоторых правдоподобных соображений, не являющихся формально обоснованными.
На практике чаще всего используют эвристические методы решения задачи, так как точные методы невозможно применить из-за «проклятия размерности».
Одним из приемов, которые часто используются на практике, является "пожирающие" (greedy) алгоритмы (для булевых задач - метод последовательного назначения единиц).
Рассмотрим применение пожирающего алгоритма на примере задачи линейного программирования с одним линейным ограничением. Пусть необходимо найти максимум:
,
(1)
при условии:
,
(2)
где xÎ {0, 1}, j = 1, 2, …, n, cj > 0, aj > 0, bj > 0. Не умаляя общности, можно предположить, что переменные занумерованы так, что c1/a1 ≥ c2/a2 ≥ ≥ cn/an. Будем пытаться максимизировать f(x) за счет самых больших значений cj/aj, полагая последовательно x1, x2, и т. д. равными единице до тех пор, пока не нарушится ограничение (2).
Рассмотрим алгоритм решения задачи о выборе рациона питания:
С=c1x1+c2x2+c3x3+c4x4 ® min;
xi ≥ 0, i = 1,2,3,4;
а11х1+а21х2+а31х3+а41х4≥b1;
а12х1+а22х2+а32х3+а42х4≥b2:
а13х1+а23х3+а33х3+а43х4≥b3.
Воспользуемся пожирающим алгоритмом (можно также найти точное решение задачи, используя симплекс метод):
1. Найдем список коэффициентов:
H={ h11, h12, h13, h21, h22 ,h23, …, h41, h42, h43,} ,
где h11=c1/a11, h12=c1/a12, h13=c1/a13,.
h21=c2/a21, h22=c2/a22, h23= c2/a23 …,
h41= c4/a41, h42=c2/a42, , h43= c4/a43,
H={cj/aji i=1,4; j=1,3}.
2. Присвоим s (номер витка цикла) значение равное единице
3. Найдем минимальное значение h*ij, h*ij Î H и исключим из списка H все значения hkj (k=1,4).
4. Назначим максимально возможное значение x*i (s):
x*(s)i = bj/aij.
Удалим из дальнейшего рассмотрения ограничение:
а1jх1+а2jх2+а3jх3+а4jх4≥bj:
Используя найденное значение x*i (s) изменим ограничения задачи:
а1jх1+а2jх2+а3jх3+а4jх4≥bj - aij ´ x*i(s).
Если список H не пустой, то увеличим s на единицу и перейдем к пункту 2. В противном случае завершим решение и найдем значение целевой функции и искомых переменных:
,
i=1,4;
,
где S – множество номеров витков цикла алгоритма (шаги 2-6).
