Разработка программного продукта "Inventory Management"

 

Введение


Научно-технический прогресс создает предпосылки для повышения качества управления за счет использования вычислительной техники, математических методов, теории управления, автоматизации управления. Все это нашло конкретную реализацию в автоматизированных системах управления.

Управление заключается в сборе информации, ее переработке и выводе управляющей информации для изменения хода процесса.

Основным путем повышения качества управления является автоматизация управления производством, при которой данные задачи решаются средствами вычислительной техники.

Одной из задач управления предприятием является задача определения оптимального плана производства изделий, обеспечивающего заданный спрос продукции при минимизации затрат на производство и хранение продукции. Это задача оптимального управления запасами. Теория управления запасами позволяет определять уровни запасов материалов, полуфабрикатов, производственных мощностей и других ресурсов в зависимости от спроса на них.

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

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



1. Проблематика управления запасами в Украине


1.1 Анализ проблемы управления запасами


Товарно-материальный запас - это запас какого-либо ресурса или предметов, используемых в организации.

С точки зрения практики проблема управления запасами является чрезвычайно серьезной. Потери, которые несут предприятия (особенно промышленные) вследствие нерационального управления запасами, очень велики. Плохо, когда запас мал, недостаточен. Это может привести к нарушению ритмичности производства, росту себестоимости продукции, срыву сроков выполнения работ по договорам, потере прибыли. Однако же, крайне нежелательной является и ситуация, когда запас чрезмерно велик. В этом случае происходит "замораживание" оборотных средств организации. В результате те деньги, которые могли бы "работать", приносить доход покоятся на складах в виде запасов сырья, материалов, комплектующих.

Для эффективного решения проблем, связанных с управлением товарно-материальными запасами требуется применение соответствующих методов. Такие методы существуют, однако, к сожалению, на практике (особенно в России) они пока не находят должного распространения.

Очень показательным является высказывание одного из зарубежных исследователей: "...Слишком многие предприятия, к сожалению, управляют запасами совершенно неудовлетворительно; это говорит о том, что руководство не осознает всей важности материально-технических запасов производства. Но еще чаще бывает, что осознание проблемы существует. Не хватает понимания того, что надо делать и как это делать".

Итак, управление запасами на рациональной основе - весьма актуальная задача. Определяющее значение при построении системы управления запасами имеет характер потребности в хранимом продукте.


1.2 Зависимый и независимый спрос. Предмет теории управления запасами


Основная особенность, определяющая используемые методы планирования и контроля запасов, - характер спроса на эти запасы. Различают зависимый и независимый спрос. Предметы, использующиеся зависимым спросом, как правило, представляют собой подузлы и комплектующие, использующиеся в производстве конечного продукта.

Спрос (т.е. использование) на подузлы и комплектующие определяется объемом производства готовых изделий. Классическим примером здесь является потребность в колесах для выпускаемых автомобилей. Если для каждой машины требуется пять колес, то количество колес, требующихся для производства партии автомобилей, является простой функцией от объема этой партии. Например, для 200 машин требуется 1000 (200?5) колес.

Предметы с независимым спросом - это, чаще всего, готовые изделия, конечная продукция. Обычно готовый продукт продают (или отгружают) заказчику - в производстве какого-либо другого изделия она не участвует. В этом случае, как правило, невозможно точно определить потребность в товаре на какой-либо период времени, так как в спросе обычно присутствует элемент случайности. Таким образом, при независимом спросе большую роль в управлении запасами играет прогнозирование, в то время как для зависимого спроса потребность в запасах определяется, исходя из производственного плана. Теория управления запасами объединяет в себе методы анализа задач регулирования запасов некоторого продукта при независимом спросе на этот продукт. В задачах такого рода необходимо найти рациональное количество запаса, учитывая, что потери возникают как из-за неудовлетворенного спроса, так и из-за того, что продукт хранится на складе. Проблема управления запасами возникает при рассмотрении разнообразных экономических объектов. Широко распространены задачи управления запасами при анализе розничной торговли. В этом случае рассматриваются запасы некоторого продукта в магазине. Обычно спрос считается случайной величиной с заданным распределением. Запас пополняется за счет доставки товара с оптовой базы по заявке магазина, причем время доставки может быть фиксированным или же является случайной величиной. Перед управляющим встает вопрос: когда подавать заявку на пополнение запаса, и какое количество товара требовать в заявке? На подобные вопросы отвечает теория управления запасами.

Управлять запасами, как уже говорилось, необходимо и на производственных объектах, где нужно определять рациональный уровень запасов сырья, инструментов и т.п. Чрезмерный запас в этом случае приводит к нерациональному использованию оборотных средств, требует значительных затрат на хранение и уход за ним. С другой стороны, нехватка сырья, материалов или инструментов вызывает перебои в производстве. Поэтому установление рационального количества запаса является средством, позволяющим, с одной стороны, ликвидировать ненужные запасы, а с другой стороны - обеспечить ритмичность производства. Управление запасами заключается в установлении моментов и объемов заказов на их восполнение.

Совокупность правил, по которым принимаются такие решения, называется стратегией (системой) управления запасами.

Оптимальной стратегией считается та, которая обеспечивает минимум затрат по доведению продукции до потребителей.

Нахождение оптимальных стратегий составляет предмет теории оптимального управления запасами.


1.3 Основные стратегии управления запасами


Любая стратегия регулирования запасов призвана отвечать на два основных вопроса: когда заказывать очередную партию продукции, и сколько товара заказать?

Выделяют две основные стратегии регулирования запасов:

·система с фиксированным размером заказа;

·система с фиксированной периодичностью заказа.


1.3.1 Система с фиксированным размером заказа

Предполагает, что размер поступающих партий - величина постоянная, а очередные поставки осуществляются через разные интервалы времени. Заказ на поставку партии делается при уменьшении размера запаса до заранее установленного критического уровня, называемого "точкой заказа" (в зарубежной литературе используется аббревиатура ROP - Reorder Point). Таким образом, интервалы между поставками зависят от интенсивности потребления продукта.

- величина запаса продукции на складе;

- "точка заказа", ROP (Reorder Point);

= const - объем доставляемой партии;

,продолжительность заготовительного периода.


Рисунок 1.1 - Движение запаса продукции при использовании стратегии с фиксированным размером заказа


Регулируемыми параметрами в такой системе являются: "точка заказа" (S, ROP) и объем заказа (, ROQ - Reorder Quantity).

Интервал времени между подачей заявки и поступлением партии на склад называется заготовительным периодом. В модели продолжительность заготовительного периода может считаться постоянной, либо быть случайной величиной с заданным распределением. В качестве недостатка первой стратегии обычно называется необходимость регулярного учета материальных ценностей на складе, с тем, чтобы не упустить момент наступления "точки заказа". Стратегия с фиксированным размером более подходит для ответственных, важных материалов, поскольку предусматривает более жесткий контроль за состоянием запасов, следовательно, может быть обеспечена более быстрая реакция на угрозу исчерпания запаса.


1.3.2 Система с фиксированной периодичностью заказа

В данном случае продукция заказывается через равные промежутки времени, а размер запаса регулируется за счет изменения объема партии. Объем партии принимается равным разности между фиксированным максимальным уровнем, до которого производится пополнение запаса, и фактическим его размером в момент заказа.

Ситуацию иллюстрирует рисунок 4.2. На рисунке обозначены:

-максимальный (плановый) уровень;

- интервал между заказами (планируемый период).


Рисунок 1.2 - Движение запаса продукции при использовании стратегии с фиксированной периодичностью заказа


Регулируемыми параметрами в такой системе являются: максимальный (плановый) уровень () и интервал времени между двумя заказами ( называемый также планируемым периодом). Достоинство такой системы - отсутствие необходимости регулярного учета материалов. Недостатки: иногда приходится делать заказ на незначительное количество продукции, а при непредвиденно интенсивном потреблении возможно исчерпание запаса до наступления очередного момента заказа.


Рисунок 1.3 - Порядок функционирования основных стратегий управления запасами


1.4 Анализ предметной области


Предметной областью в задании является разработка программного продукта управления запасами. Пользователю этого ПП может понадобиться информация о затратах размещения заказов в месяц, затраты на хранение единицы запаса в месяц, потери при отсутствии материала на складе, количество материалов.

При выводе информации можно узнать следующие сведения:

Затраты на всех и каждого материала при определенном спросе.

Распределение вероятностей спроса на следующий месяц.

Оптимальная стратегия, которая показывает, сколько нужно единиц запаса заказать при данном спросе на этот материал.

Такое представление повышает удобство в распределении запасов, в данном случае автоматизированный процесс, повысит скорость определения результатов и поможет избежать больших затрат при распределении запасов.


1.5 Постановка задачи


Целью данной работы является разработка автоматизированного рабочего места управления запасами на предприятии.

Для достижения поставленной цели необходимо решить следующие пользовательные задачи:

)определить месячные затраты на размещение заказа и хранение запасов на предприятии

)определить вероятность спроса на следующий месяц.

)Определить оптимальную стратегию управления запасами на предприятии в условиях стохастического спроса.

)Разработать UML диаграммы

)Осуществить программную реализацию



2. Математическая модель динамического программирования для задачи управления запасами


Математической моделью называется совокупность математических соотношений, уравнений, неравенств и т.п., описывающих основные закономерности, присущие изучаемому процессу, объекту или системе. Из всех существующих моделей баз данных наиболее под описание математической модели подходит реляционная модель базы данных.

Мы используем простой пример, который будет служить нам на протяжении всей главы. Несмотря на простоту, пара фраз этого примера находит применение во многих приложениях в области управления запасами, замены оборудования, контроля и регулирования денежных потоков и др.

Каждый год сельгосп предприятие "Корюковка-Агро" проводит химический анализ, почвы. В зависимости от результатов анализа оптимальная стратегия оценивается как 1) не удобрять 2) удобрять.

Пусть или 2 обозначает две возможные (альтернативные) стратегии. Матрицы и , представляющие переходные вероятности и функцию расхода для альтернативы .


,

,


Задачу сельско-господарского предприятия можно представить как задачу динамического программирования (ДП) с конечным числом этапов следующим образом. Пусть число состояний для каждого этапа (месяца) равно m(3 в примере с магазином электротоваров). Обозначим через оптимальный ожидаемый доход, полученный на этапах от до включительно при условии, что система находится в начале этапа и состоянии .

Обратное рекуррентное уравнение, связывающее и , можно записать в виде



где для всех .

Приведенное уравнение основано на том, что накапливающийся доход получается в результате перехода из состояния на этапе в состояние на этапе с вероятностью . Введя обозначение



рекуррентное уравнение ДП можно записать следующим образом:



Проиллюстрируем использование рекуррентного уравнения для вычисления величин в задаче для ситуации, когда удобрения не применяются



Эти значения показывают, что если состояние почвы в начале года оказывается хорошим (состояние 1), то при одном переходе ожидаемый годовой доход составляет 5,3. Аналогично, если состояние почвы удовлетворительное, ожидаемый годовой доход составит 3, а в случае плохого будет равен -1.

В этом примере задача решается при данных, заданных матрицами , , , и , Предполагается, что горизонт планирования включает 3 года

Так как значения многократно используются в вычислениях, для удобства они сведены в таблицу. Напомним, что значение соответствует решению "не удобрять", - "удобрять".


15.34.7233.13-10.4

Этап 3

Оптимальное решение, k=1k=215.35.35.31233.13.123-10.40.42

Этап 2

j Оптимальное решение, k=1k=21 8.1922 5.6123 2.132


Этап 1

j Оптимальное решение, k=1k=21 10.7422 7.9223 4.232

Оптимальное решение показывает, что в 1-й и 2-й годы предприятие должно применять удобрения независимо от состояния системы (состояния почвы по данным химического анализа). На 3-й год предприятию следует применять удобрения только тогда, когда система находится в состояниях 2 или 3 (т.е. при удовлетворительном или плохом состоянии почвы). Суммарный ожидаемый доход за три года составит = 10,74 при хорошем состоянии системы в 1-й год = 7,92 - при удовлетворительном состоянии системы в 1-й год и = 4,23 - при плохом состоянии.

Задача при конечном горизонте планирования может быть обобщена в двух направлениях. Во-первых, переходные вероятности и функции дохода не обязательно должны быть одинаковы для каждого года. Во-вторых, можно использовать коэффициент переоценки (дисконтирования) ожидаемых доходов для последовательных этапов, вследствие чего значения будут представлять собой приведенные величины ожидаемых доходов по всем этапам.

В первом случае значения доходов и переходные вероятности должны быть функциями этапа . Здесь рекуррентное уравнение динамического программирования принимает вид:



Второе обобщение заключается в следующем. Пусть (< 1) - годовой коэффициент переоценки (дисконтирования), тогда долларов будущего года равны долларам настоящего года. При введении коэффициента переоценки исходное рекуррентное уравнение преобразуется в следующее:



Выводы к разделу 2:

В разделе 2 представлена модель динамического программирования с конечным числом этапов. Проведен анализ модели, а также приведен пример задачи по применению модели ДП с конечным числом этапов.



3. Алгоритмическая модель системы минимизации затрат на управление запасов


3.1 Метод прогонки


Этот метод является модификацией метода Гаусса для частного случая разреженных систем - системы уравнений с трехдиагональной матрицей. Такие системы получаются при моделировании некоторых пользовательских задач, а также при численном решении краевых задач для дифференциальных уравнений.

Запишем систему в виде



На главной диагонали матрицы этой системы стоят элементы, над ней - элементы , под ней - элементы При этом обычно все коэффициенты не равны нулю.

Метод прогонки состоит из двух этапов - прямой прогонки (аналога прямого хода метода Гаусса) и обратной прогонки (аналога обратного хода метода Гаусса).


3.1.1 Прямая прогонка

Прямая прогонка состоит в том, что каждое неизвестное выражается с помощью прогоночных коэффициентов




Из первого уравнения системы найдем:



С другой стороны, по формуле (2) Приравнивая коэффициенты в обоих выражениях



Из второго уравнения системы (1) выразим через , заменяя по формуле(2):



Отсюда найдем



Или


,


Аналогично можно вычислить прогоночные коэффициенты для любого номера


, . (4)


3.1.2 Обратная прогонка

Обратная прогонка состоит в последовательном вычислении неизвестных . Сначала нужно найти . Для этого воспользуемся выражением (2) при и последним уравнением системы (1). Запишем их:



Отсюда исключаем находим



далее используя формулы (2) и выражения для прогоночных коэффициентов (3), (4), последовательно вычисляем все неизвестные ,.

При анализе алгоритма метода прогонки надо учитывать возможность деления на нуль в формулах (3). Можно показать, что при выполнении условия преобладания диагональных элементов, т. е. если , причем хотя бы для одного значения имеет место строгое неравенство, деления на нуль не возникает, и система (1) имеет единственное решение.



4. Разработка программного продукта "Inventory Management"


.1 Теоретические сведения о языке UML


Часто при создании проекта трудно предусмотреть все аспекты его деятельности и его использования. Поэтому для создания объемных проектов используют моделирование. Моделирование - это устоявшаяся и повсеместно принятая пользовательная методика, а модель - схема системы или чертеж.

Моделирование позволяет решить четыре различных задачи [8]:

визуализировать систему в ее текущем или желательном для пользователя состоянии;

определить структуру или поведение системы;

получить шаблон, позволяющий затем сконструировать систему;

документировать принимаемые решения, используя полученные модели.

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

Алгоритмический метод представляет традиционный подход к созданию программного обеспечения. Основными строительным блокам является процедура или функция, внимание уделяется большего всего вопросам передачи управления и декомпозиции больших алгоритмов на меньшие.

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

Первичные цели при создании UML (Unified Modelling Language) были следующими:

предоставить пользователям готовый к использованию язык визуального моделирования, так чтобы они могли разрабатывать и обмениваться выразительными моделями;

предоставить механизмы расширения и специализации, для расширения заложенных концепций;

быть независимым от определенного языка программирования и процесса разработки;

предоставить формальную базу для понимания языка моделирования;

интегрировать лучший практический опыт разработок.должен и может поддерживать все приемлемые языки программирования. Он также должен и может поддерживать различные методы и процессы построения моделей.

Система обозначений UML или нотация - это средство для того, чтобы выразить и зафиксировать идеи, размышления над архитектурой и поведением системы, возникшие в результате анализа.Rose, в отличие от подобных средств проектирования, способна проектировать системы любой сложности. CASE Rational Rose являясь объектно-ориентированным инструментом моделирования. Rose базируется на UML, который был разработан компанией Rational именно с целью создания наиболее оптимального и универсального языка для описания как предметной области, так и конкретной задачи в программировании. Любая задача программируется при помощи определенных диаграмм. В терминах представления модели UML определяет следующие графические диаграммы [9]:

-диаграммы вариантов использования (use case diagram) ,

-диаграммы классов (class diagram) ;

-диаграммы описания поведения включают:

§диаграммы состояния (statechart diagram) ,

§диаграммы активности (activity diagram) ;

-диаграммы взаимодействия включают:

§диаграммы последовательности (sequence diagram),

§диаграммы кооперации (collaboration diagram);

-диаграммы реализации включают:

§диаграммы компонентов (component diagram),

§диаграммы топологии, развертывания (deployment diagram).

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


.2 Концептуальное проектирование математических моделей с использованием языка UML


Цель концептуального проектирования математической модели состоит в определении принципиальных решений по созданию построению и использованию будущей модели в процессе решения проблемы, стоящей перед исследователем. Математическая модель в подавляющем большинстве случаев вполне достаточна для моделирования любых стратегий. Для достижения этой цели должны быть решены следующие задачи:

.определение сути исследуемой системы, которую составляют наименование, состав, структура и целевая функция системы;

.определение сути каждого элемента системы или ее подсистем;

.выяснение и описание процесса функционирования системы, как последовательности состояний из множества Q (t), возникающих под воздействием внешних и внутренних факторов из множества X(t);

.определение показателя эффективности функционирования системы, как функции выхода системы Y(t);

.отбор подмножества наиболее существенных факторов и показателей, характеризующих процесс функционирования системы;

.определение характера взаимосвязей между входом, состоянием и выходом системы, формализация математической модели процесса в общем виде;

.постановка задачи на разработку технического, программного и информационного обеспечения моделирования данного процесса на ЭВМ.


4.3Варианты использования


Диаграммы вариантов использования представляет собой последовательность действий, выполняемых системой в ответ на событие, инициируемое некоторым внешним объектом (действующим лицом). Вариант использования описывает типичное взаимодействие между пользователем и системой.

Действующее лицо (actor) - это роль, которую пользователь играет по отношению к системе. Действующее лицо - это физические личность, или пользователь системы. Оно наиболее типично и имеются практически в каждой системе.

Варианты использования - это то, что пользователь ожидает от системы. Рассмотрим каждый фрагмент этого определения по отдельности.

На рисунке 4.1 в качестве актера выступает пользователь. Овалами представлены варианты использования. Во-первых пользователь должен ввести данные о затратах на размещение заказа, хранение запаса на складе и потери при отсутствии материала. Данные вводятся вручную посредством использования графического интерфейса. Вручную пользователь может добавлять новые данные, удалять их и редактировать.

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


Рисунок 4.1 Диаграмма прецедентов


Диаграммы взаимодействия

Диаграммы взаимодействия (interaction diagrams) являются моделями, описывающими поведение взаимодействующих групп объектов. Как правило, диаграмма взаимодействия охватывает поведение объектов в рамках только одного варианта использования. На такой диаграмме отображается ряд объектов и те сообщения, которыми они обмениваются между собой. Сообщение (message) - средство, с помощью которого объект-отправитель запрашивает у объекта получателя выполнение одной из его операций. Одной из разновидностью диаграммы взаимодействия является диаграмма последовательности. Диаграммы последовательности отражают поток событий, происходящих в рамках варианта использования.

Диаграмма последовательности соответствующая варианту использования "Ввод данных о геометрических объектах" представлена на рисунке 4.2:



Рисунок 4.2 Диаграмма взаимодействия


Диаграмма классов

Диаграммы классов являются центральным звеном объектно-ориентированных методов. Диаграмма классов определяет типы классов системы и различного рода статические связи, которые существуют между ними. На диаграммах классов изображаются также атрибуты классов, операции классов и ограничения, которые накладываются на связи между классами.

Диаграммы классов отражают взаимодействие между классами системы. Классы можно рассматривать как типы объектов. Классы содержат данные и поведение (действия), влияющее на эти данные.

Разработчики используют диаграммы классов для реального создания классов. Такие CASE-средства, как Rational Rose, могут генерировать основу кода классов, которую затем программисты заполняют деталями на выбранном ими языке. С помощью этих диаграмм аналитики могут показать детали системы, а архитекторы системы - понять ее проект. Если, например, какой-либо класс несет слишком большую функциональную нагрузку, это будет видно на диаграмме классов, и архитектор сможет перераспределить ее между другими классами. Если между сообщающимися классами не определено никаких связей, это также будет видно на диаграмме. Диаграммы классов следует создавать, чтобы показать взаимодействующие классы в каждом варианте использования, можно создавать также более общие диаграммы, охватывающие все системы или подсистемы целиком.

Перед тем, как приступить к описанию диаграмм классов, следует обратить внимание на один важный момент, связанный с характером использования этих диаграмм разработчиками. Этот момент обычно никак не документируется, однако оказывает существенное воздействие на способ интерпретации диаграмм и поэтому имеет серьезное отношению к тому, что описывается с помощью модели.

Существуют три различных точки зрения на построение диаграмм классов:

концептуальная точка зрения. Если диаграммы классов рассматриваются с концептуальной точки зрения, то они будут отображать понятия изучаемой предметной области (моделируемой организации). Эти понятия, естественно, будут соответствовать реализующим их классам, однако такое прямое соответствие зачастую отсутствует. На самом деле, концептуальная модель может иметь весьма слабое отношение или вообще не иметь никакого отношения к реализующему ее программному обеспечению, поэтому ее можно рассматривать как независимую от средств реализации (языка программирования);

точка зрения спецификации. В этом случае модель спускается на уровень ПО, но рассматриваются только интерфейсы, а не программная реализация классов (под интерфейсом здесь понимается набор операций класса, видимых извне);

точка зрения реализации. В этом случае модель действительно определяет реализацию классов ПО. Эта точка зрения является наиболее распространенной среди программистов.

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

При построении диаграммы точка зрения должна быть ясной и единственной. При чтении диаграммы следует выяснить, с какой точки зрения она строилась. Если нужно интерпретировать эту диаграмму правильным образом, то без такого знания не обойтись.

Точка зрения на диаграммы классов не является собственно формальной частью UML, однако при построении и анализе моделей она является крайне важной. Конструкции UML можно использовать с любой из трех точек зрения. Большинство опытных разработчиков-программистов предпочитают точку зрения реализации. С другой стороны, очевидно, что построение диаграмм классов на стадии формирования требований к ПО должно выполняться с концептуальной точки зрения.

Для решения поставленной задачи была разработана диаграмма классов, представленная на рисунке 4.6:


Рисунок 4.4 Диаграмма классов


functionFirstEtap() - функция генерирования первого этапа() - функция нахождения минимума(значение целевой функции)() - вспомогательная функция которая понадобится для генерирования следующих этапов.() - функция генерирования следующего этапа.() - функция генерирования последующих этапов() - функция определения оптимальной стратегии() - распределение вероятностей() - распределение вероятностей на следующий временной этап.

Диаграмма состояния

Диаграммы состояний являются хорошо известным средством описания поведения систем. Они определяют все возможные состояния, в которых может находиться конкретный объект, а также процесс смены состояний объекта в результате наступления некоторых событий. В большинстве объектно-ориентированных методов диаграммы состояний строятся для единственного класса и отражают динамику поведения единственного объекта.

На диаграмме имеются два специальных состояния - начальное (start) и конечное (stop). Начальное состояние выделено черной точкой, оно соответствует состоянию объекта, когда он только что был создан. Конечное состояние обозначается черной точкой в белом кружке, оно соответствует состоянию объекта непосредственно перед его уничтожением. На диаграмме состояний может быть одно и только одно начальное состояние. В то же время, может быть столько конечных состояний, сколько вам нужно, или их может не быть вообще.



Рисунок 4.5 Формирование дерева решения


Конечной целью данной работы было создание программного продукта, который бы решал поставленную задачу. В результате была спроектирована и реализована в среде программирования Visual Studio 2010 на языке C#.


4.4Системные требования


Требования к ЭВМ приведены в таблице 4.1.


Таблица 4.1 - Требования к ЭВМ

Тип ЭВМIBM PC /совместимыйОперационная система ОС Windows XP SP3, 7Платформа .Net Framework4.0Процессор1ГГц и вышеОЗУ64 МбМесто на HDD3 Мб

4.5Руководство пользователя


Рисунок 4.6 - Главное окно программного продукта



Сверху видим меню, состоящее из трех пунктов:

·Проект;

Подготовится к расчету

Провести расчет

Выход

·Справка

Подменю "Проект" предназначено для подготовки вычислению, определению оптимальной стратегии.

При нажатии кнопки "Подготовится к расчету" открывается форма для ввода данных



.6 Форма для ввода данных


Рисунок 4.7 - Результат на Этапе N



Рисунок 4.8 - Результат на Этапе 1


Рисунок 4.9 - Вывод результата оптимальной стратегии



5. Экономическая часть


5.1 Описание разработки


Разработанный программный продукт (ПП) InventoryManagment позволяет определять оптимальную стратегию распределения запасов на предприятии. Комплексный показатель, рассчитываемый программой, учитывает ряд разнородных наукометрических показателей и позволяет определить оптимальную стратегию распределения запасов на предприятии. Разработанный ПП позволяет также проводить анализ полученных результатов. управление запас программный managment

Продукт разработан в среде Visual Studio 2010, на языке C#.

Для функционирования системы необходима ПЭВМ, удовлетворяющая следующим условиям:

1)процессор с частотой 1,1 ГГц или выше;

2)не менее 128 Мбайт оперативной памяти;

)размер свободного места на жёстком диске 50 Мбайт;

)наличие устройств мышь и клавиатура;

)операционная система Windows XP, Windows 7 или Windows Vista;

)наличие дисковода.

Интерфейс программы прост и удобен в использовании, InventoryManagment - многооконное приложение, выполненное в стиле операционной системы Windows 7. ПП передаётся в эксплуатацию пользователю в виде *.exe - файла.

Преимуществами данной программы является разнообразие показателей, используемых для составления комплексной оценки научной деятельности, наглядность результатов, реализованная с помощью графиков и таблиц.


5.2 Состав исполнителей и продолжительность работ


Для руководства ходом работ и ведения всего проекта в целом необходима должность руководителя темы. Для работы с базой данных необходим программист баз данных. Для разработки математической модели системы необходим математик. Для разработки всей системы и ее последующей наладки и введения в эксплуатацию необходимо участие программиста. Продолжительность рабочего месяца в среднем примем равной 22 дням. Состав исполнителей приведен в таблице 6.2.


Таблица 5.2 - Состав исполнителей работы

ДолжностиДолжностные оклады, грн.МесячныеДневныеРуководитель2500113,63Старший программист200090,91Математик150068,18

Приведем перечни работ для разработчиков программного продукта (таблица 5.3) [19].


Таблица 5.3 - Перечень работ

Номер стадииНаименование стадий и этаповПродолжительность, дниИсполнители, кол-воТрудоемкость, чел/дниРуководительПрограммистМатематикРазработка технического задания1.1Подготовка к созданию ПП11111.2Разработка ТЗ на постановку задачи515Итого66Постановка задачи2.1Разработка мат. модели и алгоритмов8182.3Техническое обеспечение3132.4Разработка тестового примера31162.5Разработка описания задачи и ТЗ313Итого2020Разработка ПП3.1Разработка алгоритмов611123.2Разработка интерфейса8183.3Разработка программы1011203.4Разработка документации3133.5Разработка технологической документации3133.6Выпуск комплект. раб. документ.313Итого3349Внедрение4.1Подготовка и внедрение ПП1011204.2Наладка и предварительное испытание51110

5.3 Расчет себестоимости программного продукта


Для расчета затрат на разработку программного продукта, для того, чтобы определить цену на товар, необходимо:

. Составить перечень работ, которые следует выполнить, затем рассчитать трудозатраты на их выполнение.

. Рассчитать заработную плату разработчиков.

В затраты на разработку программного продукта также входят: стоимость малоценных и быстроизнашивающихся предметов, стоимость аренды ЭВМ, отчисления с заработной платы и т.д.

В перечень работ, которые необходимо выполнить входит:

1)формулировка постановки задачи;

2)проектирование программного продукта;

)разработка программного продукта;

)внедрение продукта.

Расчет себестоимости работ начинается с расчета основной заработной платы разработчиков, с учетом трудозатрат, количества исполнителей и среднедневной заработной платы.



(6.1)


Рассчитаем расходы на материалы и комплектующие, необходимые для написания программы. Данные расходы представлены в таблице 6.4.


Таблица 5.4 - Расходы на материалы

МатериалКоличество, шт.Цена за единицу, грнСумма, грнНазначениеБумага формата А4, пачка (500 л.)145,5045,50ДокументацияПечать документации5000,35175,00Печать документацииДиск CD-R34,2012, 60Запись готового ППUSB накопитель285,00170,00Хранение резервных копийИтого403,10

Эксплуатационные расходы рассчитаем по формуле:


(6.2)


где Тмв - время кодирования и отладки программного продукта на ЭВМ.


(6.3)


где Смв - стоимость машинного времени (5 грн/час);- общее число команд;



, (6.4)


где q - предполагаемое число команд программы (q = 2305);= 1,3 - коэффициент сложности программы;= 4 с коррекцией 0,05;i - коэффициент коррекции программы;


Q = 2305 х 1,3 х (1 + (0,05 + 0,05 + 0,05 + 0,05)) = 3595;


Ккв = 1,2 - коэффициент квалификации исполнителя (т. к. стаж исполнителя меньше 5 лет);- средние затраты машинного времени на кодирование и отладку одной условной команды, 5 мин.


часов.


Эксплуатационные расходы ПО составляют


Зэр = 359,5*5=1797,5 грн.


Смета затрат на создание и внедрение системы с группировкой затрат по статьям калькуляции приведена в таблице 6.5.


Таблица 5.5 - Затраты на разработку ПП

Виды затратФормулаРасчет (грн.)1. Основная заработная плата2. Дополнительная заработная плата1493,153. Отчисления в социальные фонды:1) пенсионный фонд3800,402) безработица148,813) социальное страхование171,704) страхование от несчастных случаев98,444. Материалы и покупные изделия403,105. Накладные расходы2986,26. Оплата услуг ЭВМ781,257. Амортизация оборудования1493,1ИТОГО (себестоимость)21330,52Плановая прибыль(25% от себестоимости)5332,63Цена разработки (без НДС)26663,15НДС (20%)5332,63Цена разработки с НДС31996,26

В данном разделе была проанализирована конкурентоспособность разработанной программы, оценена себестоимость. Расчет произведен с учетом всех необходимых трудозатрат, НДС, отчислений в пенсионный фонд, фонд занятости и отчислений на социальное страхование, накладных расходов. В итоге себестоимость ПП составляет 21330,52 грн., стоимость с НДС - 31996,26 грн., при этом прибыль составляет 5332,63 грн. Разработанный ПП имеет хорошие показатели качества, является конкурентоспособным на рынке сбыта.



6. Охрана труда


6.1 Выявление и анализ опасных и вредных производственных факторов, действующих в рабочей зоне проектируемого объекта


6.1.1 Краткое описание прототипа объекта проектирования и его упрощенная функциональная схема

Цель разрабатываемого программного обеспечения (ПО) - разработка модели управления запасами на предприятии в условиях стохастического спроса. Данная программа предназначена для операторов персонального компьютера (ПК). Применение программы будет осуществлено в оборудованной компьютера комнате.

Так как в процессе работы с данным ПО пользователь всё время проводит за ПК, то безопасность жизнедеятельности пользователя должна обеспечиваться мерами для обычного оператора ПО.

Рассмотрим помещение, в котором может быть использован данный программный продукт (рис. 6.1.).


Рис. 6.1 - План офисного помещения: 1 - окно; 2 - урна для мусора; 3 - рабочий стол с компьютером, лампой и телефоном; 4 - диван; 5 -дверь; 6 - стена; 7 - кресло; 8 - картотека.


Параметры помещения:

площадь офиса S = 24 м2, длина А = 6м, ширина В = 4м; высота помещения H = 3м; количество работающих - 5.


6.1.2 Выявление опасных и вредных факторов, действующих в рабочей зоне проектируемого объекта

Опасные и вредные производственные факторы подразделяются на следующие группы:

физические; химические; биологические; психофизиологические.

Первые три группы включают воздействия, оказываемые производственной техникой и рабочей средой. Психофизиологические факторы характеризуют изменения состояния человека под влиянием тяжести и напряженности труда. Включение их в систему факторов производственной опасности обусловлено тем, что чрезмерные трудовые нагрузки в итоге могут также привести к заболеваниям.

Физические опасные и вредные производственные факторы на рабочем месте с компьютером:

метеоусловия на рабочих местах; недостаточная освещенность рабочей зоны; повышенный уровень шума на рабочем месте; повышенное значение напряжения в электрической цепи; пониженная контрастность; повышенный уровень электромагнитных излучений; повышенный уровень статического электричества и т.д.

Психофизиологические опасные и вредные факторы на рабочем месте с ПЭВМ: статические физические перегрузки; нервно-психические перегрузки (умственное напряжение и перенапряжение, эмоциональные перегрузки, утомление).



6.1.3 Характеристика источников опасных и вредных производственных факторов

В рассматриваемом помещении, в качестве источника питания, используется сеть электроснабжения напряжением 220В. Проводка выполнена скрытым способом, выключатели и розетки защищены пластмассовыми корпусами, светильники расположены на высоте 3 м, и не являются потенциальными источниками опасности поражения электрическим током. Источником поражения электрического тока в рабочей зоне может быть только электрооборудование, подключённое к сети и используемое пользователем: компьютер, лампа, кондиционеры, вентиляторы и др.

В помещениях при работе на компьютере источниками шума повышенного уровня, могут быть принтер, системный блок, устройства кондиционирования и вентиляции.


6.2 Анализ возможных последствий воздействия негативных факторов на работающих


Анализ микроклимата.

Под микроклиматическими условиями производственного помещения понимают состояния температуры, относительной влажности, скорости движения воздуха. Перечисленные параметры оказывают огромное влияние на функциональную деятельность человека, его самочувствие и здоровье и на надежность работы средств вычислительной техники. Эти микроклиматические параметры влияют как каждый в отдельности, так и в различных сочетаниях.

Анализ освещения.

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

Анализ уровня шума на рабочем месте.

Шум ухудшает условия труда, оказывая вредное воздействие на организм человека. При длительном воздействии шума на организм человека происходят нежелательные явления: снижается острота зрения, слуха; повышается кровяное давление; понижается внимание.

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

Повышенный уровень электромагнитных излучений

Электромагнитным излучением называется излучение, прямо или косвенно вызывающее ионизацию среды.

Длительное воздействие электромагнитного поля на организм может вызвать нарушение функционального состояния нервной и сердечно-сосудистой систем. Это выражается в повышенной утомляемости, снижении качества выполнения рабочих операций, сильных болях в области сердца, изменении кровяного давления и пульса. В настоящее время ученых многих стран привлекают биологические эффекты низкочастотным электромагнитных полей, излучаемых дисплеями, которые до недавнего времени считались абсолютно безвредными. Низкочастотные электромагнитные поля, интенсивность которых слишком мала, чтобы вызвать в живых организмах тепловые эффекты, могут все-таки оказывать на них определенное воздействие. Результаты лабораторных исследований показали, что электромагнитные поля низкой частоты могут инициировать биологические сдвиги в живых клетках вплоть до нарушения синтеза ДНК.

Работающие компьютеры существенно снижают концентрацию отрицательных аэроионов. Это приводит к ухудшению состава крови, быстрому утомлению, головной боли, неврозам, поражению иммунной системы, способствует возникновению и развитию различных хронических заболеваний, в том числе синдрома хронической усталости.

Напряжение в электрической цепи.

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

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


.3 Разработка мероприятий по предотвращению или ослабления возможного воздействия опасных и вредных производственных факторов на работающих


.3.1 Анализ возможных методов и устройств ослабления воздействия на работающих опасных и вредных производственных факторов

Мероприятия по улучшению состояния воздушной среды в помещениях, эксплуатирующих ПК:

применение вентиляции и кондиционирования воздуха;

применение ионизаторов;

использование специальных увлажнителей;

влажная ежедневная уборка помещений.

Кондиционирование воздуха следует принимать:

для обеспечения параметров микроклимата и чистоты воздуха в соответствии с требованиями нормативных документов;

для обеспечения параметров микроклимата в пределах оптимальных норм (всех или отдельных параметров);

для обеспечения необходимых параметров микроклимата в пределах допустимых норм, когда они не могут быть обеспечены вентиляцией в теплый период года без применения искусственного охлаждения воздуха.

Вентиляцию с механическим побуждением следует предусматривать:

если метеорологические условия и чистота воздуха не могут быть обеспечены вентиляцией с естественным побуждением;

для помещений и зон без естественного проветривания.

Допускается проектировать смешанную вентиляцию с частичным использованием систем естественной вентиляции для притока или удаления воздуха. В помещениях с естественным освещением их световыми проемами в наружных ограждениях с объемом на каждого работающего 20 м3 и 40 м3 (для общественных и производственных помещений соответственно) допускается использовать периодически действующую естественную вентиляцию через фрамуги, форточки.

Меры по улучшению условий освещения и зрительной работоспособности пользователей ПК включают:

улучшение световой обстановки путем обеспечения помещений естественным и достаточным искусственным освещением, рациональным расположением рабочих мест по отношению к оконным проемам и светильникам искусственного освещения;

снижение зрительного утомления путем снижения пульсации светового потока, исключения бликов отражения на экранах мониторов, рационального использования режимов труда и отдыха.

светильники общего освещения должны быть расположены над рабочими поверхностями в равномерно-прямоугольном порядке.

Мероприятия по снижению шума.

В помещениях с ПК, где уровень шума превышает допустимые значения, для его устранения должны проводиться организационные, строительно-акустические и другие мероприятия (рациональная планировка помещений с ПК, на предприятиях должен быть обеспечен контроль уровней шума на рабочих местах (аттестация рабочих мест по условиям труда - 1 раз в 5 лет)).

Для снижения воздействия электромагнитных импульсов рекомендуется применять мониторы, соответствующие по эмиссионным параметрам, требованиям, соблюдать регламентированные режимы труда и отдыха и т.д. Основным способом защиты от статического электричества является заземление периферийного оборудования, а также увлажнение окружающего воздуха.

В процессе работы с компьютером необходимо соблюдать правильный режим труда и отдыха. В противном случае может возникнуть значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головных болей, раздражительности, нарушений сна, усталости и болезненных ощущений в глазах, пояснице, в области шеи и в руках.

Мероприятия по защите от удара электрическим током.

Металлические корпуса электропотребляющих установок должны быть заземлены (занулены). Категорически запрещается использовать в качестве контура заземления паропроводные, водопроводные, газовые, отопительные и другие трубы, радиаторы и т.п.

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

К организационным мероприятиям по обеспечению защиты от негативных факторов в помещениях эксплуатирующих ПК относятся инструктаж, который рекомендуется проводить с лицами, работающими на компьютере.


.3.2 Расчет искусственного освещения для рабочего помещения

Имеется помещение размером: длина 6 м; ширина 4 м; высота 3 м.

Потолок, пол и стены окрашены краской. Метод светового потока сводится к определению количества светильников по следующей формуле:



где - минимальная нормированная освещенность, лк ;

- коэффициент запаса

- освещаемая площадь,

- коэффициент минимальной освещенности (коэффициент неравномерности освещения) ;

- число светильников;

- число ламп в светильнике ;

- коэффициент использования светового потока в долях единицы.

- световой поток лампы, лм;

Коэффициент затенения

Индекс помещения определяется по формуле:



где А и В - длина и ширина помещения, м;п - высота подвеса светильника над рабочей поверхностью, м.

После подстановки данных, находим индекс помещения:



Коэффициенты отражения потолка и пола принимаем 0.75 и 0.50 соответственно. В зависимости от индекса помещения и коэффициентов отражения потолка и пола находим коэффициент использования светового потока по таблице.

Выбираем тип люминесцентных ламп низкого давления: Лампа ЛТБ-20, световой поток 975 лм; Лампа ЛТБ-30, световой поток 1720 лм; Лампа ЛТБ-40, световой поток 3000 лм.

Подставив все значения, найдем количество светильников:



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


1.

2.

3.


Следовательно, наиболее экономичным будет вариант 2: ЛТБ-30, и поэтому конструктивно выбираем его.


.4 Обеспечение экологической безопасности функционирования проектируемого объекта при воздействии опасных и вредных производственных факторов


Разработка данного дипломного проекта и дальнейшее использование программы не вносит никаких изменений в экологию окружающей среды.

В этом разделе были рассмотрены требования к рабочему месту пользователя данным программным продуктом. Был проведен анализ вредных и опасных производственные факторов, а также было выяснено их влияние на организм человека.

Сформированы общие требования к помещению и произведен расчет искусственного освещения.



Вывод


using System;System.Collections.Generic;System.Linq;System.Text;System.Windows.Forms;Diplom

{ConechEtap

{

//InventoryManagment

//public double[] proba;double[,] mass;double[] f_res;double fres = 0;int[] version;int[] k;rnd;progress;ConechEtap()

{

// proba = new double[3]{0.2, 0.5, 0.3};= new Random();= new ProgressBar();

}

/// <summary>

/// Генерирование начального этапа

/// </summary>

/// <param name="naSklade">кол-во запаса</param>

/// <param name="c_z">стоимость размещения</param>

/// <param name="h">затраты на хранение</param>

/// <param name="loss">потери при отсутствии запаса</param>

/// <param name="proba">вероятность спроса</param>void functionFirstEtap(int naSklade, double c_z, double h, double loss, double[] proba)

{= new int[naSklade + 1];= new double[naSklade + 1, proba.Length];(int i = 0; i < version.Length; i++)[i] = i;e = naSklade;

// int k = 0;

//while (naSklade >= 0)

//{

// // Заказать н зовасов

// for (int j = 0; j < version.Length; j++)

// {

// if (version[j] <= naSklade)

// {

// mass[k, j] = proba[j] * (c_z + h * e);

// e--;

// }

// else

// {

// mass[k, j] = proba[j] * (c_z + h * e + loss);

// e--;

// }

// }

// if (e < 0)

// e = 0;

// naSklade--;

//}(naSklade >= 0)

{(int i = 0; i < version.Length; i++)

{(version[i] > naSklade)

{[naSklade, i] = proba[i] * (c_z + h * e);

}

{[naSklade, i] = proba[i] * (c_z + h * e + loss);

}-;

} -;

}(int i = 0; i < mass.GetLength(0); i++)

{(int j = 0; j < mass.GetLength(1); j++)

{(mass[i, j] < 0)

{[i, j] = mass[i, j] * -1;

}

}

}

}

/// <summary>

/// Метод нахождения минимальных расходов при каждом спросе

/// </summary>

/// <param name="massiw"></param>

/// <returns></returns>double[] Min(double[,] massiw)

{_res = new double[massiw.GetLength(1)];= new int[massiw.GetLength(0)];[] min = new double[massiw.GetLength(1)];j = 0;(j != massiw.GetLength(1))

{(int i = 0; i < massiw.GetLength(0); i++)

{[i] = massiw[j, i];

}_res[j] = min.Min();++;

}(int i = 0; i < massiw.GetLength(0); i++)

{(int c = 0; c < massiw.GetLength(1); c++)

{(f_res[i] == massiw[i, c])

{[i] = c;

}

}

}f_res;

}

/// <summary>

/// Метод возвращающий сумму минимальных расходов умноженых на вероятность

/// </summary>

/// <param name="proba"></param>

/// <param name="arr"></param>

/// <returns></returns>double SumMin(double[] proba, double[,] arr)

{[] ff_res = new double[f_res.Length];(int i = 0; i < Min(arr).Length; i++)

{_res[i] = Min(arr)[i] * proba[i];

} ff_res.Sum();

}

/// <summary>

/// Метод который генерирует следующий этап

/// </summary>

/// <param name="value"></param>

/// <param name="mass"></param>

/// <returns></returns>double[,] NextEtap(double value, double[,] mass)

{[,] arr = new double[mass.GetLength(0), mass.GetLength(1)];(int i = 0; i < arr.GetLength(0); i++)

{(int j = 0; j < arr.GetLength(1); j++)

{[i, j] = mass[i, j] + value;

}

}arr;

}

/// <summary>

/// Метод возвращающий окончательный результат (матрицу расходов)

/// </summary>

/// <param name="n"></param>

/// <returns></returns>double[,] GenerationNextEtap(int n, double c_z, double h, double loss)

{[,] a_res = NextEtap(SumMin(Probability(n, c_z, h, loss), mass), mass);i = 0;

{_res = NextEtap(SumMin(Probability(n, c_z, h, loss), a_res), a_res);++;

}(i == n);a_res;

}

/// <summary>

/// Метод определяющий оптимальную стратегию

/// </summary>

/// <param name="n"></param>

/// <returns></returns>string[] Strategy(int n, double c_z, double h, double loss)

{(GenerationNextEtap(n, c_z, h, loss));[] str = new string[mass.GetLength(0)];(int j = 0; j < k.Length; j++)

{[j] = "Заказать " + k[j] + " продукции";

}str;

}

/// <summary>

/// Это метод который генерирует распределение вероятностей относительно спроса

/// </summary>

/// <param name="n"></param>

/// <returns></returns>double[] Probability(int n, double c_z, double h, double loss)

{[] proba = new double[n + 1];[] condition = new double[n + 1];mul = 1;lambda = rnd.Next(1,10);

//double res;a = n;(int j = 0; j < condition.Length; j++)

{[j] = c_z * + h * a;= a - 1 / 2;

}

//for (int i = 0; i < n + 1; i++)

//{

// if (i == 0)

// {

// mul = 1;

// }

// else

// {

// mul *= i;

// }

// proba[i] = Math.Pow(lambda, i) * Math.Pow(Math.E, -lambda) / mul;

// //a--;

// //rnd = new Random();

//}(int i = 0; i < condition.Length; i++)

{[i] = condition[i] / condition.Sum();

}

//do

//{

// for (int i = 0; i < proba.Length; i++)

// {

// // res = proba.Length;

// res = rnd.Next(1, proba.Length);

// //double r = rnd.Next(0, 1);

// //res = proba.Length;

// proba[i] = 1 / res;

// if (proba[i] == 1)

// {

// res = rnd.Next(1, proba.Length);

// proba[i] = 1 / res;

// if (proba[i] == 0.5)

// {

// res = rnd.Next(1, proba.Length);

// proba[i] = 0.5 / res;

// }

// a = proba.Sum();

// if (a != 1.0)

// {

// res = rnd.Next(1, proba.Length);

// proba[i] = 1 / res;

// }

// }

// }

// a = proba.Sum();

//} while (a == 1.0);

// proba = new double[3] { 0.2, 0.5, 0.3 };proba;

}

/// <summary>

/// Generation FutureProbability

/// </summary>

/// <param name="condition"></param>

/// <returns></returns>double[] FutureProbability(double[,] condition)

{[] futureProba = new double[condition.GetLength(0)];[] proba = new double[condition.GetLength(0)];[] help = new double[condition.GetLength(0)];Sum = 0;(int i = 0; i < condition.GetLength(0); i++)

{(int j = 0; j < condition.GetLength(1); j++)

{[j]= condition[i,j];

}[i] = proba.Sum();

}(int j = 0; j < futureProba.Length; j++)

{[j] = help[j] / help.Sum();

}

//int count = 0;

//while(count < futureProba.GetLength(0))

//{

// for(int i = 0; i < futureProba.GetLength(1); i++)

// {

// proba[i] = futureProba[count, i];

// }

// proba[count] = proba.Sum();

// count++;

//}futureProba;

}

}

}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;Diplom

{partial class Form1 : Form

{double p, c_z, h, loss;int z;cet = new ConechEtap();frm_z = new FormZakaz();about = new FormAbout();[] proba;Form1()

{();_z.Hide();.Hide(); .Dispose();_z.Dispose();

}

/// <summary>

///

/// </summary>

/// <param name="n"></param>

/// <returns></returns>[] Out(int n)

{[] str = new string[n + 1];e = n;(int i = 0; i < n + 1; i++)

{[i] = "Если на складе " + e + " продукции";-;

}str;

}

/// <summary>

/// Enter to DataGridview version 2

/// </summary>

/// <param name="lst1"></param>

/// <param name="lst2"></param>

/// <param name="lst3"></param>Zanesenie_v_DataGrid1(double[] lst1, double[] lst2, string[] lst3, double[] lst4, string[] lst5)

{.BackgroundColor = Color.LightGray;.ColumnCount = lst1.Length;(int i = 0; i < lst1.Length; i++)

{.RowCount = lst1.Length;

}(int i = 0; i < lst1.Length; i++)

{ .Rows[i].Cells[0].Value = Convert.ToString(lst1[i]);.Rows[i].Cells[1].Value = Convert.ToString(lst2[i]); .Rows[i].Cells[3].Value = Convert.ToString(lst3[i]);.Rows[i].Cells[4].Value = Convert.ToString(lst4[i]);.Rows[i].Cells[2].Value = Convert.ToString(lst5[i]);

}

}

/// <summary>

///

/// </summary>

/// <param name="lst1"></param>

//void Zanesenie_Probability_v_DataGrid1(double[] lst1)

//{

// dataGridView2.BackgroundColor = Color.LightGray;

// dataGridView2.ColumnCount = lst1.Length;

// for (int i = 0; i < lst1.Length; i++)

// {

// dataGridView2.RowCount = lst1.Length;

// }

// for (int i = 0; i < lst1.Length; i++)

// {

// dataGridView4.Rows[i].Cells[0].Value = Convert.ToString(lst1[i]);

// }

//}

/// <summary>

/// Enter to DataGridview version 1

/// </summary>

/// <param name="lst"></param>

/// <param name="datagridview"></param>Zanesenie_v_DataGrid(double[,] lst, DataGridView datagridview)

{.BackgroundColor = Color.LightGray;.ColumnCount = lst.GetLength(0);(int i = 0; i < lst.GetLength(0); i++)

{.RowCount = lst.GetLength(1);

}(int i = 0; i < lst.GetLength(0); i++)

{(int j = 0; j < lst.GetLength(1); j++)

{

// datagridview.Rows[0].DefaultCellStyle.BackColor = Color.Teal;

// datagridview.Rows[0].Cells[j].Value = .ToString();.Rows[i].Cells[j].Value = Convert.ToString(lst[i, j]);

}

}

}

/// <summary>

/// Button_click

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void button1_Click(object sender, EventArgs e)

{ _z = frm_z.c_z;= frm_z.z;= c_z / 20;= frm_z.loss; (p == 0 && c_z == 0 && h == 0 && z == 0)

{.Show("В полях нули. Введите пожалуйста в эти поля число более нуля.");

}= cet.Probability(z, c_z, h, loss);.functionFirstEtap(z,c_z,h,loss, proba);.Min(cet.mass); _v_DataGrid(cet.mass, dataGridView1);_v_DataGrid1(cet.Probability(z, c_z, h, loss), cet.Min(cet.mass), cet.Strategy(z, c_z, h, loss), cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)), Out(z));.Minimum = 1;.Maximum = z;.Value = 1;.Step = 1;(int i = 0; i < z; i++)

{.PerformStep();

}

//MessageBox.Show(cet.F_res().ToString());

// cet.GenerationNextEtap(z, c_z, h, loss, progressBar1);_v_DataGrid(cet.GenerationNextEtap(z, c_z, h, loss), dataGridView3);

// Zanesenie_Probability_v_DataGrid1(cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)));

//Zanesenie_v_DataGrid(cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)), dataGridView4);

}

/// <summary>

/// Open FommChild

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void подготовитсяКРасчетуToolStripMenuItem_Click(object sender, EventArgs e)

{_z = new FormZakaz();_z.Show();

}

/// <summary>

/// Raschet

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void провестиРасчетToolStripMenuItem_Click(object sender, EventArgs e)

{.Show();_z = frm_z.c_z;= frm_z.z;= c_z / 20;= frm_z.loss;(p == 0 && c_z == 0 && h == 0 && z == 0)

{.Show("В полях нули. Введите пожалуйста в эти поля число более нуля.");

}= cet.Probability(z, c_z, h, loss);.functionFirstEtap(z, c_z, h, loss, proba);.Min(cet.mass);_v_DataGrid(cet.mass, dataGridView1);_v_DataGrid1(cet.Probability(z, c_z, h, loss), cet.Min(cet.mass), cet.Strategy(z, c_z, h, loss), cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)), Out(z));.Minimum = 1;.Maximum = z;.Value = 1;.Step = 1;(int i = 0; i < z; i++)

{.PerformStep();

}

//MessageBox.Show(cet.F_res().ToString());

// cet.GenerationNextEtap(z, c_z, h, loss, progressBar1);_v_DataGrid(cet.GenerationNextEtap(z, c_z, h, loss), dataGridView3);

// Zanesenie_Probability_v_DataGrid1(cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)));

}

/// <summary>

/// Control key

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void Form1_KeyDown(object sender, KeyEventArgs e)

{(e.KeyCode == Keys.Enter)

{.Show();_z = frm_z.c_z;= frm_z.z;= c_z / 20;= frm_z.loss;(p == 0 && c_z == 0 && h == 0 && z == 0)

{.Show("В полях нули. Введите пожалуйста в эти поля число более нуля.");

}= cet.Probability(z, c_z, h, loss);.functionFirstEtap(z, c_z, h, loss, proba);.Min(cet.mass);_v_DataGrid(cet.mass, dataGridView1);_v_DataGrid1(cet.Probability(z, c_z, h, loss), cet.Min(cet.mass), cet.Strategy(z, c_z, h, loss), cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)), Out(z));.Minimum = 1;.Maximum = z;.Value = 1;.Step = 1;(int i = 0; i < z; i++)

{.PerformStep();

}

//MessageBox.Show(cet.F_res().ToString());

// cet.GenerationNextEtap(z, c_z, h, loss, progressBar1);_v_DataGrid(cet.GenerationNextEtap(z, c_z, h, loss), dataGridView3);

// Zanesenie_Probability_v_DataGrid1(cet.FutureProbability(cet.GenerationNextEtap(z, c_z, h, loss)));

}(e.KeyCode == Keys.Space)

{

подготовитсяКРасчетуToolStripMenuItem_Click(sender, new EventArgs());

}

}

/// <summary>

/// Form Close

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void выходToolStripMenuItem_Click(object sender, EventArgs e)

{.Close();

}

/// <summary>

/// Open Form About

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

{= new FormAbout();.Show();

}

}

}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;Diplom

{partial class FormZakaz : Form

{double c_z;int z;double loss;

/// <summary>

/// Constructor Form

/// </summary>FormZakaz()

{();(text_b_razm.Text == "" && textBoxCountProd.Text == "" && textBox_Loss.Text == "")

{.Text = text_b_razm.Text = textBox_Loss.Text = "0";

}

}

/// <summary>

/// Operation of Event button1_click

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>void button1_Click(object sender, EventArgs e)

{(text_b_razm.Text == "0" && textBoxCountProd.Text == "0")

{.Show("В полях нули. Введите пожалуйста в эти поля число более нуля.");

}

{_z = Convert.ToDouble(text_b_razm.Text);= Convert.ToInt32(textBoxCountProd.Text);= Convert.ToDouble(textBox_Loss.Text);.Dispose();.Show("Стоимость


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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ