ГОСУДАРСТВЕННАЯ АКАДЕМИЯ
СФЕРЫ БЫТА И УСЛУГ.
ИНСТИТУТЭКОНОМИКИ И УПРАВЛЕНИЯ.
КУРСОВАЯ РАБОТА.
Тема:”Изучениевзаимно влияющих друг на
друга математическихпараметров”.
Выполненастудентом
Максименко КонстантиномВикторовичем.
Группа ИД-1-1,
факультет ”Информационныесистемы
в экономике”.
Преподаватель:
Степанов Сергей Петрович.
Москва
1999
Планработы:
1.Постановка задачи-стр.
2.Формализация задачи-стр.
3.Блок-схема программы-стр.
4.Листинг программы-стр.
5.Тестирование программы-стр.1.Постановка задачи.Очень часто при решении каких-либо задач на компьютере необ-
ходимо вычислять значения различных взаимозависимыхпереме-
нных. В частности, подобная задача может возникнутьпри обра-
ботке экономической, производственной информации,вообще
любых данных, определяемых взаимозависимымипроцессами.
Много подобных параметров в экономике.Для примераможно взять три основных рыночных показателя- спрос, предложение и
цену.В науке также немало взаимозависимых процессов.Именно поэтому столь большое значение будет иметь установление подоб-
ных взаимозависимостей. Поняв их, можно будетпрогнозировать и будущее состояние системы этих параметров. А для рынка, дляпроизводства, для науки и многих других отраслей жизнедеятель-
ности человека такой прогноз развития простонеобходим.
Поэтомув своей работе я решил исследовать данную область
компьютерных задач и понять механизм их решения впрограмм-
ном виде.
Дляэтого я взял небольшую задачу по прогнозу состояния
некоторой экосистемы.
Имеется зернохранилище сопределённым изначальным количе-
ством зерна. Туда каждый сентябрь складываетсяурожай пшени-
цы и ежемесячно забирается некоторое количествозерна. Какую-
то массу зерна в конце года необходимо продать.
Ксожалению, в зернохранилище водятся мыши. Если не контролировать их количество, они съедят всю пшеницу. Поэтому
туда пускают кошек, которые и должны уничтожатьмышей. Но
мыши не исчезают полностью, а между количествоммышей и ко-
шек через некоторое время устанавливаетсяравновесие. По задаче
требуется создать компьютерную модель данногоравновесия при
наименьшем количестве мышей и наименьшем количествекошек.
2.Формализациязадачи.
Прежде всего, придётся ввести ряд ограничений- ведьмодель и реальность- разные вещи. Основное ограничение- все процессы
в программе дискретны. Разумеется, в реальной жизниданные со-
бытия непрерывны, но для решения данной задачидопустима их
дискретность.
Будем также считать, что запасы пшеницы пополняютсялишь раз в году, в августе. Уменьшение идёт за счёт съеденного мышами зерна,за счёт зерна, ежемесячно забираемого из хранилища, а часть продаётся вдекабре по усмотрению пользователя. В случае
если пшеница в хранилище кончается, то программаостанавлива-
ется.
Каждаямышь съедает в месяц 2 кг зерна. Прирост их числа зависит от количества пшеницыв хранилище : если на мышь при-
ходитсяне менее двух кг зерна, то их популяция за месяц возрас-
таетв полтора раза. В противном случае прирост составит 10% в месяц. Естественнаясмерность мышей составляет 1/12 общего чи-
сламышей в месяц, т.к. мышь живёт в среднем 1 год. Количество
уничтожаемыхмышей определяется размером их популяции: ког-
дана одну кошку приходится более 60 мышей, то каждая кошка за месяц ловит в среднемпо 40 мышей. При меньшем количестве
мышейодин кот может поймать лишь 15 мышей в месяц. Полнос-
тьюистребить мышей нельзя, т.к. при нулевом уровне мышиной
популяциис окрестных полей в хранилище за месяц приходит до 20 мышей.
Количество кошек также постоянноизменяется. При доста-
точномколичестве мышей, т.е. более 60 мышей на кошку, каж-
даякошка приносит в марте и в сентябре по 3 котёнка. Если мы-
шейменьше, чем по 20 на кошку, то прирост кошек равен нулю.
Еслиже значение мышиной популяции лежит между этими преде-
лами, то появляется всего 3-4 котёнка на всю кошачью популя-
цию.В случае полного отсутствия мышей в хранилище за месяц погибает 80% кошек.Естественная смертность среди кошек равна
1/120части от их общего числа, если их более 120; иначе за ме-
сяцможет умереть одна из кошек, то есть средняя продолжитель-
ностьжизни кошки составляет около 10 лет. В случае гибели всех
кошекхозяева хранилища пускают туда определённое количество
кошек.Особую роль в определении числа кошек в хранилище иг-
раеттак называемый предельно терпимое количество мышей- тот уровень их популяции,когда их количество начинает беспокоить хозяев зерна. В этом случае хозяевапускают внутрь хранилища некоторое дополнительное количество кошек и котов, всреднем по одному коту на 30 замеченных грызунов ежемесячно. Минима-
льнодопустимое количество кошек- ещё один важный параметр. Он определяет сколькокошек нужно помещать в хранилище в случае их полного отсутствия там. Разумеется, чем больше значе-
ниеданного параметра, тем больше затраты на их приобретение.
Правда, избыток кошек можно продать по установленной изнача-
льноцене.
Собственно говоря, всевышеперечисленные действия нуж-
ныдля обеспечения максимальной сохранности урожая, а, следо-
вательнои для получения максимальной прибыли от продажи зер-
на.Цена на пшеницу определяется в начале каждого года. По ней в конце годапродаётся необходимое количество зерна, определяе-
моепользователем программы. Если иссякают общие запасы зерна или денежных средств, выполнение программы прерывается. Программа прогнозирует состояние даннойсистемы, в чём-то корректирует его сама, в чём-то требует корректировки отпользо-
вателя.
Все процессы, описанные ранее,нуждаются в математичес-
койформализации. Для пшеницы значимы 3 параметра :общее ко-
личество пшеницы в хранилище, ежемесячное изменениемассы зерна и количество зерна, ежегодно выставляемое на продажу-
W, DW и WSсоответственно. Wменяется при прибавлении DW ежемесячно и при вычитании WS ежегодно, в декабре. DW в свою очередь изменяется ежемесячно, уменьшаясь из-за мышей, а так-
жеувеличиваясь каждый год в августе, за счёт урожая. WSзаново
устанавливается также ежегодно, в декабре, самимпользовате-
лем. Исключительным событием, прерывающим программу, для
Wсчитается егонеположительное значение- хозяева хранилища не проживут без запасов зерна.
Состояниемышиной популяции определяется более сложно.
Начальное количество определяется случайным образомна интер-
вале от 1 до 20 и обозначается символом M.Ежемесячное измене-
ние количества мышей DМ , откоторого зависит М, в свою оче- редь определяется естественным приростом. Онописан выше, а математически выглядитследующим образом :если W >= 2M, то
DМ за данный месяц равно 1,5М. Если же WDМ=0,1М.
Крометого, DМ меняется под воздействием естественной смерт-
ности, составляющей ежемесячно 1/12 от М. Сильно влияет на по-
пуляциюгрызунов и количество кошек в зернохранилище. Чем больше мышей приходится накошку, тем больше их и погибает.
Вформализованном виде это выглядит так: если М/С ( С-общее количество кошек и котов) больше60, то за месяц гибнет 40*С мышей. Если М/С меньше или равно данномусоотношению, то
ежемесячно уничтожается 15*С грызунов. Общее воздействиеприроста, смертности и уничтожения мышей и определяет DМ.
DМ, в свою очередь, корректирует М.
Вершиной данной экологической пирамидыявляется популя-
циякошек и котов в хранилище. Её состояние прямо зависит от численности мышей.Численность кошек С определяется как внут-
реннимипараметрами- естественными смертностью и рождаемос-
тью,-но и внешним- субъективной оценкой целесообразности со-
держанияданного числа мышеловов в хранилище, приводящей к покупке или продаженекоторого количества животных. И подчас решающим становится именно внешний,корректирующий равно-
весиемежду мышами и кошками, субъективный параметр. При
формализациихарактеристик популяции кошек нужно начать с определения минимально допустимогоколичества живущих в ам-
барекошек. Это параметр внешний для этой экогруппы и опреде-
ляетсяон пользователем при оценке целесообразного размера ко-
шачьегоприсутствия в хранилище. Здесь допустим и нулевой уро-
вень, как наименее дешёвый. Но он же и наиболее рискованный ,
т.к.отсутствие кошек приведёт к всплеску численности мышей в амбаре. Вматематическом представлении он называется MNC.
Далее начинают действовать естественные, внутренниепарамет-
ры, такие, как рождаемость и смертность кошек. Всеэти парамет- ры составляют в суммарном воздействии Рождаемость зависит отколичества мышей и в виде формул выглядит так :при M/C >60 DC=3C котят, при20 DC=3 или 4котёнка, при ещё меньшем – DС=0.Естественная смертность определяется общим количеством кошек. При С>=120 ежемесячно умирает С/120 ко-
шек, а при меньших значениях С – одна кошка или ниодной.Рас-
считать дополнительно необходимое количествомышеловов по-
могает предельно допустимое количество мышей – MN. Если
M> MN, то DС = DС +М/30, а DS= DS – (М/30 ) * РС, где DS-
ежемесячное приращение годового дохода, а РС – ценаодной кошки. Если же МDC= DC + ( МNС – С) и
DS=DS + PS * ( C – MNC ) , т.е. количество кошек выравнивается по MNCс помощью продажи илипокупки необходимого для это-
го числа кошек.
Вконце программы высчитываются результаты взаимодейст-
вия всех экологических групп в кокретном финансовомвыраже-
нии. Каждый декабрь программой выводится годовойбаланс по-
купки и продажи кошек, прибыль от реализации зерна, проводи-
мой в том же месяце, а также общий доход хозяевхранилища. Об-
новляется и сумма общих денежных средств. Такимобразом, сте-
пень оптимизациивзаимовлияния и взаимоопределения парамет-
ровэкологических групп прямо отражается на уровне доходов и расходов зерна и денежныхсредств.
Моя программа имеет, кроме того, обширные возможности дляпоследующей модификации применительно к изменяемым па-
раметрам данной экосистемы. Можно, например, есливозникнет такая необходимость, учесть множество новых характеристик ссохранением старых. Можно и сделать большинство изменяемых пользователемпараметров более гибкими по времени и по состоя-
нию экосистемы. Ну и, разумеется, можно будет брать эту прог-
рамму за основу для составления новых программ,решающих другие задачи с взаимовлияющими математическими параметра-
ми.
Далее я приведу список переменных, использованных впрограмме :
BY –годначала прогнозирования ,
Y– текущий год прогноза ,
F – долгосрочность прогноза,лет,
MT– текущий месяц прогноза
BW– начальный запас зерна ,
W — общее количество зерна в хранилище,
H – ежегодный урожай пшеницы ,
DW –ежемесячное изменение общеймассы зерна ,
J – рекомедуемая массаежемесячно забираемой из хранилища пшеницы ,
DT –определяемоеколичество ежемесячно забираемого зерна в
зависимости от общей массы пшеницы ,
Т – реальное количество ежемесячно забираемойпшеницы ,
WS –масса зерна,продаваемого ежегодно ,
PW –ценапродаваемого килограмма зерна ,
MN– предельно допустимоеколичество мышей в хранилище ,
DM –ежемесячноеизменение популяции мышей ,
М – общая численность популяции мышей ,
MNC– минимально допустимоеколичество кошек ,
С – общее число кошек и котов в хранилище ,
DC– ежемесячное изменениепопуляции кошек и котов
РС – цена одной кошки ,
DS– ежемесячное изменениеденежных запасов ,
S– общий годовой доход ,
ST –общая суммаденежных средств, обновляющаяся ежегодно ,
I –переменная-счётчик,осуществляющая остановку выполнения
программы.
4.Листингпрограммы.
'IMITATION OF ECOSYSTEM
DEFDBL G-H, S
CLS
INPUT «Год начала наблюдений-»; by
INPUT «Количество лет наблюдений-»; f
INPUT «Начальная масса пшеницы в кг-»; bw
INPUT «Урожай пшеницы в кг-»; h
PRINT «Сколько кг зерна в месяц забирать?»
IF bw / 8 ELSE j = h / 12
PRINT "(Желательно не брать больше";INT(j); " кг)"
INPUT t
INPUT «Цена одной кошки в $-»; pc
INPUT «Минимально допустимое количествокошек»; mnc
INPUT «Предельно допустимое количествомышей-»; mn
PRINT
PRINT "(Все данные приводятся на конец текущегомесяца)."
PRINT«YEAR=,MONTH=,WHEAT=,MICE=,CATS=,DWHEAT=,DMICE=,DCATS=»PRINT "********************************************************"
st = 0: w = bw: m = INT(RND(1) * 20 + 1): y = 0: mt= 0: c = mnc
50 RANDOMIZE TIMER
mt = mt + 1
IF mt > 12 THEN s = 0 AND ws = 0
ds = 0
IF mt > 12 THEN y = y + 1
IF y > f THEN END
'ПРЕРЫВАНИЕ ПРОГРАММЫ
IF mt > 12 THEN PRINT"++++++++++++++++++++++++++++++++++++++++++++++++++++++"
IF mt > 12 THEN INPUT «Если введёте 999 топрограмма остановится-»; i
IF i = 999 THEN GOTO 3000
IF mt > 12 THEN mt = 1
IF mt = 1 THEN INPUT «Введите цену килограммапшеницы в $-»; pw
'МЕСЯЦ СБОРА УРОЖАЯ ИЛИ НЕТ
dw = 0
IF mt = 8 THEN dw = dw + h ELSE dw = dw + 0
'ЕСТЕСТВЕННАЯ СМЕРТНОСТЬ МЫШЕЙ
dm = 0
dm = dm — 1 * INT(m / 12)
'ОПРЕДЕЛЕНИЕ КОЛ-ВА ПШЕНИЦЫ ЗА ВЫЧЕТОМ СЪЕД. МЫШАМИ
dw = dw — 2 * INT(m)
IF w
'СКОЛЬКО ПШЕНИЦЫ ЗАБИРАЕТСЯ В МЕСЯЦ
IF w > t THEN dt = t ELSE dt = w
dw = dw — dt
'КОЛИЧЕСТВО МЫШЕЙ, СЪЕДЕННЫХ ЗА МЕСЯЦ
SELECT CASE INT(m)
CASE IS > 60 * c
dm = dm — 40 * c
CASE IS
dm = dm — 15 * c
CASE 0
dm = dm + 0
END SELECT
'ПО КОЛ-ВУ ЗЕРНА ОПРЕДЕЛЯЕТСЯ ПРИРОСТ МЫШЕЙ
IF m
'ОПРЕДЕЛЯЕТСЯ НОВОЕ КОЛ-ВО МЫШЕЙ
m = m + dm
'ЕСТЕСТВЕНАЯ СМЕРТНОСТЬ КОШЕК
dc = 0
IF c > 120 THEN dc = dc — СINT(c / 120) ELSE dc =dc — CINT(RND(1))
IF c
'ПРИРОСТ КОЛИЧЕСТВА КОШЕК
SELECT CASE mt
CASE 3, 9
GOSUB 1000
END SELECT
'ПРОДАЖА КОШЕК ЗА НЕНУЖНОСТЬЮ
IF m > mn THEN GOTO 80
60 dc = dc — c + mnc
70 ds = ds + pc * (c — mnc): GOTO 85
80 dc = dc +INT(m 30)
ds = ds — INT(m 30) * pc
85 s = s + ds
c = c + dc
'В СЛУЧАЕ ГИБЕЛИ ВСЕХ МЫШЕЙ ПРИХОДИТ ГРУППА МЫШЕЙ СПОЛЯ
IF INT(m)
'ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА ПШЕНИЦЫ
w = w + dw
IF INT(w)
IF INT(w)
'ИНФОРМАЦИЯ, ВЫВОДИМАЯ НА ЭКРАН
PRINT «y=»; by + y; " ";
PRINT «mt=»; mt; " ";
PRINT «w=»; INT(w); " ";
PRINT «dw=»; INT(dw); " ";
PRINT «m=»; INT(m); " ";
PRINT «dm=»; INT(dm); " ";
PRINT «c=»; INT(c); " ";
PRINT «dc=»; INT(dc); " ";
PRINT «ds=»; ds
'СОБЫТИЯ ДЕКАБРЯ
IF mt = 12 THEN GOSUB 2500
GOTO 50
'ПРИРОСТ КОШЕК
1000 SELECT CASE INT(m)
CASE IS > 60 * c
dc = dc + 3 * c
CASE IS
dc = dc + 0
CASE 0
dc = dc — .8 * c
CASE ELSE
dc = dc + СINT(RND(1)) + 3
END SELECT
RETURN
'СОБЫТИЯ ДЕКАБРЯ
2500 PRINT"*********************************************************"
'ОПРЕДЕЛЕНИЕ ГОДОВЫХ РАСХОДОВ НА КОШЕК
PRINT «Годовой доход от продажи кошек=»;INT(s); "$ "
'РЕАЛИЗАЦИЯ ЗЕРНА С УЧЁТОМ ГОДОВЫХ РАСХОДОВ
INPUT «Сколько кг пшеницы продать»; ws
'РАСЧЁТ ПРИБЫЛИ ОТ РЕАЛИЗАЦИИ ЗЕРНА И ИЗЛИШКА КОШЕК
dw = dw — ws
w = w + dw
ds = ws * pw
s = s + ds
st = st + s
'ГОДОВОЙ БАЛАНС
PRINT «Годовой доход с продажи зерна=»; pw* ws; "$ "
PRINT «Общий годовой доход=»; INT(s);"$"
PRINT «Общая накопленная сумма=»; INT(st);"$"
IF st
RETURN
3000 END
5.Тестированиепрограммы.
В связи с тем, что программу протестироватьочень сложно из – за большого количества взаимозависмых параметров, при те-
стировании, я использую реакцию программы наисключительные
значения. За год начала прогнозирования я беру 1999г. Длитель-
ность прогнозирования определяю как равную двумгодам. Для того, чтобы прекратить работу программы на прогнозировании второгогода, необходимо соответствующим образом задать зна-
чения переменных BW,H и T. Например, чтобы запасы зерна ис-
сяклина втором году прогноза, необходимо, чтобы W равнялось
16000 кг, Hтакже равнялось 16 тоннам,а ежемесячно забиралось
2 тонны пшеницы ( т.е. Т = 2000 кг ).
И действительно программа нашла что, при “содействии” мышей
примерно в 250 кг съеденной за год пшеницы и призатратах на кошек ещё в 20 кг проданной, запасы зерна закончились в марте
второго года прогнозирования.Разумеется, вред,наносимый мышами не учитывать невозможно, но и учесть трудно, т.к. приопределении изначального и переопределении нулевого уровня численности мышинойэкогруппы используется генератор псевдослучайных чисел и циклическая инициациягенератора – RND и RANDOMIZE соответственно. Ноприблизительно срок должен совпадать.Кроме того, зная данные за какой – либоме- сяц, можно по формулам подсчитать значения соответствующих параметров вследующем месяце. Допустим, что MNC=3, М в первом месяце прогноза = 27, а BW, H иTвзятыиз предыдущего примера. Предельно терпимое количество мышей я взял равным 5.
За месяц меняется только DM, а М остаётсяпостоянным.Поэтому
в началемесяца DM = 0, M = 27. Далее рассчитывается естест- веннаяубыль мышей DM = DM – INT ( M/12 ), т.е. DM = = 0 – INT ( 27/12 ) = 0 – 2= -2. Потом считается естественный прирост DM = DM + INT ( 1.5*M ) = -2 + INT ( 40.5 ) = -2 + 40 =
= 38. В последнюю очередь считается количествоуничтоженных
за месяц мышей : DM= DM – 15*C = 38 – 45 = — 7.
Именно эти данные при тестовом запуске выдалапрограмма.
Таким образом, программа действительно годится дляпрогнози-
рования и изучения состояниясистемы взаимовлияющих матема-
тическихпараметров.