на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Курсовая работа: Анализ на чувствительность двойственных оценок


В данной задаче одновременно изменяется количество ресурсов всех трех типов.

При этом количество ресурса I типа уменьшается -130, II и III ресурсы увеличивается на 120 и 110 денежных единиц.

Следовательно выяснить остается ли  оптимальным планом двойственной задачи при указанном изменении количества ресурсов или нет. Для этого подставим в неравенство вместо

 

Следовательно, несмотря на изменения объем ресурсов в указанных размерах. Оптимальным планом двойственной задачи остается . Данное заключение позволяет воспользоваться равенством

 денежных единиц

Это означает, что уменьшение количества ресурсов I типа на 130 единиц и увеличение ресурсов II и III типов на 120 и 110 единиц к возможности построения такого плана производства продукции, реализация которого обеспечит выпуск изделии на 355 денежных единиц больше, чем при плане производства продукции, обусловленным первоначальным количеством ресурсов. Уменьшение количества ресурсов на 130 не позволяет на изменение max значения функции, в то время как увеличение ресурсов II и III типов на 120и 110 единиц приведёт к увеличению max значения функции соответственно

 .

2.5.3 Экономическая интерпретация двойственных оценок

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

, ; .

Переменные  и  обозначают условные двойственные оценки единицы сырья, соответственно II и III видов. Эти оценки отличны от нуля, а сырье II и III видов полностью используется при оптимальном плане производства продукции. Двойственная оценка единицы сырья I вида равна нулю. Этот вид сырья не полностью используется при оптимальном плане производства продукции.

Таким образом, положительную двойственную оценку имеют лишь те виды сырья, которые полностью используются при оптимальном плане производства изделий. Поэтому двойственные оценки определяют дефицитность используемого предприятием сырья. Более того, величина данной двойственной оценки показывает, на сколько возрастает максимальное значение целевой функции прямой задачи при увеличении количества сырья соответствующего вида на 1 кг. Так, увеличение количества сырья I вида на 1 кг приведет к тому, что появится возможность найти новый оптимальный план производства изделий, при котором общая стоимость изготовляемой продукции возрастет на  руб. и станет равной 1360+2,5=1362,5 руб. При этом числа, стоящие в столбце вектора  таблицы 7 показывают, что указанное увеличение общей стоимости изготовляемой продукции может быть достигнуто за счет уменьшения выпуска изделий В на  ед. и увеличения выпуска изделий А на  ед. Вследствие этого использование сырья I вида увеличится на  кг. Точно так же уменьшения на  1 кг сырья III вида позволит найти новый оптимальный план производства изделий, при котором общая стоимость изготовляемой продукции возрастет на  руб. и составит 1360+0,5=1360,5 руб. Это будет достигнуто в результате увеличения выпуска изделий А на  ед. и уменьшения изготовления изделий B на  ед., причем объем используемого сырья II вида будет использована полностью.

Продолжим рассмотрение оптимальных двойственных оценок. Вычисляя минимальное значение целевой функции двойственной задачи

видим, что оно совпадает с максимальным значением целевой функции исходной задачи

.

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

Первое ограничение двойственной задачи выполняется как строгое неравенство. Это означает, что двойственная оценка сырья, используемого на производство одного изделия вида А, выше цены этого изделия и, следовательно, выпускать изделия вида А невыгодно. Его производство и не предусмотрено оптимальным планом прямой задачи. Второе и третье ограничения двойственной задачи выполняются как строгие равенства. Это означает, что двойственные оценки сырья, используемого для производства единицы соответственно изделий В и С, равны в точности их ценам. Поэтому выпускать эти два вида продукции по двойственным оценкам экономически целесообразно. Их производство и предусмотрено оптимальным планом прямой задачи.

Таким образом, двойственные оценки тесным образом связаны с оптимальным планом прямой задачи.

2.6 Обоснование выбора программного инструментария

На сегодняшний день существует достаточно языков и сред программирования, при помощи которых можно создавать приложения. Наиболее известные: Delphi, Pascal, C++ и т.д.

C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Pascal, один из структурированных языков высокого уровня, который может использоваться для написания программ любого типа и размера.

Delphi, также замечательный инструмент программирования. При помощи Delphi с минимальными затратами времени создаются различные приложения для Windows 95/98. Поскольку в основе лежит концепция быстрого создания приложений.

Основное внимание сосредоточено на следующих ключевых особенностях среды Delphi:

-  интегрированная среда разработки приложений – позволяет создавать, компилировать, тестировать и редактировать проект или группу проектов в единой среде программирования;

-  визуальная технология разработки программ – позволяет быстро создавать приложения путем размещения в форме стандартных компонентов. При этом соответствующий код программы автоматически генерируется Delphi. Такая технология освобождает разработчика от рутинной работы по созданию пользовательского интерфейса и позволяет уделить больше внимания внутренней организации программы и обработке данных;

-  библиотека компонентов содержит множество стандартных компонентов, которые можно использовать при создании приложений. Сюда относятся элементы управления в стиле Windows 95/98, а также шаблоны для форм;

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

-  32-битовый компилятор Delphi генерирует исполняемые exe-файлы. При этом существует возможность генерировать либо простые exe-файлы, либо сложные приложения, требующие подключения dll-библиотек.

На основе анализа рассмотренного программного обеспечения можно сделать вывод, что для реализации поставленной задачи наиболее подходящим программным обеспечением является именно Delphi.

Вывод:

В практической части было рассмотрен анализ двойственных оценок основной задачи линейного программирования. При ручном способе вычислении задачу симплексным методом максимальное значение целевой функции равна X* = (0,230,0,230, 0,105), а оптимальный план равен

,

При ручном способе вычислении задачу двойственным симплекс методом минимальное значение целевой функции равна,а оптимальный план равен

Так же были определены интервалы устойчивости

.,,,

а так же влияние количества ресурса I типа при уменьшении на 130, II и III ресурсы увеличения на 120 и 110 денежных единиц. При этом оптимальным планом двойственной задачи остается  

 денежных единиц

Это означает, что уменьшение количества ресурсов I типа на 130 единиц и увеличение ресурсов II и III типов на 120 и 110 единиц к возможности построения такого плана производства продукции, реализация которого обеспечит выпуск изделии на 355 денежных единиц больше, чем при плане производства продукции, обусловленным первоначальным количеством ресурсов.

Заключение

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

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

В практической части было рассмотрено анализ двойственных оценок основной задачи линейного программирования. При ручном способе вычислении задачу симплексным методом максимальное значение целевой функции равна X* = (0,230,0,230, 0,105), а оптимальный план равен

,

при ручном способе вычислении задачу двойственным симплекс методом минимальное значение целевой функции равна , а оптимальный план равен

.

Так же были определены интервалы устойчивости

., , ,

а так же влияние количества ресурса I типа при уменьшении на 130, II и III ресурсы увеличения на 120 и 110 денежных единиц. При этом оптимальным планом двойственной задачи остается

.

 

денежных единиц

Это означает, что уменьшение количества ресурсов I типа на 130 единиц и увеличение ресурсов II и III типов на 120 и 110 единиц к возможности построения такого плана производства продукции, реализация которого обеспечит выпуск изделии на 355 денежных единиц больше, чем при плане производства продукции, обусловленным первоначальным количеством ресурсов. Так же приведена экономическая интерпретация двойственной оценки.

После выше перечисленного делаю заключение, что цель данной курсовой работы была достигнута.


Список использованной источников

1.  К.В. Балдин, Н.А. Брызгалов, А.В. Рукосуев «Математическое программирование», «Дашков и К» 2009 г.

2.  И.Л. Акулич «Математическое программирование в примерах и задачах», «Высшая школа» 1986 г.

3.  Кузнецов Ю.Н., Кузубов В.И., Волощенко А.Б Математическое программирование – М.: Высшая школа, 1980.


Приложение А

Листинг программы

unit Unit1;

interface

uses

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

Dialogs, Grids, Menus, StdCtrls;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Label1: TLabel;

StringGrid3: TStringGrid;

Label2: TLabel;

N11: TMenuItem;

StringGrid4: TStringGrid;

Label3: TLabel;

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure tab1;

procedure tabrez;

procedure vich;

procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

procedure N4Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure StringGrid4SelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

ns,ms:string;

n,m,mm,nm,b:integer;

mas,mas2:array[1..20,1..20] of currency;

ma:array[1..20,1..2] of currency;

m1:array [1..20,1..2] of currency;

bz:array [1..2,1..20] of currency;

min,min2,razr:currency;

y: array [1..10] of currency;

implementation

{$R *.dfm}

procedure TForm1.vich;

var i,j,l,k,o:integer;

lg:currency;

begin

for i:=1 to nm do m1[i,1]:=0;

for i:=1 to nm do m1[i,2]:=0;

for i:=1 to mm do bz[i,1]:=0;

for i:=1 to mm do bz[i,2]:=0;

for j:=1 to mm-1 do

for i:=2 to nm-1 do

begin

m1[i-1,1]:=m1[i-1,1]+mas[i,j];

if (m1[i-1,1]=1) and (m1[i-1,2]=0) then m1[i-1,2]:=j;

end;

for j:=1 to m do

for i:=1 to n do

if (m1[i,1]=1) and (j=m1[i,2]) then

begin

bz[1,j]:=i;

end;

for j:=1 to m do

bz[2,j]:=ma[trunc(bz[1,j]),1];

for i:=1 to n do ma[i,2]:=0;

for i:=1 to n do

begin

for j:=1 to m do

ma[i,2]:=ma[i,2]+(mas[i+1,j]*bz[2,j]);

ma[i,2]:=ma[i,2]-ma[i,1];

end;

min:=ma[1,2];

l:=0;

o:=0;

for i:=2 to n do

if min>ma[i,2] then begin min:=ma[i,2]; k:=i+1 end;

min2:=0;

for j:=1 to m do

if mas[k,j]>0 then begin l:=1; min2:=mas[1,j]/mas[k,j]; o:=j end;

if min2=0 then begin b:=1;ShowMessage('Решений нет'); Form1.Free end

else begin

for j:=1 to m do

if mas[k,j]>0 then

if min2>(mas[1,j]/mas[k,j]) then

begin

min2:=mas[1,j]/mas[k,j];

o:=j;

end;

end;

if (mas[k,o]<>0) then razr:=mas[k,o];

for j:=1 to m do

for i:=1 to n+1 do

begin

if j>o then mas2[i,j]:=mas[i,j];

if j=o then mas2[i,j]:=mas[i,j]/razr;

if j<o then mas2[i,j]:=((mas[i,j]*mas[k,o])-(mas[i,o]*mas[k,j]))/razr;

end;

for j:=1 to m do

mas2[1,j]:=abs(mas2[1,j]);

// ShowMessage(currtostr(razr)+' '+inttostr(k)+' '+inttostr(o));

end;

procedure TForm1.tabrez;

var i,j:integer;

l1:currency;

begin

Form1.StringGrid4.Visible:=True;

Form1.StringGrid3.Visible:=True;

Form1.Label2.Visible:=True;

for j:=1 to mm-2 do

for i:=3 to nm-1 do

Form1.StringGrid3.Cells[i,j]:=currtostr(mas[i-2,j]);

// for i:=1 to n do

// Form1.StringGrid3.Cells[i+3,m+1]:=inttostr(ma[i]);

for j:=1 to m do

Form1.StringGrid3.Cells[1,j]:='P'+inttostr(trunc(bz[1,j]));

for j:=1 to m do

Form1.StringGrid3.Cells[2,j]:=currtostr(bz[2,j]);

l1:=0;

for j:=1 to m do

l1:=l1+mas[1,j]*bz[2,j];

Form1.StringGrid3.Cells[3,m+1]:=currtostr(l1);

for i:=1 to n do

Form1.StringGrid3.Cells[i+3,m+1]:=currtostr(ma[i,2]);

end;

procedure TForm1.tab1;

var i,j:integer;

begin

Form1.StringGrid1.ColCount:=2*n+2;

Form1.StringGrid1.RowCount:=m;

Form1.StringGrid2.ColCount:=2*n+2;

Form1.StringGrid2.RowCount:=1;

Form1.StringGrid1.Width:=((2*n)+2)*36+5;

Form1.StringGrid1.Height:=(32*m);

Form1.StringGrid2.Width:=((2*n)+2)*36+5;

Form1.StringGrid2.Height:=(32*1);

for i:= 0 to n*2 do

begin

if (i mod 2 =1) then

begin

Form1.StringGrid2.Cells[i,j]:='X'+inttostr((i div 2)+1);

end;

if (i mod 2 =0) then Form1.StringGrid2.Cells[i,j]:='0';

Form1.StringGrid2.DefaultColWidth:=35;

Form1.StringGrid2.DefaultRowHeight:=30;

end;

Form1.StringGrid2.Cells[2*n,j]:='->';

Form1.StringGrid2.Cells[2*n+1,j]:='min';

for j:= 0 to m do

begin

for i:= 0 to n*2 do

begin

if (i mod 2 =1) then Form1.StringGrid1.Cells[i,j]:='X'+inttostr((i div 2)+1);

if (i mod 2 =0) then Form1.StringGrid1.Cells[i,j]:='0';

Form1.StringGrid1.DefaultColWidth:=35;

Form1.StringGrid1.DefaultRowHeight:=30;

end;

Form1.StringGrid1.Cells[2*n,j]:='=';

Form1.StringGrid1.Cells[2*n+1,j]:='0';

end;

Form1.StringGrid2.Top:=(32*m)+15;

Form1.StringGrid3.Top:=(32*m)+65;

Form1.StringGrid3.Width:=((2*n)+2)*36+5;

form1.StringGrid3.Height:=(32*m);

Form1.Label1.Top:=32*m;

Form1.Label2.Top:=32*m+50;

Form1.Label1.Visible:=True;

Form1.StringGrid1.Visible:=True;

Form1.StringGrid2.Visible:=True;

end;

procedure TForm1.FormCreate(Sender: TObject);

var i,j:integer;

begin

end;

procedure TForm1.N2Click(Sender: TObject);

begin

ns:=InputBox('Число переменных','Введите чесло переменных','4');

n:=strtoint(ns);

Form1.tab1;

end;

procedure TForm1.N3Click(Sender: TObject);

begin

ms:=InputBox('Число функций','Введите чесло функций','3');

m:=strtoint(ms);

Form1.tab1;

end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,

ARow: Integer; var CanSelect: Boolean);

begin

if ((ACol mod 2 =0)and(ACol<(2*n))) or (ACol=(2*n+1)) then

begin

Form1.StringGrid1.Cells[ACol,ARow]:=InputBox('Число','Введите чесло

при X'+inttostr((ACol div 2)+1)+' для функции '+inttostr(ARow+1),'0');

if ((ACol mod 2 =0)and(ACol<(2*n)))then mas[(ACol div

2)+2,ARow+1]:=strtoint(Form1.StringGrid1.Cells[ACol,ARow]);

// if (ACol=(2*n+1)) then

mas[1,ARow+1]:=strtoint(Form1.StringGrid1.Cells[ACol,ARow]);

end;

end;

procedure TForm1.StringGrid2SelectCell(Sender: TObject; ACol,

ARow: Integer; var CanSelect: Boolean);

begin

if ((ACol mod 2 =0)and(ACol<(2*n))) {or (ACol=(2*n+1))} then

begin

Form1.StringGrid2.Cells[ACol,ARow]:=InputBox('Число','Введите чесло

при Х'+inttostr((ACol div 2)+1)+' для целевой функции ','0');

// if ((ACol mod 2 =0)and(ACol<(2*n)))then ma[(ACol div

2)+2,1]:=strtoint(Form1.StringGrid2.Cells[ACol,0]);

end;

end;

procedure TForm1.N4Click(Sender: TObject);

var i,j,l:integer;

label 10;

begin

mm:=m+2;

nm:=n+4;

Form1.StringGrid3.RowCount:=mm;

Form1.StringGrid3.ColCount:=nm;

Form1.StringGrid3.FixedCols:=1;

Form1.StringGrid3.FixedRows:=1;

Form1.StringGrid3.DefaultRowHeight:=30;

Form1.StringGrid3.DefaultColWidth:=35;

Form1.StringGrid4.DefaultRowHeight:=30;

Form1.StringGrid4.DefaultColWidth:=35;

Form1.StringGrid4.Width:=m*36+5;

Form1.StringGrid4.Height:=32*2;

Form1.StringGrid4.ColCount:=m;

Form1.StringGrid4.RowCount:=2;

Form1.StringGrid4.FixedRows:=1;

for i:=0 to m-1 do

begin

Form1.StringGrid4.Cells[i,0]:='Y'+inttostr(i+1);

Form1.StringGrid4.Cells[i,1]:='0';

end;

Form1.StringGrid4.Left:=Form1.StringGrid1.Width+10;

Form1.StringGrid3.Width:=nm*36+5;

Form1.StringGrid3.Height:=32*mm;

Form1.StringGrid3.Cells[0,0]:='i';

Form1.StringGrid3.Cells[1,0]:='Бз';

Form1.StringGrid3.Cells[2,0]:='СБз';

Form1.StringGrid3.Cells[0,m+1]:='m+1';

// заполнение таблицы решения

for i:=3 to nm-1 do

Form1.StringGrid3.Cells[i,0]:='P'+inttostr(i-3);

for j:=1 to mm-2 do

Form1.StringGrid3.Cells[0,j]:=inttostr(j)+'.)';

for i:=1 to n do

for j:=0 to m do

mas[i+1,j+1]:=strtoint(Form1.StringGrid1.Cells[(i-1)*2,j]);

for j:=1 to m do

mas[1,j]:=strtoint(Form1.StringGrid1.Cells[2*n+1,j-1]);

for i:=1 to n do

ma[i,1]:=strtoint(Form1.StringGrid2.Cells[(i-1)*2,0]);

b:=0;

l:=0;

while b=0 do

begin

l:=l+1;

if l=100 then begin ShowMessage('Решений нет'); goto 10 end;

Form1.vich;

Form1.tabrez;

for i:=1 to n+1 do

for j:=1 to m do

mas[i,j]:=mas2[i,j];

for i:=1 to n do

if ma[i,2]>0 then b:=1 else b:=0;

end;

l:=1;

for i:=n-m+4 to n+3 do

begin

y[l]:=strtocurr(Form1.StringGrid3.Cells[i,m+1]);

l:=l+1;

end;

Form1.Label2.Caption:='Решение : У=( '+currtostr(y[1]);

for j:=2 to m do

Form1.Label2.Caption:=Form1.Label2.Caption+' ; '+currtostr(y[j]);

Form1.Label2.Caption:=Form1.Label2.Caption+' )';

10:// ShowMessage('Далее');

// Form1.tabrez;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

m:=3;

n:=6;

Form1.tab1;

Form1.StringGrid1.Cells[0,0]:='1';

Form1.StringGrid1.Cells[2,0]:='1';

Form1.StringGrid1.Cells[4,0]:='1';

Form1.StringGrid1.Cells[6,0]:='1';

Form1.StringGrid1.Cells[0,1]:='3';

Form1.StringGrid1.Cells[4,1]:='2';

Form1.StringGrid1.Cells[8,1]:='1';

Form1.StringGrid1.Cells[0,2]:='1';

Form1.StringGrid1.Cells[2,2]:='4';

Form1.StringGrid1.Cells[10,2]:='1';

Form1.StringGrid1.Cells[13,0]:='430';

Form1.StringGrid1.Cells[13,1]:='460';

Form1.StringGrid1.Cells[13,2]:='420';

Form1.StringGrid2.Cells[0,0]:='3';

Form1.StringGrid2.Cells[2,0]:='2';

Form1.StringGrid2.Cells[4,0]:='5';

end;

procedure TForm1.Button1Click(Sender: TObject);

var i:integer;

begin

end;

procedure TForm1.StringGrid4SelectCell(Sender: TObject; ACol,

ARow: Integer; var CanSelect: Boolean);

var i:integer;

begin

Form1.StringGrid4.Cells[ACol,ARow]:=InputBox('Число','Введите чесло

при Y'+inttostr(ACol+1),'0');

Form1.Label3.Visible:=true;

Form1.Label3.Top:=Form1.StringGrid3.Top+Form1.StringGrid3.Height;

Form1.Label3.Caption:='Ответ :

Y='+currtostr(y[1]*strtocurr(Form1.StringGrid4.Cells[0,1]))+'y1';

for i:=1 to m-1 do

Form1.Label3.Caption:=Form1.Label3.Caption+'+'+currtostr(y[i+1]*strtocu

rr(Form1.StringGrid4.Cells[i,1]))+'y'+inttostr(i+1);

end;

end.


Приложение Б (обязательное)

Макеты экранных форм

Рисунок Б.1 – Исходные данные

Рисунок Б.2 – Результаты программы


Страницы: 1, 2, 3, 4


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.