Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсак ЧММ.doc
Скачиваний:
1
Добавлен:
25.08.2019
Размер:
641.02 Кб
Скачать

8 Задача оптимізації з використанням графів.

Визначити найкоротші маршрути від заданого поштового вузла до усіх інших. Матрицю відстаней поміж вузлами мережі поштового зв'язку наведено у таблиці 2 (Варіанти значень змінних наведено у таблиці 3). Заданий номер вузла - остання цифра номеру варіанта (цифра 0 відповідатиме вузлу 10).

Маршрут – это последовательность чередующих вершин графа, соединённых рёбрами.

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Unit1.h"

#include <stdio.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

const int N=10;

FILE*f;

char filedan[]="matrica.txt";

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int M,beg,fin,i,j;

f=fopen(filedan,"rt");

int gr[10][10],Lab[10],Act[10],pred[10],Temp[10];

Edit1->Text=IntToStr(10);

M=StrToInt(Edit2->Text);

beg=StrToInt(Edit3->Text);

fin=StrToInt(Edit4->Text);

Memo1->Clear();

Memo1->Lines->Add(IntToStr(N)+" "+IntToStr(M)+" "+IntToStr(beg)+" "+IntToStr(fin));

for(i=0;i<10;i++)

{for(j=0;j<10;j++)

{fscanf(f,"%i",&gr[i][j]);

StringGrid1->Cells[i+1][j+1]=StrToInt(gr[i][j]);

}

fscanf(f,"\n");

}

fclose(f);

for(i=0;i<N;i++)

{ Lab[i]=0;

Act[i]=0;

pred[i]=0;

for(i=0;i<N;i++)

Lab[i]=32767;

Act[beg]=1;

Lab[beg]=0;

i=beg;

do

{for(j=0;j<N;j++)

if(gr[i][j]!=0&&Lab[j]>Lab[i]+gr[i][j])

{Act[j]=1;

Lab[j]=Lab[i]+gr[i][j];

pred[j]=i;}

Act[i]=0;

int min,k,min_pos=-1;

min=32767;

for(k=0;k<M;k++)

if(Lab[k]<min&&Act[k]==1)

{min=Lab[k];

min_pos=k;}

i=min_pos;}

while(i!=1);

Edit5->Text=IntToStr(Lab[fin]);

j=fin;

i=1;

Temp[0]=fin;

while(j!=beg)

{Temp[i]=pred[j];

j=pred[j];

i++;

}

Memo1->Lines->Add("min puti "+IntToStr(beg)+"to"+IntToStr(fin));

for(j=i-1;j>0;j--)

Memo1->Lines->Add(IntToStr(Temp[j]));

Memo1->Lines->Add(IntToStr(fin));

}}

//---------------------------------------------------------------------------

9 Оптимізація з обмеженнями (Транспортна задача).

Розв'язати в Excel задачу перевезення вантажу з вузлів зв'язку на пункти сортування.

У відділеннях зв'язку ВЗ1,ВЗ2,ВЗ3,ВЗ4,ВЗ5,ВЗ6 накопичено вантажі відповідно в об'ємах: 20 +10я, ЗО, ЗО + 10л, 40, 25, 15 (центнерів), де п — номер індивідуального варіанта.

Пункти сортування ПС1, ПС2. ПС3 можуть прийняти вантажі у об'ємах, що становлять відповідно: 60+10л, 50-М0л і 50 (центнерів).

Транспортная задача является классической задачей исследования операций. Множество задач распределения ресурсов сводится именно к этой задаче.

Для решения транспортной задачи воспользуемся процедурой Поиск решения, которая находится в меню Сервис.

Имеются следующие исходные данные.

Перевозка груза с узлов связи в пункт сортировки:

 

ПС1

ПС2

ПС3

Огран

ВЗ1

10

8

5

100

ВЗ2

5

6

6

30

ВЗ3

4

8

7

110

ВЗ4

11

4

5

40

ВЗ5

2

6

10

25

ВЗ6

4

3

8

15

ВЗ7

140

130

50

 

Для решения транспортной задачи на персональном компьютере с использованием EXCEL необходимо:

Ввести исходные данные в ячейки рабочего листа EXCEL;

Разметить блоки ячеек на рабочем листе EXCEL, необходимые для моделирования объемов перевозок, а также для формирования элементов математической модели и целевой функции;

Сформировать на рабочем листе EXCEL элементы математической модели и целевую функцию;

Настроить программу " Поиск решения" и выполнить ее.

Результаты поиска решения 1520

0

50

50

100

5

25

0

30

110

0

0

110

0

40

0

40

25

0

0

25

0

15

0

15

140

130

50

1520

Список:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]