Автор: Пользователь скрыл имя, 08 Января 2013 в 11:42, курсовая работа
Описанная в курсовой работе транспортная задача и методы ее решения – только отдельный пример огромного множества задач линейного программирования. Цель транспортной задачи – разработка наиболее рациональных путей и способов транспортирования товаров, устранение чрезмерно дальних, встречных, повторных перевозок. Все это сокращает время продвижения товаров, уменьшает затрата предприятий, фирм, связанные с осуществлением процессов снабжения сырьем, материалами, топливом, оборудованием и т.д.
Описание методов решения транспортных задач 2
Аналитическое решение задачи 4
Ручной расчет 5
Заключение 7
Список литературы 8
Блок-схема решения задачи 9
Листинг программы 13
Инструкция пользователя 23
Контрольный тест программы 24
StringGrid1->Cells[5][0]="
///////заполняем таблицу (
StringGrid1->Cells[0][1]="A1";
StringGrid1->Cells[0][2]="A2";
StringGrid1->Cells[0][3]="A3";
StringGrid1->Cells[0][4]="
///////заполняем таблицу
///1
StringGrid1->Cells[1][1]=2;
StringGrid1->Cells[1][2]=5;
StringGrid1->Cells[1][3]=2;
///2
StringGrid1->Cells[2][1]=3;
StringGrid1->Cells[2][2]=3;
StringGrid1->Cells[2][3]=1;
///3
StringGrid1->Cells[3][1]=4;
StringGrid1->Cells[3][2]=1;
StringGrid1->Cells[3][3]=4;
///4
StringGrid1->Cells[4][1]=3;
StringGrid1->Cells[4][2]=3;
StringGrid1->Cells[4][3]=2;
/////////////заполняем
StringGrid1->Cells[1][4]=140;
StringGrid1->Cells[2][4]=40;
StringGrid1->Cells[3][4]=60;
StringGrid1->Cells[4][4]=80;
/////////////заполняем
StringGrid1->Cells[5][1]=180;
StringGrid1->Cells[5][2]=60;
StringGrid1->Cells[5][3]=80;
//////////////////////////////
stb=0;str=0;
}
//----------------------------
void __fastcall Tmenu1::N2Click(TObject *Sender)
{
about1->ShowModal();
}
//----------------------------
void __fastcall Tmenu1::N1Click(TObject *Sender)
{
help->Show();
}
//----------------------------
void __fastcall Tmenu1::Button1Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
for(i=0;i<x;i++) {
sevzap->StringGrid1->Cells[i][
for(j=0;j<y;j++){
sevzap->StringGrid1->Cells[i][
stb=0;
str=0;
while(stb<x){
sevzap->StringGrid1->Cells[
}
while(str<y){
sevzap->StringGrid1->Cells[x][
}
//////////////////////////////
menu1->Hide();
sevzap->Show();
}
//----------------------------
void __fastcall Tmenu1::Button2Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
minimal->StringGrid1->Cells[i]
}
}
i=0;j=0;
//////////////////////////////
for(i=0;i<x;i++) {
minimal->StringGrid2->Cells[i]
for(j=0;j<y;j++){
minimal->StringGrid2->Cells[i]
stb=0;
str=0;
while(stb<x){
minimal->StringGrid2->Cells[
}
while(str<y){
minimal->StringGrid2->Cells[x]
}
//////////////////////////////
menu1->Hide();
minimal->Show();
}
//----------------------------
void __fastcall Tmenu1::BitBtn1Click(TObject *Sender)
{
Application->Terminate();
}
//----------------------------
Исходный код about.cpp
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "menu.h"
#include "about.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tabout1 *about1;
//----------------------------
__fastcall Tabout1::Tabout1(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------
void __fastcall Tabout1::Button1Click(TObject *Sender)
{
about1->Close();
}
//----------------------------
Исходный код help1.cpp
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "menu.h"
#include "help1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Thelp *help;
//----------------------------
__fastcall Thelp::Thelp(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------
void __fastcall Thelp::Button1Click(TObject *Sender)
{
help->Close();
}
//----------------------------
Исходный код sevzap.cpp
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "menu.h"
#include "sevzap1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tsevzap *sevzap;
//----------------------------
__fastcall Tsevzap::Tsevzap(TComponent* Owner)
: TForm(Owner)
{
//присваеваем значения по умолчанию
stb=1;
str=1;
r=0;
fx=0;
}
//----------------------------
void __fastcall Tsevzap::BitBtn2Click(TObject *Sender)
{
///присваеваем количество строк и столбцов для x y
x=StringGrid1->ColCount-1; ///столбец
y=StringGrid1->RowCount-1; ///строка
///ограничиваем решение цикла для вывода результата
if((StringGrid1->Cells[x-1][y]
///цикл для подсчета,
когда запасы больше
if(StringGrid1->Cells[x][str].
{//присваем минимальное из значений в целевую ячейку
StringGrid1->Cells[stb][str]=
//из большего вычетаем меньшее и присваеваем большей ячейке
StringGrid1->Cells[x][str]=
StringGrid1->Cells[stb][y]=0;/
//считаем F(x)
r=StringGrid1->Cells[stb][str]
fx=fx+r;
r=0;//сбрасываем результат
//
stb++;//сдвигаемся на столбец
return;//остонавливаем выполнение
}
///цикл для подсчета,
когда запасы меньше
if(StringGrid1->Cells[x][str].
{//присваем минимальное из значений в целевую ячейку
StringGrid1->Cells[stb][str]=
//из большего вычетаем меньшее и присваеваем большей ячейке
StringGrid1->Cells[stb][y]=
StringGrid1->Cells[x][str]=0;/
//считаем F(x)
r=StringGrid1->Cells[stb][str]
fx=fx+r;
r=0;//сбрасываем результат
//
str++;//сдвигаемся на строку
return;//остонавливаем выполнение
}
///цикл для подсчета, когда запасы равны потребностям
if(StringGrid1->Cells[x][str].
{//присваем любое из значений в целевую ячейку
StringGrid1->Cells[stb][str]=
StringGrid1->Cells[stb][y]=0;/
StringGrid1->Cells[x][str]=0;
//считаем F(x)
r=StringGrid1->Cells[stb][str]
fx=fx+r;
r=0;//сбрасываем результат
//
stb++;str++;//перемещаемся на стб и стр по таблице
return;//остонавливаем выполнение
}
}
//////////////////////////////
else{///включаем кнопку для вывода результата,вкл эту
BitBtn2->Visible=false;
BitBtn3->Visible=true;
}
}
//----------------------------
void __fastcall Tsevzap::BitBtn3Click(TObject *Sender)
{///убераем кнопки - выводим результат
Label2->Caption=fx;
Label2->Visible=true;
BitBtn3->Visible=false;
}
//----------------------------
void __fastcall Tsevzap::Button1Click(TObject *Sender)
{/// вывод подсказки
ShowMessage("Выполняйте
шаги до завершения решения
и получения результата");
}
//----------------------------
void __fastcall Tsevzap::BitBtn1Click(TObject *Sender)
{
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
StringGrid1->Cells[i][j]="";
}
}
Label2->Visible=false;
stb=1;
str=1;
r=0;
fx=0;
BitBtn2->Visible=true;
menu1->Show();
sevzap->Close();
}
//----------------------------
//----------------------------
Исходный код minimal1.cpp
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "minimal1.h"
#include "menu.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tminimal *minimal;
//----------------------------
__fastcall Tminimal::Tminimal(TComponent* Owner)
: TForm(Owner)
{
/////присваеваем значение по умолчанию
stb=1;str=1;
r=0;fx=0;
i=1;j=1;
}
//----------------------------
void __fastcall Tminimal::BitBtn1Click(TObject *Sender)
{ ///кнопка назад
/////присваеваем переменным значения размера таблици
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
/////очищаем первую таблицу
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
StringGrid1->Cells[i][j]="";
}
}
//////очищаем вторую таблицу
for(i=0;i<x+1;i++){
for(j=0;j<y+1;j++){
StringGrid2->Cells[i][j]="";
}
}
/////возвращаем начальные значения переменным
stb=1;str=1;
r=0;fx=0;
i=1;j=1;
BitBtn3->Visible=true;
Label2->Visible=false;
//////////////переходим в главное меню
menu1->Show();
minimal->Close();
}
//----------------------------
void __fastcall Tminimal::BitBtn3Click(TObject *Sender)
{
/////присваеваем переменным значения размера таблици
x=StringGrid1->ColCount-1;
y=StringGrid1->RowCount-1;
i=1;j=1;
min=StrToInt(StringGrid1->
stb=1;str=1;////
for(int i = 1; i < StringGrid1->ColCount-1; i++) {
for(int j = 1; j < StringGrid1->RowCount-1; j++) {
if (min>StringGrid1->Cells[i][j]) {
min=StringGrid1->Cells[i][j].
stb=i;str=j;///запоминаем координаты минимального элемента
////когда минимальный
не равен, тогда выполняем
if (min != 999){
///цикл для подсчета, когда запасы больше потребностей
if (StringGrid1->Cells[stb][y].
{
StringGrid2->Cells[stb][str]=
StringGrid1->Cells[stb][str]=
///из большего вычитаем меньшее
StringGrid1->Cells[x][str]=
StringGrid2->Cells[x][str]=
///считаем F(x)
r= StringGrid2->Cells[stb][str]*
fx=fx+r;r=0; Label2->Caption=fx;
///замещаем столбец бомьшим числом
for(int str = 1; str < y ; str++) {StringGrid1->Cells[stb][str]=
StringGrid2->Cells[stb][y]=0;
StringGrid1->Cells[stb][y]=0;
return;
}
/// цикл для подсчета, когда запасы меньше потребностей
if (StringGrid1->Cells[stb][y].
{
StringGrid2->Cells[stb][str]=
StringGrid1->Cells[stb][str]=
///из большего вычитаем меньше
StringGrid1->Cells[stb][y]=
StringGrid2->Cells[stb][y]=
///считаем F(x)
r= StringGrid2->Cells[stb][str]*
fx=fx+r;r=0; Label2->Caption=fx;
/////замещаем строку бомьшим числом
for(int stb = 1; stb < x ; stb++) {StringGrid1->Cells[stb][str]=
StringGrid2->Cells[x][str]=0;
StringGrid1->Cells[x][str]=0;
return;
}
///цикл для подсчета, когда запасы равны потребностям
if (StringGrid1->Cells[stb][y].
{
StringGrid2->Cells[stb][str]=
StringGrid1->Cells[stb][str]=
StringGrid1->Cells[stb][y]=0;
StringGrid2->Cells[stb][y]=0;
StringGrid1->Cells[x][str]=0;
///считаем F(x)
r= StringGrid2->Cells[stb][str]*
fx=fx+r;r=0; Label2->Caption=fx;
/////замещаем строку и столбец
for(int stb = 1; stb < x ; stb++) {StringGrid1->Cells[stb][str]=
for(int str = 1; str < y ; str++) {StringGrid1->Cells[stb][str]=
StringGrid2->Cells[x][str]=0;
return;
}
}
else {BitBtn4->Visible=true;
}
//----------------------------
void __fastcall Tminimal::BitBtn4Click(TObject *Sender)
{
BitBtn4->Visible=false;
Label2->Visible=true;
}
//----------------------------
void __fastcall Tminimal::Button1Click(TObject *Sender)
{
/// вывод подсказки
ShowMessage("Выполняйте шаги до завершения решения и получения результата");
}
//----------------------------
8.Приложение B (Рекомендуемое) Инструкция пользователя
9.Приложение Г (Обязательное) Контрольный тест программы