Курсовая работа: Проектирование модели для составления оптимального рациона кормления скота
Увеличение ресурсов привели к рациону, состоящему из следующих продуктов: сено – 11, силос – 11.19, концентраты – 6.81 с недоиспользованным остатком в размере силоса – 4.81 и концентратов – 16.19. Стоимость рациона составила 89.44 копеек.
В ходе решения задачи было выявлено, что при проведенной замене оптимальная стоимость уменьшается от 90.62 до 89.44 копеек и при этом более целесообразно анализ проводить по выходу продукции (мясо, молоко, яйца и др.), так как с точки зрения экономики это выгоднее увеличение ресурсов питания с наименьшими материальными затратами.
Задача 5
Решая задачу 5 не будем применять каких-либо алгоритмов, а решим ее аналитическим путем.
Для начала исключим из задачи сено, то есть исходная задача принимает вид:
Задача 5.1
Заменим сено на силос (концентраты оставим постоянной величиной). Из задачи 2 норма выдачи концентратов =6,75 из этого следует,
Решение: ; при этом . Следовательно, если мы заменим сено силосом, то рацион будет состоять из силоса- 39,25 и концентратов – 6,75. Оптимальная стоимость рациона составит 112,25 копеек.
Задача 5.2
Заменим сено на концентраты (силос оставим постоянной величиной).Из задачи 2 норма выдачи силоса =9,25 из этого следует,
Решение: ; при этом . Следовательно, если мы заменим сено концентраты, то рацион будет состоять из силоса- 9,25 и концентратов – 40. Оптимальная стоимость рациона составит 218,5 копеек.
Так как , то замена сена на силос более выгодно, чем замена на концентраты.
ВЫВОДЫ
В результате выполненной работы было выявлено, что основой повышения продуктивности животных является полноценное кормление. Недостаток какого- либо вида питательных веществ в рационе отрицательно сказывается на развитии животных и ведет к снижению их продуктивности. Кроме этого, неполноценное кормление вызывает перерасход кормов. Поэтому кормовой рацион должен быть полностью сбалансирован по всем питательным веществам, необходимым для каждого вида.
Для составления экономико-математической модели по выбору оптимальных кормовых рационов необходимы данные:
наличие кормов по видам;
содержание питательных веществ в единице корма;
требуемое количество питательных веществ в рационе;
максимально и минимально возможные нормы скармливание отдельных видов кормов;
себестоимость кормов и цены добавок, которые могут быть приобретены на стороне.
Вся эта информация готовится на основе фактических данных, получаемых в хозяйстве и справочной литературе. Используются также данные лабораторных анализов.
Данная курсовая работа содержит ознакомительный теоретический материал и подробно расписанную задачу по составления оптимального рациона кормления скота. Задача содержит в себе пять подзадач для того, чтобы можно было проследить, как меняется рацион и оптимальная стоимость с теми или иными изменениями (ограниченность ресурсов продуктов на один рацион, замена одного продукта на другой, увеличение ресурсов питания и другое).
К курсовой работе прилагается программа, поставленная на решении данной задачи.
ЛИТЕРАТУРА:
1 Ананенков В.П. Математические методы планирования сельского хозяйства – Киев: Вища школа,1980.-430с
2 Деордица Ю.С., Нефедов Ю.М. Исследование операций в планировании и управлении: Учебное пособие.- Киев: Вища школа,1991-270с
3 Крушевский А.В., Швецов К.И. Математическое программирование и моделирование в экономике – Киев: Вища школа,1979.-456с
4 Крушевский А.В. Справочник по экономико-математическим моделям и методам. - Киев: Техника,1982.-208с
5 Терехов Л.Л., Шарапов А.Д. и др. Математические методы и модели в планировании: учебное пособие для студентов вузов.- Киев: Вища школа. Головное изд-во, 1981.- 272с
ПРИЛОЖЕНИЕ А
обязательное
(текст программы, схема программы, описание программы, инструкция пользователю)
ТЕКСТ ПРОГРАММЫ
Блок1 ------------------------------------------------------
program simpl;
uses crt;
const m1=30;
n1=40;
m2=30;
type arm2m2=array[1..m2,1..m2] of real;
arm2n1=array[1..m2,1..n1] of real;
arm2=array[1..m2] of real;
arn1=array[1..n1] of real;
arm1=array[1..m1] of integer;
var a:arm2n1;
b,x:arm2;
c:arn1;
w:arm1;
m,n:integer;
t:text;
l,k,p,q,ll:integer;
f:real;
u:arm2m2;
Блок1 -------------------------------------------------------
Блок2 -------------------------------------------------------
procedure vvod(var c:arn1; var b:arm2; var a:arm2n1; var m,n:integer);
var i,j:integer;
s:string;
Блок2 -------------------------------------------------------
Блок3 -------------------------------------------------------
begin
write('Введите имя файла с исходными данными '); readln(s);
assign(t,s); reset(t);
readln(t,m,n);
for i:=1 to m do
for j:=1 to n do a[i,j]:=0;
for j:=1 to n do read(t,c[j]); readln(t);
for i:=1 to m do
begin
for j:=1 to n do read(t,a[i,j]); readln(t);
end;
for i:=1 to m do read(t,b[i]); readln(t);
close(t);
end;
Блок3 -------------------------------------------------------
Блок4 -------------------------------------------------------
procedure wp(var w:arm1; var x:arm2; var u:arm2m2);
var i,j:integer;
r,s:real;
Блок4 -------------------------------------------------------
Блок5 -------------------------------------------------------
begin
p:=m+2; q:=m+2; k:=m+1;
for j:=1 to n do
begin a[k,j]:=-c[j]; s:=0;
for i:=1 to m do s:=s-a[i,j];
a[p,j]:=s; w[j]:=0;
end;
s:=0;
for i:=1 to m do
begin
w[i]:=n+i; r:=b[i]; x[i]:=r; s:=s-r;
end;
x[k]:=0; x[p]:=s;
for i:=1 to p do
begin
for j:=1 to p do u[i,j]:=0; u[i,i]:=1;
end;
end;
Блок5 -------------------------------------------------------
Блок6 -------------------------------------------------------
procedure ms(var k,l:integer; var x:arm2);
var j,i:integer;
ex,stop:boolean;
s,d:real;
y:arm2;
Блок6 -------------------------------------------------------
Блок7 -------------------------------------------------------
begin
stop:=false;
repeat
if (x[p] >= 0) then q:=m+1;
d:=0;
for j:=1 to n do
begin
s:=0;
for i:=1 to p do s:=s+u[q,i]*a[i,j];
if d > s then begin d:=s; k:=j end;
end;
if d >= 0 then
begin
stop:=true; f:=x[q];
end
else
begin
for i:=1 to q do
begin
s:=0; for j:=1 to p do s:=s+u[i,j]*a[j,k]; y[i]:=s;
end;
ex:=true; d:=1e30;
for i:=1 to m do
if y[i] > 0.000001 then
begin
s:=x[i]/y[i]; if ex or (s < d) then
begin
d:=s; l:=i; end;
ex:=false;
end;
if ex then stop:=true
else
begin
w[l]:=k; s:=1/y[l];
for i:=1 to q do
for j:=1 to q do
if i <> l then u[i,j]:=u[i,j]-u[l,j]*y[i]*s;
for j:=1 to q do u[l,j]:=u[l,j]*s;
for i:=1 to q do
if i <> l then x[i]:=x[i]-d*y[i];
x[l]:=d;
for i:=1 to q do
begin
write(t,x[i]:7:2,y[i]:7:2,w[i]:2);
for j:=1 to q do write(t,u[i,j]:7:2);
writeln(t);
end;
writeln(t,'---------------------------------------------');
end;
end
until stop;
end;
Блок7 -------------------------------------------------------
Блок8 -------------------------------------------------------
procedure vivod;
var i:integer;
f:real;
Блок8 -------------------------------------------------------
Блок9 -------------------------------------------------------
begin
writeln(t,Количество продуктов:');
f:=0;
for i:=1 to m do
if c[w[i]] <> 0 then
begin
writeln(t,w[i]:2,x[i]:10:2);
f:=f+c[w[i]]*x[i];
end;
writeln(t,'Значение стоимости',f:16:2);
end;
Блок9 -------------------------------------------------------
Блок10 -------------------------------------------------------
begin
vvod(c,b,a,m,n);
assign(t,'w_'); rewrite(t);
wp(w,x,u); ms(k,l,x);
vivod;
close(t);
end.
Блок10 ---------------------------------------------------------
ОПИСАНИЕ ПРОГРАММЫ
Блок1 – самый первый блок прграммы, в котором описываются константы, переменные, типы переменных, массивы которые в дальнейшем будут использоваться в программе.
Блок2 - описание переменных процедуры «Ввод»
Блок3 – текст процедуры «Ввод». В данном фрагменте программы происходит обращение к файлу и считывание с него исходных данных.
Блок4 - описание переменных процедуры «Вспомогательные построения - wp».
Блок5 - текст процедуры «wp», происходит построение вспомогательной модели для получения опорного плана исходной задачи.
Блок6 - описание переменных процедуры «Модифицированный симплекс – метод -ms».
Блок7 – текст процедуры «ms», выполняются основные шаги алгоритма модифицированного симплекс метода : выбор разрешающего элемента, построение обратной матрицы, пересчет опорного плана и оценочной строки. Данный фрагмент можно разбить на 2 этапа:
1 этап заключается в проверки плана на оптимальность
2 этап – выбор разрешающего столбца, разрешающей строки, вычисление значения целевой функции.
Блок8 - описание переменных процедуры «Вывод- vivod».
Блок9 – блок вывода результата
Блок10 основной блок данной программы, происходит ввод всех процедур.
РАСШИФРОВКА ПЕРЕМЕННЫХ ПРОГРАММЫ
- константы, определяют максимальную размерность основного массива
- матрицы коэффициентов небазисных переменных размерности .
- вспомогательные массивы
- значение целевой функции
- параметры целевой функции
- свободные части системы ограничений
-переменные системы ограничений
- файл с исходными данными
- текст
- строки матрицы
- столбцы матрицы
- счетчики
ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЮ
К курсовой работе прилагается дискета с программой на задачу приведенную выше в разделе 4.2. Даннная программа написана на языке Turbo Pascal 7.0 в среде операционной сиситемы Windows 98 на диске находится файл с расширением simplех.exe, 4 файла с исходными данными (w1,w2,w3,w4) и 4 файла с конечным результатом вычислений (w1_,w2_,w3_w4).
Для начала включите компьютер, вставте дискету в дисковод, откройте ее, перед вами появятся выше перечисленные файлы. Выберете файл simplех.exe и перед вами появится окно с изображением
После чего введите имя файла : w1 или w2 или w3 или w4 и нажмите Enter. Можете закрывать окно с программой, так как результат автоматически отправляется в файл: w1_ или w2_ или w3_ или w4_.
Елси пользователь решит внести изменения в текст программы, то ему необходимо выбрать D:\Pascal\Bp\Bin\Turbo после чего зайти в File\Open\Simplех, вам откроется текст программы в среде Turbo Pascal. После работы с программой вам необходимо ее сохранить и закрыть, но не всега легко удается закрыть программу, так как Turbo Pascal – язык программирования, который используестя средой MSDos и иногда после закрытия программы компьютер самостоятельно перезагружается.
ПРИЛОЖЕНИЕ Б
(входная информация)
Файл c исходными данными W1
3 6
-3 -2 -5 0 0 0
50 20 180 -1 0 0
6 4 3 0 -1 0
2 1 1 0 0 -1
2000 120 40
Файл c исходными данными W2
6 9
-3 -2 -5 0 0 0 0 0 0
50 20 180 -1 0 0 0 0 0
6 4 3 0 -1 0 0 0 0
2 1 1 0 0 -1 0 0 0
1 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 1
2000 120 40 12 20 16
Файл c исходными данными W3
9 12
-3 -2 -5 0 0 0 0 0 0 0 0 0
50 20 180 -1 0 0 0 0 0 0 0 0
6 4 3 0 -1 0 0 0 0 0 0 0
2 1 1 0 0 -1 0 0 0 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1
2000 120 40 12 20 16 10 15 20
Файл c исходными данными W4
9 12
-3 -2 -5 0 0 0 0 0 0 0 0 0
50 20 180 -1 0 0 0 0 0 0 0 0
6 4 3 0 -1 0 0 0 0 0 0 0
2 1 1 0 0 -1 0 0 0 0 0 0
1 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1
2000 120 40 12 20 16 11 16 23
ПРИЛОЖЕНИЕ В
(выходная информация)
Файл с результатом решения W1_
11.11 180.00 0.01 0.00 0.00 0.00 0.00
86.67 3.00 8 -0.02 1.00 0.00 0.00 0.00
28.89 1.00 9 -0.01 0.00 1.00 0.00 0.00
-55.56 5.00 0 -0.03 0.00 0.00 1.00 0.00
-115.56-184.00 0 1.02 0.00 0.00 0.00 1.00
---------------------------------------------
6.45 0.28 3 0.01 0.00 -0.16 0.00 0.00
0.00 5.17 8 0.00 1.00 -3.00 0.00 0.00
16.77 1.72 1 -0.00 0.00 0.58 0.00 0.00
-82.58 1.61 0 -0.02 0.00 -0.94 1.00 0.00
-0.00 -6.89 0 1.00 0.00 4.00 0.00 1.00
---------------------------------------------
6.45 0.16 3 0.01 -0.05 0.00 0.00 0.00
0.00 3.00 6 0.00 0.33 -1.00 0.00 0.00
16.77 -0.58 1 -0.00 0.19 0.00 0.00 0.00
-82.58 0.94 0 -0.02 -0.31 0.00 1.00 0.00
-0.00 -3.00 0 1.00 1.00 1.00 0.00 1.00
Страницы: 1, 2, 3, 4, 5, 6, 7, 8