Автор: Пользователь скрыл имя, 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
Текст программы______________________________________________
// Kurs_LipinDlg.h : header file
//
#if
!defined(AFX_KURS_LIPINDLG_H__
#define
AFX_KURS_LIPINDLG_H__FFEC63D9_
#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_
enum { IDD = IDD_KURS_LIPIN_DIALOG };
CListBoxm_list1;
CStaticm_label;
CStringm_len;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CKurs_
protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON
m_hIcon;
// Generated message map functions
//{{AFX_MSG(CKurs_
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__
// 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(
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(
//}}AFX_DATA_INIT
}
void
CAboutDlg::DoDataExchange(
{
CDialog::DoDataExchange(
//{{AFX_DATA_MAP(
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(
//{{AFX_MSG_MAP(
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////
//
CKurs_LipinDlg dialog
CKurs_LipinDlg::CKurs_
: CDialog(CKurs_LipinDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CKurs_
m_len = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon
= AfxGetApp()->LoadIcon(IDR_
}
void
CKurs_LipinDlg::
{
CDialog::DoDataExchange(
//{{AFX_DATA_MAP(CKurs_
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_
//{{AFX_MSG_MAP(CKurs_
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_LBUTTONDOWN()
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
//}}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(
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_
pSysMenu->AppendMenu(MF_
}
}
// 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;
Информация о работе Программная реализация метода ветвей и границ