Программная реализация метода ветвей и границ

Автор: Пользователь скрыл имя, 30 Марта 2011 в 19:18, курсовая работа

Описание работы

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

Содержание

Введение_________________________________________________________2

Глава 1. Задача о коммивояжере_____________________________________3

Общая постановка задачи______________________________________3
Математическая модель задачи_______________________________3
Глава 2. Метод ветвей и границ____________________________________5

2.1. Основные понятия и определения_____________________________5

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

2.3. Решение задачи методом ветвей и границ_______________________5

Глава 3. Программная реализация метода ветвей и границ_____________12

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

3.2. Описание алгоритма_______________________________________12

3.3. Описание основных структур данных_________________________15

3.4. Описание интерфейса с пользователем________________________16

Заключение___________________________________________________17

Литература___________________________________________________18

Текст программы______________________________________________

Работа содержит 1 файл

курсовая по мат методам.doc

— 385.50 Кб (Скачать)

 

Текст программы

 

     // Kurs_LipinDlg.h : header file

     // 

     #if !defined(AFX_KURS_LIPINDLG_H__FFEC63D9_17E7_4E43_805B_75F68CE9E55F__INCLUDED_)

     #define AFX_KURS_LIPINDLG_H__FFEC63D9_17E7_4E43_805B_75F68CE9E55F__INCLUDED_ 

     #if _MSC_VER > 1000

     #pragma once

     #endif // _MSC_VER > 1000

     // CKurs_LipinDlg dialog

     class CSetting;

     class CKurs_LipinDlg : public CDialog

     {

     // Construction

     public:

     CKurs_LipinDlg(CWnd* pParent = NULL);// standard constructor 

     int koord[29][2],x0,y0;

     bool flag_select[29];

     bool flag_draw;

     int count_selected, n;

     int begin_point;

     bool flag_Bpoint;

     int **table;

     int tableAllCity[29][29];

     unsigned int *min_path;

     int *sel_city;

     CString name_city[29]; 

     CFont myFont;

     void CKurs_LipinDlg::recursiv (bool flag[],unsigned int cur_path[],int j);

     // Dialog Data

     //{{AFX_DATA(CKurs_LipinDlg)

     enum { IDD = IDD_KURS_LIPIN_DIALOG };

     CListBoxm_list1;

     CStaticm_label;

     CStringm_len;

     //}}AFX_DATA 

     // ClassWizard generated virtual function overrides

     //{{AFX_VIRTUAL(CKurs_LipinDlg)

     protected:

     virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support

     //}}AFX_VIRTUAL 

     // Implementation

     protected:

     HICON m_hIcon; 

     // Generated message map functions

     //{{AFX_MSG(CKurs_LipinDlg)

     virtual BOOL OnInitDialog();

     afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

     afx_msg void OnPaint();

     afx_msg HCURSOR OnQueryDragIcon();

     afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

     afx_msg void OnButton2();

     afx_msg void OnButton1();

     virtual void OnOK();

     afx_msg void OnButton3();

     afx_msg void OnButton4();

     //}}AFX_MSG

     DECLARE_MESSAGE_MAP()

     }; 

     //{{AFX_INSERT_LOCATION}}

     // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 

     #endif // !defined(AFX_KURS_LIPINDLG_H__FFEC63D9_17E7_4E43_805B_75F68CE9E55F__INCLUDED_) 
 
 
 
 

     // Kurs_LipinDlg.cpp : implementation file

     //

     #include "stdafx.h"

     #include "Kurs_Lipin.h"

     #include "Kurs_LipinDlg.h"

     #include "math.h"

     #include "Setting.h" 

     #ifdef _DEBUG

     #define new DEBUG_NEW

     #undef THIS_FILE

     static char THIS_FILE[] = __FILE__;

     #endif 

     /////////////////////////////////////////////////////////////////////////////

     // CAboutDlg dialog used for App About 

     class CAboutDlg : public CDialog

     {

     public:

     CAboutDlg();

     // Dialog Data

     //{{AFX_DATA(CAboutDlg)

     enum { IDD = IDD_ABOUTBOX };

     //}}AFX_DATA 

     // ClassWizard generated virtual function overrides

     //{{AFX_VIRTUAL(CAboutDlg)

     protected:

     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

     //}}AFX_VIRTUAL

     // Implementation

     protected:

     //{{AFX_MSG(CAboutDlg)

     //}}AFX_MSG

     DECLARE_MESSAGE_MAP()

     }; 

     CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

     {

     //{{AFX_DATA_INIT(CAboutDlg)

     //}}AFX_DATA_INIT

     } 

     void CAboutDlg::DoDataExchange(CDataExchange* pDX)

     {

     CDialog::DoDataExchange(pDX);

     //{{AFX_DATA_MAP(CAboutDlg)

     //}}AFX_DATA_MAP

     } 

     BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

     //{{AFX_MSG_MAP(CAboutDlg)

     //}}AFX_MSG_MAP

     END_MESSAGE_MAP() 

     /////////////////////////////////////////////////////////////////////////////

     // CKurs_LipinDlg dialog 

     CKurs_LipinDlg::CKurs_LipinDlg(CWnd* pParent /*=NULL*/)

     : CDialog(CKurs_LipinDlg::IDD, pParent)

     {

     //{{AFX_DATA_INIT(CKurs_LipinDlg)

     m_len = _T("");

     //}}AFX_DATA_INIT

     // Note that LoadIcon does not require a subsequent DestroyIcon in Win32

     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

     } 

     void CKurs_LipinDlg::DoDataExchange(CDataExchange* pDX)

     {

     CDialog::DoDataExchange(pDX);

     //{{AFX_DATA_MAP(CKurs_LipinDlg)

     DDX_Control(pDX, IDC_LIST1, m_list1);

     DDX_Control(pDX, IDC_STATIC1, m_label);

     DDX_Text(pDX, IDC_STATIC1, m_len);

     //}}AFX_DATA_MAP

     } 

     BEGIN_MESSAGE_MAP(CKurs_LipinDlg, CDialog)

     //{{AFX_MSG_MAP(CKurs_LipinDlg)

     ON_WM_SYSCOMMAND()

     ON_WM_PAINT()

     ON_WM_QUERYDRAGICON()

     ON_WM_LBUTTONDOWN()

     ON_BN_CLICKED(IDC_BUTTON2, OnButton2)

     ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

     ON_BN_CLICKED(IDC_BUTTON3, OnButton3)

     ON_BN_CLICKED(IDC_BUTTON4, OnButton4)

     //}}AFX_MSG_MAP

     END_MESSAGE_MAP() 

     /////////////////////////////////////////////////////////////////////////////

     // CKurs_LipinDlg message handlers 

     BOOL CKurs_LipinDlg::OnInitDialog()

     {

     CDialog::OnInitDialog(); 

     // Add "About..." menu item to system menu. 

     // IDM_ABOUTBOX must be in the system command range.

     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

     ASSERT(IDM_ABOUTBOX < 0xF000); 

     CMenu* pSysMenu = GetSystemMenu(FALSE);

     if (pSysMenu != NULL)

     {

     CString strAboutMenu;

     strAboutMenu.LoadString(IDS_ABOUTBOX);

     if (!strAboutMenu.IsEmpty())

     {

     pSysMenu->AppendMenu(MF_SEPARATOR);

     pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

     }

     } 

     // Set the icon for this dialog.  The framework does this automatically

     //  when the application's main window is not a dialog

     SetIcon(m_hIcon, TRUE);// Set big icon

     SetIcon(m_hIcon, FALSE);// Set small icon 

     name_city[0] = "С.-Петербург";

     name_city[1] = "Псков";

     name_city[2] = "Новгород";

     name_city[3] = "Смоленск";

     name_city[4] = "Тверь";

     name_city[5] = "Вологда";

     name_city[6] = "Ярославль";

     name_city[7] = "Кострома";

     name_city[8] = "Москва";

     name_city[9] = "Брянск";

     name_city[10] = "Калуга";

     name_city[11] = "Иваново";

     name_city[12] = "Орел";

     name_city[13] = "Тула";

     name_city[14] = "Владимир";

     name_city[15] = "Курск";

     name_city[16] = "Рязань";

     name_city[17] = "Белгород";

     name_city[18] = "Липецк";

     name_city[19] = "Н.Новгород";

     name_city[20] = "Воронеж";

     name_city[21] = "Тамбов";

     name_city[22] = "Чебоксары";

     name_city[23] = "Саранск";

     name_city[24] = "Пенза";

     name_city[25] = "Ульяновск";

     name_city[26] = "Саратов";

     name_city[27] = "Самара";

     name_city[28] = "Волгоград";

      

     x0=10;y0=10;// смещение карты относительно  левого верхнего угла окна

     koord[0][0]=x0+225;// Санкт-Петербург

     koord[0][1]=y0+54;

     koord[1][0]=x0+148; //Псков

     koord[1][1]=y0+60;

     koord[2][0]=x0+195;  // Новгород

     koord[2][1]=y0+92;

     koord[3][0]=x0+93;  // Смоленск

     koord[3][1]=y0+171;

     koord[4][0]=x0+191; //Тверь

     koord[4][1]=y0+193;

     koord[5][0]=x0+301;  //Вологда

     koord[5][1]=y0+200;

     koord[6][0]=x0+261;  //Ярославль

     koord[6][1]=y0+231;

     koord[7][0]=x0+279;//Кострома

     koord[7][1]=y0+248;

     koord[8][0]=x0+181;//Москва

     koord[8][1]=y0+241;

     koord[9][0]=x0+76;//Брянск

     koord[9][1]=y0+240;

     koord[10][0]=x0+133;//Калуга

     koord[10][1]=y0+245;

     koord[11][0]=x0+256;//Иваново

     koord[11][1]=y0+264;

     koord[12][0]=x0+88;//Орел

     koord[12][1]=y0+275;

     koord[13][0]=x0+139;//Тула

     koord[13][1]=y0+272;

     koord[14][0]=x0+227;//Владимир

     koord[14][1]=y0+274;

     koord[15][0]=x0+55;//Курск

     koord[15][1]=y0+297;

     koord[16][0]=x0+176;//Рязань

     koord[16][1]=y0+297;

     koord[17][0]=x0+29;//Белгород

     koord[17][1]=y0+328;

     koord[18][0]=x0+121;//Липецк

     koord[18][1]=y0+338;

     koord[19][0]=x0+276;//Нижний  Новгород

     koord[19][1]=y0+322;

     koord[20][0]=x0+92;//Воронеж

     koord[20][1]=y0+353;

     koord[21][0]=x0+149;//Тамбов

     koord[21][1]=y0+364;

     koord[22][0]=x0+307;//Чебоксары

     koord[22][1]=y0+373;

     koord[23][0]=x0+237;//Саранск

     koord[23][1]=y0+388;

     koord[24][0]=x0+212;//Пенза

     koord[24][1]=y0+408;

     koord[25][0]=x0+280;//Ульяновск

     koord[25][1]=y0+429;

     koord[26][0]=x0+184;//Саратов

     koord[26][1]=y0+456;

Информация о работе Программная реализация метода ветвей и границ