Научно-практическая конференция учащихся и педагогов

«Первые шаги в науку»

Симплекс-метод в СП DELPHI

Выполнил:

ученик 11 класса

ГУО«Речицкий районный лицей»

Научный руководитель –

учитель информатики

ГУО«Речицкий районный лицей»

Брянск, 2013

Содержание

1. Введение……………………………………………………………………..….3

2. Описание работы…………………………………………………………….....4

2.1. Определение Симлекс-метода. Предназначение Симплекс-метода….….4

2.2. Составление программы нахождения максимума с помощью симплекс метода на DELPHI………………………………………………………………...6

2.3. Рабочий вид программы…………………………………………………....9

3. Литература…………………………………………………………………….12

4. Приложение…………………………………………………………………..13

1. Введение

Цель работы:

· Изучить Симплекс-метод и рассмотреть его применение;

· Научиться решать данным методом серию экономических задач;

· Используя среду разработки Borland Delphi составить программу, осуществляющую решение задач с использованием Симплекс-метода;

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

2.1. Определение Симплекс-метода. Предназначение Симплекс-метода

Симплекс-метод — алгоритм решения оптимизационной задачи линейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве.

Для нахождения максимума с помощью симплекс-метода необходимы: система ограничений и целевая функция ,которая стремится к максимуму.

Имея систему ограничений, приведенную к общему виду, то есть к системе n линейных уравнений с m переменными, находят любое базисное решение этой системы

Далее эта система оформляется в виде симплекс-таблиц

НЕ нашли? Не то? Что вы ищете?

Первая симплекс-таблица подвергается преобразованию c помощью алгоритма, суть которого заключается в переходе к новому опорному решению, пока оно не будет оптимальным(отсутствие в целевой

строке отрицательных элементов среди базисных неизвестных.) .

Алгоритм перехода к следующей таблице такой:

· просматривается последняя строка (в которой начиная со второго столбца и по (m+1)ый находятся коэффициенты целевой функции взятые с противоположным знаком ) таблицы и среди коэффициентов этой строки (исключая столбец свободных членов ) выбирается наименьшее число при отыскании максимума или наибольшее при поиске минимума(пока эти коэффициенты меньше 0). Если такового нет, то исходное базисное решение является оптимальным и данная таблица является последней;

· просматривается столбец таблицы, отвечающий выбранному отрицательному (положительному) коэффициенту в последней строке является ключевым, и в этом столбце выбираются положительные коэффициенты. Если таковых нет, то целевая функция неограниченна на области допустимых значений переменных и задача решений не имеет;

· среди выбранных коэффициентов столбца выбирается тот, отношения свободного члена (находящегося в столбце свободных членов) к этому элементу минимальна. Этот коэффициент называется разрешающим, а строка в которой он находится ключевой;

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

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

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

· в новой таблице все элементы ключевого столбца = 0, кроме разрезающего, он всегда равен 1.

· столбец, у которого в ключевой строке имеется 0,в новой таблице будет таким же.

· строка, у которой в ключевом столбце имеется 0,в новой таблице будет такой же.

·

Элемент

Ключевой строки

 

Элемент

Ключевого столбца

 

Старый

элемент

 

Новый

элемент

 
в остальные клетки новой таблицы записывается результат преобразования элементов старой таблицы по следующему принципу:

= - *

2.2. Составление программы нахождения максимума с помощью симплекс-метода на Delphi

На вкладке общая задача, выбирается количество переменных и количество систем ограничений. После этого составляется система ограничений и целевая функция, в которых в поле TEdit вставляются коэффициенты. При нажатии кнопки «Вычислить» программа, как и в частном случае( Пример1,Пример2) ,составляет двумерный массив и обращается к процедуре drogba11 с помощью, которой симплексным методом находится максимум целевой функции

В данном цикле просматривается последняя строка, в которой находится наименьшее число. После этого проверяется, не достигнуто ли оптимальное решение

min:=maxlongint;

For i:=2 to m+1 do

begin

If (A[n+1,i]<min) then

begin

min:=A[n+1,i];

e:=i;

end;

end;

If min=0 then break;

Просматривается столбец таблицы, отвечающий выбранному отрицательному (минимальному) коэффициенту и выбирается тот, отношения свободного члена (находящегося в столбце свободных членов) к этому элементу минимальна.

min:=maxlongint;

For i:=1 to n do

begin

If (A[i,1]/abs(A[i, e]))<min then

begin

min:=A[i,1]/A[i, e];

v:=i;

s:=A[i, e];

end;

end;

После чего происходит преобразование старой таблицы

For i:=1 to 2*n do

A[v, i]:=A[v, i]/s;

For i:=1 to n+1 do

begin

If i<>v then

begin

s:=A[i, e];

A[i, e]:=0;

For j:=1 to 2*n do

begin

If j<>e then

begin

A[i, j]:=A[i, j]-(A[v, j]*s);

end;

end;

end;

end;

Находим значения переменных, при которых достигается максимум

For i:=1 to n do

For j:=2 to m+1 do

If A[i, j]=1 then X[j-1]:=A[i,1]

2.3. Рабочий вид программы.

Программа представляет собой форму, на которой расположены вкладки, в которых находятся примеры применения симплекс-метода и общая программа для произвольных случаев

Вид программы при выборе вкладки «Пример 1»

\\7-06\program (d)\1.JPG

Вид программы при выборе вкладки «Пример 2»

\\7-06\program (d)\2.JPG

Вид программы при выборе вкладки «Общая задача»

C:\Documents and Settings\Ученик\Рабочий стол\3.bmp

3. Литература

Интернет-энциклопедия Википедия – http://wikipedia. org

Интернет-портал – http://matmetod-popova. *****

Интернет-портал – http://simplex-metod. *****

4. Приложение

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls, Grids, ExtCtrls, DB, DBTables, acPNG,

sSkinManager;

type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet2: TTabSheet;

TabSheet1: TTabSheet;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Label24: TLabel;

Label25: TLabel;

Label26: TLabel;

Label27: TLabel;

Label28: TLabel;

Image2: TImage;

Image3: TImage;

Image4: TImage;

Label29: TLabel;

Label32: TLabel;

Label31: TLabel;

Label33: TLabel;

Label35: TLabel;

Label36: TLabel;

Label30: TLabel;

Label34: TLabel;

Image5: TImage;

Label37: TLabel;

Label38: TLabel;

Label39: TLabel;

Label41: TLabel;

Label42: TLabel;

Label43: TLabel;

Label40: TLabel;

Label44: TLabel;

Label45: TLabel;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Panel5: TPanel;

Panel6: TPanel;

Panel7: TPanel;

Panel8: TPanel;

Panel9: TPanel;

Panel10: TPanel;

Panel11: TPanel;

Panel12: TPanel;

Panel13: TPanel;

Panel14: TPanel;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11