Смекни!
smekni.com

Проектирование модели для составления оптимального рациона кормления скота (стр. 9 из 11)

Задача 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 – самый первый блок прграммы, в котором описываются константы, переменные, типы переменных, массивы которые в дальнейшем будут использоваться в программе.