русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Размещение элементов методом ветвей и границ


Дата добавления: 2015-06-12; просмотров: 1480; Нарушение авторских прав


Задача: используя метод ветвей и границ найти вариант размещения 6-ти элементов на 6-ти позициях платы размером 1x6 позиций.

Исходные данные: матрица весовых коэффициентов R(i,j), задающая для каждой пары элементов вес соединяющего их проводника, D(i,j) - матрица длин проводника между двумя элементами.

R(i,j) =

 

D(i,j) =

 

 

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

Расчёты ведутся производятся по следующим формулам:

Fp = nn r(i,j)*d(i,j), IX(1,n), jX(i,n),

w = n sortk(r(i,j))*sortk(d(i,j)), iX(1,n), jX(n+1,N), kX(1,n)

U = n sortk(r(i,j))*sortk(d(i,j)), iX(n+1,N), jX(n+2,N)

Fоц = Fp + w + U

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



Распечатка результатов вычислений, выполненных программой приведена ниже:

 

 

Input data:

R-table (weight) D-table (lenght)

---------------- ----------------

0 2 2 3 9 4 0 1 2 3 4 5

2 0 1 10 5 6 1 0 1 2 3 4

2 1 0 3 4 7 2 1 0 1 2 3

3 10 3 0 7 8 3 2 1 0 1 2

9 5 4 7 0 11 4 3 2 1 0 1

4 6 7 8 11 0 5 4 3 2 1 0

---------------- ----------------

 

*** Calculation for vertex #1 ***

 

Put vertex #1 into position of vertex #1:

1 2 3 4 5 6

Fp==0

w=9*1+4*2+3*3+2*4+2*5+=44

U=11*1+10*1+8*1+7*1+7*2+6*2+5*2+4*3+3*3+1*4+=97

-------

Fest=141

 

Put vertex #1 into position of vertex #2:

2 1 3 4 5 6

Fp==0

w=9*1+4*1+3*2+2*3+2*4+=33

U=11*1+10*1+8*1+7*2+7*2+6*2+5*3+4*3+3*4+1*5+=113

-------

Fest=146

 

Put vertex #1 into position of vertex #3:

3 2 1 4 5 6

Fp==0

w=9*1+4*1+3*2+2*2+2*3+=29

U=11*1+10*1+8*1+7*2+7*2+6*3+5*3+4*4+3*4+1*5+=123

-------

Fest=152

 

Put vertex #1 into position of vertex #4:

4 2 3 1 5 6

Fp==0

w=9*1+4*1+3*2+2*2+2*3+=29

U=11*1+10*1+8*1+7*2+7*2+6*3+5*3+4*4+3*4+1*5+=123

-------

Fest=152

 

Put vertex #1 into position of vertex #5:

5 2 3 4 1 6

Fp==0

w=9*1+4*1+3*2+2*3+2*4+=33

U=11*1+10*1+8*1+7*2+7*2+6*2+5*3+4*3+3*4+1*5+=113

-------

Fest=146

 

Put vertex #1 into position of vertex #6:

6 2 3 4 5 1

Fp==0

w=9*1+4*2+3*3+2*4+2*5+=44

U=11*1+10*1+8*1+7*1+7*2+6*2+5*2+4*3+3*3+1*4+=97

-------

Fest=141

Fmin=141 n_min=1

 

*** Calculation for vertex #2 ***

 

Put vertex #2 into position of vertex #2:

1 2 3 4 5 6

Fp=2*1+=2

w=9*2+4*3+3*4+2*5+10*1+6*2+5*3+1*4+=93

U=11*1+8*1+7*1+7*2+4*2+3*3+=57

-------

Fest=152

 

Put vertex #2 into position of vertex #3:

1 3 2 4 5 6

Fp=2*2+=4

w=9*1+4*3+3*4+2*5+10*1+6*1+5*2+1*3+=72

U=11*1+8*1+7*2+7*2+4*3+3*4+=71

-------

Fest=147

 

Put vertex #2 into position of vertex #4:

1 4 3 2 5 6

Fp=2*3+=6

w=9*1+4*2+3*4+2*5+10*1+6*1+5*2+1*2+=67

U=11*1+8*1+7*2+7*3+4*3+3*4+=78

-------

Fest=151

 

Put vertex #2 into position of vertex #5:

1 5 3 4 2 6

Fp=2*4+=8

w=9*1+4*2+3*3+2*5+10*1+6*1+5*2+1*3+=65

U=11*1+8*1+7*2+7*2+4*3+3*4+=71

-------

Fest=144

 

Put vertex #2 into position of vertex #6:

1 6 3 4 5 2

Fp=2*5+=10

w=9*1+4*2+3*3+2*4+10*1+6*2+5*3+1*4+=75

U=11*1+8*1+7*1+7*2+4*2+3*3+=57

-------

Fest=142

Fmin=142 n_min=6

 

*** Calculation for vertex #3 ***

 

Put vertex #3 into position of vertex #3:

1 6 3 4 5 2

Fp=2*5+2*2+1*3+=17

w=9*1+4*3+3*4+10*1+6*2+5*4+7*1+4*1+3*2+=92

U=11*1+8*2+7*3+=48

-------

Fest=157

 

Put vertex #3 into position of vertex #4:

1 6 4 3 5 2

Fp=2*5+2*3+1*2+=18

w=9*1+4*2+3*4+10*1+6*3+5*4+7*1+4*1+3*2+=94

U=11*1+8*2+7*3+=48

-------

Fest=160

 

Put vertex #3 into position of vertex #5:

1 6 5 4 3 2

Fp=2*5+2*4+1*1+=19

w=9*1+4*2+3*3+10*2+6*3+5*4+7*1+4*2+3*3+=108

U=11*1+8*1+7*2+=33

-------

Fest=160

 

Put vertex #3 into position of vertex #6:

1 6 2 4 5 3

Fp=2*5+2*1+1*4+=16

w=9*2+4*3+3*4+10*1+6*2+5*3+7*1+4*2+3*3+=103

U=11*1+8*1+7*2+=33

-------

Fest=152

Fmin=152 n_min=6

 

*** Calculation for vertex #4 ***

 

Put vertex #4 into position of vertex #4:

1 6 2 4 5 3

Fp=2*5+2*1+3*3+1*4+10*2+3*2+=51

w=9*2+4*4+6*1+5*3+7*1+4*3+8*1+7*1+=89

U=11*2+=22

-------

Fest=162

 

Put vertex #4 into position of vertex #5:

1 6 2 5 4 3

Fp=2*5+2*1+3*4+1*4+10*1+3*3+=47

w=9*2+4*3+6*2+5*3+7*1+4*2+8*1+7*2+=94

U=11*1+=11

-------

Fest=152

 

Put vertex #4 into position of vertex #6:

1 6 2 3 5 4

Fp=2*5+2*1+3*2+1*4+10*3+3*1+=55

w=9*3+4*4+6*1+5*2+7*2+4*3+8*1+7*2+=107

U=11*1+=11

-------

Fest=173

Fmin=152 n_min=5

 

*** Calculation for vertex #5 ***

 

Put vertex #5 into position of vertex #5:

1 6 2 5 4 3

Fp=2*5+2*1+3*4+9*3+1*4+10*1+5*2+3*3+4*2+7*1+=99

w=4*2+6*3+7*1+8*2+11*1+=60

U==0

-------

Fest=159

 

Put vertex #5 into position of vertex #6:

1 6 2 5 3 4

Fp=2*5+2*1+3*4+9*2+1*4+10*1+5*3+3*3+4*1+7*2+=98

w=4*3+6*2+7*2+8*1+11*1+=57

U==0

-------

Fest=155

Fmin=155 n_min=6

 

Calculation complete

|1|6|2|5|3|4|

The smallest Fest is 155

 

На выходе получаем массив, содержащий номера позиций, в которые помещается элементы с номером элемента массива:

Элемент
Позиция

 

Отсортируем данные в строке «Позиция» по возрастанию, тогда увидим в каком порядке расположены элементы на плате:

Элемент
Позиция

 

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



<== предыдущая лекция | следующая лекция ==>
Декомпозиция элементов принципиальной схемы | Содержание


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.19 сек.