на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Применение симплекс-метода при определении состава смеси при переработке нефти
p align="left">При производстве первого вида бензина, соотношение сырой нефти к одному галлону бензина составит: x1 = 0,382; x2=0,511; x3=x4=0.

Прибыль при производстве первого сорта бензина составит 8,74 цента за галлон.

2. Вычислительный эксперимент для второго сорта бензина

Целевая функция для второго сорта бензина (k=2):

Содержание фракции А, В, С для II-го сорта бензина:

Фракции С: Не более 30% - 0.3

При испарении теряется 1% - 0.01

Формула баланса:

Ограничения с учетом испарения для II-го сорта бензина:

Дальнейшие вычисления приведены в таблице 9, таблице 10 и таблице 11.

Таблица 9. Исходная симплекс-таблица для бензина второго сорта

4

8

3

6

0

0

Ci

B

bi

X1

X2

X3

X4

X5

X6

0

X5

0,297

0,05

0,35

0,2

0,2

1

0

0,142

0

X6

1

1

1

1

1

0

1

1

0

-5

-9

-4

-7

0

0

Таблица 10. Вторая симплекс-таблица для бензина второго сорта

4

0

3

6

0

0

Ci

B

bi

X1

X2

X3

X4

X5

X6

8

X2

0,848

0,142

1

0,571

0,571

1

0

1,485

0

X6

0,151

0,857

0

0,428

0,428

1

1

0,352

7,637

-3,71

0

1,142

-1,85

9

0

Таблица 11. Оптимальная симплекс-таблица для бензина второго сорта

4

0

3

0

0

0

Ci

B

bi

X1

X2

X3

X4

X5

X6

8

X2

0,823

0

1

0,5

0,5

0,83

0,16

6

X4

0,176

1

0

0,49

0,49

1,16

1,16

8,293

0

0

3

-9,93

13,33

4,33

При производстве первого вида бензина, соотношение сырой нефти к одному галлону бензина составит: x1 = 0; x2=0,823; x3=0; x4=0,176.

Прибыль при производстве первого сорта бензина составит 8,29 цента за галлон

Производство первого сорта бензина выгоднее на 0,45 центов.

Для визуализации расчётов будем использовать программу Simplex-Oil. Она реализована в среде разработки Borland C++Builder 2009 на языке программирования c++, и имеет интуитивно понятный интерфейс. Программа не универсальна, и умеет решать только конкретно поставленную задачу. Внешний вид программы можно увидеть на рисунке 1. После нажатия на кнопку «рассчитать» программа производит вычисления, которые можно увидеть на рисунке 2.

Для анализа на чувствительность проведём два эксперимента. Зададим случайным образом значения (см. рисунки 3 и 5) и посмотрим на результаты вычислений (см. рисунки 4 и 6).

Рисунок 1. Внешний вид программы

Рисунок 2. Программа после выполнения расчётов

Рисунок 3. Проведение первого эксперимента

Рисунок 4. Результаты первого эксперимента

Рисунок 5. Проведение второго эксперимента

Рисунок 6. Результаты второго эксперимента

Заключение

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

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

Библиографический список

1. Аттетков А.В. Методы оптимизации: учеб. для вузов / А.В. Аттетков, С.В. Галкин, В.С. Зарубин. М.: Изд-во МГТУ им. Н.Э. Баумана, 2003. 440 с.

2. Пантелеев А.В. Методы оптимизации в примерах и задачах: учеб. пособие/ А.В. Пантелеев, Т.А. Летова. М.: Высш. шк., 2002.

3. Математические методы в исследовании операций: Сб. статей / Под ред. Н.Н. Моисеева. М.: Изд-во MГУ, 1981.

4. Черногородова Г.М. Методы оптимизации: учеб. пособие/ Г.М. Черногородова. Ч.1. Екатеринбург: УГТУ, 2000. 80 с.

5 Черногородова Г.М. Теория принятия решений: учеб. пособие/ Г.М. Черногородова. Екатеринбург: УГТУ-УПИ, 2006. 183 с.

6 Черногородова Г.М. Методы оптимизации. Нелинейное программирование: учеб. пособие /Г.М. Черногородова. Екатеринбург: УГТУ-УПИ, 2007. 113 с.

Приложение

Программа Simlex-Oil

---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "sGroupBox"

#pragma link "sSkinManager"

#pragma link "sSkinProvider"

#pragma link "sStatusBar"

#pragma link "sEdit"

#pragma link "sButton"

#pragma link "sLabel"

#pragma link "sMemo"

#pragma resource "*.dfm"

TForm1 *Form1;

---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

Application->Terminate();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::sButton1Click(TObject *Sender)

{

//Защита от дурака

if (!Edit00->Text.Compare("") || !Edit01->Text.Compare("") || !Edit02->Text.Compare("") || !Edit03->Text.Compare("") || !Edit10->Text.Compare("") || !Edit11->Text.Compare("") || !Edit12->Text.Compare("") || !Edit13->Text.Compare("") || !Edit20->Text.Compare("") || !Edit21->Text.Compare("") || !Edit22->Text.Compare("") || !Edit23->Text.Compare("") || !Edit30->Text.Compare("") || !Edit31->Text.Compare("") || !Edit32->Text.Compare("") || !Edit33->Text.Compare("") || !Edit40->Text.Compare("") || !Edit41->Text.Compare("") || !Edit42->Text.Compare("") || !Edit43->Text.Compare("") || !Edit001->Text.Compare("") || !Edit101->Text.Compare("") || !Edit201->Text.Compare("") || !Edit301->Text.Compare("") || !Edit401->Text.Compare("") || !Edit011->Text.Compare("") || !Edit111->Text.Compare("") || !Edit211->Text.Compare("") || !Edit311->Text.Compare("") || !Edit411->Text.Compare("") || !Edit021->Text.Compare("") || !Edit121->Text.Compare("") || !Edit221->Text.Compare("") || !Edit321->Text.Compare("") || !Edit421->Text.Compare("")) {

ShowMessage("Не все поля заполнены");

}

else {

Edit04->Text=Edit00->Text;

Edit14->Text=Edit10->Text;

Edit24->Text=Edit20->Text;

Edit34->Text=Edit30->Text;

Edit44->Text=Edit40->Text;

//Расчет для первой задачи

int tmpI, tmpJ, tmpX, tmpY, tmpP;

float tmp, Price1;

float Mat[5][5], Mat1[5][5], Mat2[5][5];

// заполнение матрицы для первой задачи

for (tmpX=0; tmpX<=4; tmpX++)

for (tmpY=0; tmpY<=4; tmpY++)

Mat[tmpX][tmpY]=0;

Mat[0][0]=StrToFloat(Edit00->Text);

Mat[0][1]=StrToFloat(Edit01->Text);

Mat[0][2]=StrToFloat(Edit02->Text);

Mat[0][3]=StrToFloat(Edit03->Text);

Mat[0][4]=StrToFloat(Edit04->Text);

Mat[1][0]=StrToFloat(Edit10->Text);

Mat[1][1]=StrToFloat(Edit11->Text);

Mat[1][2]=StrToFloat(Edit12->Text);

Mat[1][3]=StrToFloat(Edit13->Text);

Mat[1][4]=StrToFloat(Edit14->Text);

Mat[2][0]=StrToFloat(Edit20->Text);

Mat[2][1]=StrToFloat(Edit21->Text);

Mat[2][2]=StrToFloat(Edit22->Text);

Mat[2][3]=StrToFloat(Edit23->Text);

Mat[2][4]=StrToFloat(Edit24->Text);

Mat[3][0]=StrToFloat(Edit30->Text);

Mat[3][1]=StrToFloat(Edit31->Text);

Mat[3][2]=StrToFloat(Edit32->Text);

Mat[3][3]=StrToFloat(Edit33->Text);

Mat[3][4]=StrToFloat(Edit34->Text);

Mat[4][0]=StrToFloat(Edit40->Text);

Mat[4][1]=StrToFloat(Edit41->Text);

Mat[4][2]=StrToFloat(Edit42->Text);

Mat[4][3]=StrToFloat(Edit43->Text);

Mat[4][4]=StrToFloat(Edit44->Text);

//Находим среди отрицательных элементов максимальное по модулю

tmp=0;

tmpP=0;

for (tmpX=0; tmpX<=4; tmpX++)

if (Mat[tmpX][4]<0)

if (fabs(tmp)<fabs(Mat[tmpX][4]))

{

tmp=Mat[tmpX][4];

tmpP=tmpX;

}

//В столце находим минимальный элемент

tmp=100;

tmpX=tmpP;

for (tmpY=0; tmpY<=4; tmpY++)

{

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



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.