Подобные работы
Методическая разработка по C++
echo "Использование констант вТурбо Си 6. Управляющие структуры 7. Массивы в ТС++ Задачи Введение Важной вехой в развитии программирования явилось создание и широкое распространение языка С++. Этот яз
Создание экспертных систем в среде EXSYS
echo "Системы-оболочки являются наиболее простым средством формализации (автоформализации) экспертных знаний, практически не требующие участия посредников в лице инженера по знаниям или программиста п
Изучение взаимно влияющих друг на друга математических параметров
echo "Москва 1999 План работы : 1.Постановка задачи-стр. 2.Формализация задачи-стр. 3.Блок-схема программы-стр. 4.Листинг программы-стр. 5.Тестирование программы-стр. 1.Постановка задачи. Очень часто
Информационный критерий оценки фонетической неопределенности
echo "Используя эти мерь, можно оценить лексическую и фразеологическую неопределенности. Слитная речь расчленяется на последовательность сегментов по признакам способа образования звуков. К этим приз
Моделирование структуры книги
echo "Особый компонент книги, облегчающий ее использование, – оглавление, имеющее также древовидную структуру. Недостаток бумажной книги – необходимость часто открывать страницы, содержащие оглавлени
Единицы информации
echo "Компьютер может обрабатывать ся кодировкой символов. только информацию, представленКак правило, все числа в ную в числовой форме. Вся другая компьютере представляются с поинформация (например, з
База данных - Бактериологическая испытательная лаборатория Боханского района
echo "Регистрационный журнал на кишечную группу инфекций ........ PAGEREF _Toc41916159 h 20 Формы. .....................................................................................................
Алгоритм создания базы данных складского учета
echo "Система Access работает под управлением Windows; таким образом, все преимущества Windows доступны в Access. Это означает, что вы можете вырезать копировать и вставлять данные из любого приложени
Изучение взаимно влияющих друг на друга математических параметровМосква 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 , D W и WS соответственно. W меняется при прибавлении D W ежемесячно и при вычитании WS ежегодно , в декабре. D W в свою очередь изменяется ежемесячно , уменьшаясь из-за мышей , а также увеличиваясь каждый год в августе , за счёт урожая. WS заново устанавливается также ежегодно , в декабре , самим пользователем. Исключительным событием , прерывающим программу , для W считается его неположительное значениехозяева хранилища не проживут без запасов зерна. Состояние мышиной популяции определяется более сложно. Начальное количество определяется случайным образом на интервале от 1 до 20 и обозначается символом M . Ежемесячное изменение количества мышей D М , от которого зависит М , в свою очередь определяется естественным приростом. Он описан выше , а математически выглядит следующим образом : если W >= 2M , то D М за данный месяц равно 1,5М. Если же W то D М=0,1М. Кроме того , D М меняется под воздействием естественной смертности , составляющей ежемесячно 1/12 от М. Сильно влияет на популяцию грызунов и количество кошек в зернохранилище. Чем больше мышей приходится на кошку , тем больше их и погибает. В формализованном виде это выглядит так : если М/С ( С-общее количество кошек и котов) больше 60 , то за месяц гибнет 40*С мышей. Если М/С меньше или равно данному соотношению , то ежемесячно уничтожается 15*С грызунов. Общее воздействие прироста , смертности и уничтожения мышей и определяет D М. D М , в свою очередь , корректирует М. Вершиной данной экологической пирамиды является популяция кошек и котов в хранилище. Её состояние прямо зависит от численности мышей. Численность кошек С определяется как внутренними параметрамиестественными смертностью и рождаемостью,- но и внешнимсубъективной оценкой целесообразности содержания данного числа мышеловов в хранилище , приводящей к покупке или продаже некоторого количества животных. И подчас решающим становится именно внешний , корректирующий равновесие между мышами и кошками , субъективный параметр. При формализации характеристик популяции кошек нужно начать с определения минимально допустимого количества живущих в амбаре кошек. Это параметр внешний для этой экогруппы и определяется он пользователем при оценке целесообразного размера кошачьего присутствия в хранилище. Здесь допустим и нулевой уровень , как наименее дешёвый. Но он же и наиболее рискованный , т.к. отсутствие кошек приведёт к всплеску численности мышей в амбаре. В математическом представлении он называется MNC . Далее начинают действовать естественные , внутренние параметры , такие , как рождаемость и смертность кошек. Все эти параметры составляют в суммарном воздействии Рождаемость зависит от количества мышей и в виде формул выглядит так : при M/C >60 D C=3C котят , при 20 D C=3 или 4 котёнка , при ещё меньшем – D С=0. Естественная смертность определяется общим количеством кошек. При С>=120 ежемесячно умирает С/120 кошек , а при меньших значениях С – одна кошка или ни одной.Рассчитать дополнительно необходимое количество мышеловов помогает предельно допустимое количество мышей – MN. Если M > MN , то D С = D С + М/30 , а D S = D S – ( М/30 ) * РС , где D S - ежемесячное приращение годового дохода , а РС – цена одной кошки. Если же М D C = D C + ( М N С – С ) и D S= D S + 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 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 соответственно. Но приблизительно срок должен совпадать.Кроме того , зная данные за какой – либо месяц , можно по формулам подсчитать значения соответствующих параметров в следующем месяце. |