Разработка инвестиционного проекта ОАО "Завод по производству труб большого диаметра"

дипломная работа: Экономика

Документы: [1]   Word-128080.doc Страницы: Назад 1 Вперед

Аннотация


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

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

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

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

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

Дипломная     работа    изложена   на  113 страницах, содержит  3 рисунка, 15 таблиц. Список использованных источников состоит из 25  наименований, 3 приложений.

Содержание


Введение        7

1 Аналитический обзор литературы        8

1.1        Основные понятия инвестиционного проектирования        8

1.1.1 Понятие проекта и проектного цикла        8

1.1.2 Оценка текущей стоимости денег        9

1.1.3  Общая характеристика методов оценки эффективности инвестиционного проекта        11

1.2 Общие понятия неопределенности и риска        12

1.3 Виды рисков        13

1.4 Мера риска        18

1.5 Методы анализа рисков        18

1.5.1 Метод корректировки нормы дисконта        18

1.5.2 Анализ чувствительности        19

1.5.3 Анализ iенариев        20

1.5.4 Анализ вероятностных распределений потоков платежей        20

1.5.5 Деревья решений        20

1.5.6 Имитационное моделирование (метод Монте-Карло)        21

1.5.7 Модель оценки риска стратегического инвестиционного проекта        22

1.5.8 Метод нечетко-множественной оценки инвестиционного проекта        25

2 Специальная часть        29

2.1 Описание модели оценки риска инвестиционного проекта для ОАО "Завод по производству труб большого диаметра» на основе модели риска стратегического инвестиционного проекта        29

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

2.3 Имитационная модель получения возможных iенариев величин денежных потоков        32

2.4 Построение модели оценки риска инвестиционного проекта при нечетких входных данных        33

2.5 Описание нечетко-моножественной модели принятия решения для сложных систем        35

2.6 Описание нечетких данных для модели принятия решения о риске инвестиционного проекта        38

3 Анализ результатов        46

3.1 Обоснование  выбора среды программирования        46

3.2. Описание программы        46

3.3 Оценка риска инвестиционного проекта ОАО "Завод по производству труб большого диаметра» с применением теории вероятностей        49

3.4 Применение математического аппарата нечетких множеств для оценки риска проекта        52

4 Безопасность жизнедеятельности        59

4.1 Идентификация опасных и вредных производственных факторов        59

4.2 Санитарно-технические требования        61

4.2.1 Требования к планировке помещения        61

4.2.2 Требования к микроклимату помещения        62

4.2.3 Требования к освещению помещения        62

4.2.4 Требования безопасности при эксплуатации электрокоммуникаций        64

4.3 Разработка мер защиты от опасных и вредных факторов        64

4.4 Безопасность жизнедеятельности в чрезвычайных ситуациях        65

4.5 Инженерная разработка. Расчет защитного зануления персонального компьютера        66

5 Охрана природной окружающей среды        69

5.1 Стандарты безопасности        69

5.2 Эргономические требования        71

5.3 Стандарты уровней излучения        72

5.3.1 Требования к электромагнитным излучениям и энергопотреблению        72

5.3.2 Рентгеновское излучение        72

5.3.3 Электростатический потенциал        72

5.3.4 Переменное электрическое поле        72

5.3.5 Переменное магнитное поле        72

5.3.6 Энергосбережение        73

5.4 Требования к электрической безопасности        73

5.5 Дополнительные требования        73

5.5.1 Наклон в вертикальной плоскости        73

5.5.2 Регулировка высоты        73

5.5.3 Поворот в горизонтальной плоскости        73

5.5.4 Регулировка яркости и контраста        74

5.5.5 Индикация частоты вертикальной развертки        74

5.5.6 Акустический шум (для ВДТ с вентилятором)        74

5.6 Экологические стандарты        74

5.7 Стандарты пониженного энергопотребления        75

5.8 Экологическая оценка компьютера как объекта загрязнения окружающей среды.        76

Выводы        78

Список использованных источников        79

Приложение А. Основные элементы пользовательского интерфейса        81

Приложение Б. Текст программы        86

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

Введение


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

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

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



1 Аналитический обзор литературы


    1. Основные понятия инвестиционного проектирования


1.1.1 Понятие проекта и проектного цикла


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

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

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

В /2/ дано определение стратегического инвестиционного проекта как спланированной на длительный срок системы мер и мероприятий, направленных на привлечение материальных и финансовых ресурсов, и их поэтапное "ожение с целью получения заданного эффекта. Автор выделяет основные качественные критерии стратегических инвестиционные проектов:

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

Промежуток времени между моментом появления проекта и моментом его ликвидации называется проектным  или жизненным циклом проекта. Весь проектный цикл разбивается на несколько этапов. Жизненные циклы инвестиционных проектов разделяются  авторами в /1,2,3/ на  этапы, которые, в общем, можно охарактеризовать так:

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

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


1.1.2 Оценка текущей стоимости денег


В /1/ автор отмечает, что международная практика оценки эффективности инвестиций базируется на концепции временной стоимости денег. Инвестируемый капитал, равно как и денежный поток, приводится к настоящему времени или к определенному расчетному году (который, как правило, предшествует началу реализации проекта). Отсюда возникает еще одно важнейшее понятие, непосредственно связанное с инвестиционным проектированием - это дисконтирование (discounting). В /4/ автор определяет дисконтирование как приведение разновременных экономических показателей к какому-либо одному времени - точке приведения. С помощью этой операции производится приведение всех денежных потоков к общей единице измерения. Общая единица измерения необходима  потому, что капитал в различные интервалы времени имеет различную стоимость. Предполагается, что каждый период капитал Vt0 способен приносить доход в размере Vt0*r, где r - процентная ставка (ставка дисконтирования). Вполне понятно, что будущая стоимость (future value) капитала должна включать в себя доход, который принесет капитал, то есть


       (1)

где Vt1 - величина капитала через один год, денежные единицы;

VtN - величина капитала через N периодов, денежные единицы.


Исходя из этих равенств, производится расчет текущей стоимости PV (present value). Теоретически можно привести все  величины к любому временному этапу t


       (2)


но, в последующем,  удобнее работать именно с начальным, или нулевым, периодом


       (3)


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

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

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

Выбранная ставка дисконтирования во многом "ияет на оценку эффективности проекта.


1.1.3  Общая характеристика методов оценки эффективности инвестиционного проекта


В /1/ автор отмечает, что суть всех методов оценки эффективности инвестиционного проекта базируется на следующей простой схеме: исходные инвестиции при реализации какого-либо проекта генерируют денежный поток CF1, CF2, ... , CFn. Инвестиции признаются эффективными, если этот поток достаточен для возврата исходной суммы капитальных "ожений и обеспечения требуемой отдачи на "оженный капитал.

Наиболее распространены следующие показатели эффективности капитальных "ожений:

  • дисконтированный срок окупаемости (DPB).
  • чистый современный эффект (чистая приведенная стоимость) инвестиционного проекта (NPV),
  • внутренняя норма прибыльности (доходности, рентабельности) (IRR),

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

       Чистый современный эффект - сумма всех дисконтируемых и ревальвируемых на какой-либо момент времени поступлений и выплат, возникших в результате реализации инвестиционного проекта /2/. Тогда соотношение для NPV имеет следующий вид


               (4)

где I  - стартовый объем инвестиций, денежные единицы;

N - число плановых интервалов (периодов) инвестиционного процесса, соответствующих   сроку жизни проекта;

ΔVi - оборотное сальдо поступлений и платежей в i-ом периоде, денежные единицы;

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

Инвестиционный проект признается эффективным, когда NPV, оцененная по (4), больше определенного проектного уровня G.

В /6/ автор отмечает, что в самом распространенном случае G = 0, так как проект обычно считается эффективным, если дисконтированная стоимость поступлений не меньше дисконтированной стоимости расходов. Однако в реальной жизни все не совсем так. Предприятие, реализуя какой-либо проект, может руководствоваться не только соображениями относительно среднесрочной коммерческой эффективности, но и учитывать долгосрочные возможности или преследовать социальные и другие интересы, например, увеличение числа рабочих мест, улучшение условий труда работников. Таким образом, предприятие может позволить величине G быть равной величине меньше нуля. Или же, наоборот, учитывая неблагоприятные последствия проекта социального или экологического характера, предприятие устанавливает величину G на уровне G>0. То есть, фактически, предприятие устанавливает величину G в зависимости от внешних эффектов, связанных с проектом.

Данные показатели, равно как и соответствующие им методы, используются в двух вариантах:

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


1.2 Общие понятия неопределенности и риска


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

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

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

Неопределенность порождает неблагоприятные ситуации и последствия, которые характеризуются понятием "риск». В /1,2,4,7/ авторы дают различные определения понятия риска, которые, в основном, сводятся к следующему: риск - это вероятность (угроза) потери лицом или организацией части своих ресурсов, недополучения доходов или появления дополнительных расходов в результате осуществления определенной производственной  и финансовой политики.

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

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

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

Комбинированная оценка риска проекта включает в себя качественную и количественную оценку.


        1.3 Виды рисков


       В различных источниках /1,2,4,5,7,8/ даются различные классификации видов риска, которые все объединяют одни и те же  виды, но с некоторыми особенностями их распределения по группам. Приведем наиболее полную системную классификацию видов хозяйственных рисков, представленную в /2/. Она сведена в таблице 1.







Таблица 1 - Системная классификация хозяйственных рисков

Классификационные признаки

Виды рисков

Характеристика риска

1

2

3

Природа возникновения

Субъективные (связанные с субъектом хозяйствования)

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



Объективные

Недостаток информации, стихийные бедствия, неожиданные изменения конъюнктуры рынка, уровня инфляции, в законодательстве, кредитовании, налогообложении и так далее

Этапы решения проблемы

На этапе принятия решений

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


На этапе реализации решения

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

По уровню

Локальный

Риск на уровне отдельной фирмы, компании, объединения, их структурных звеньев

Отраслевой

Риск, связанный со спецификой отрасли

Региональный

Охватывающий экономику на уровне территории субъектов экономических районов

Национальный

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

Международный (страновой)

Связанный с изменениями в конъюнктуре мирового рынка, взаимоотношениями между странами, масштабными стихийными бедствиями

Продолжение таблицы 1

1

2

3

По сфере возникновения

Внешний

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

Внутренний

Риски, связанные с видами предприятия, объединения: производственные риски, криминальный риск

По возможности страхования

Страхуемый

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

Не страхуемый

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

По сфере

активности

Финансовый

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

Валютный

Риск колебания курсов валют

Юридический

Связанный с низким качеством законодательных актов и неожиданными изменениями в законодательстве

Производственный

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

Конъюнктурный

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

Продолжение таблицы 1

1

2

3


Инвестиционный

Связанный с неопределенностями, непредвиденными обстоятельствами в инвестиционной сфере

Страховой

Риск формирования страхового фонда, управления страховым фондом, управления собственным имуществом, денежными средствами и персоналом

Криминальный

Риск социальной нестабильности

Платежа

Риск, связанный с задержками денежных расчетов


Инновационный

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

По диверсифици-руемости

Систематический

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

Несистематический (специфический)

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

По степени допустимости

Минимальный

Характеризуется уровнем возможных потерь расчетной прибыли в пределах 0 - 25 %

Повышенный

Не превышающий возможных потерь прибыли в пределах 25 - 50 %


Критический

Характеризуется уровнем возможных потерь расчетной прибыли в пределах 50 - 75 %

Недопустимый

Возможные потери близки к размеру собственных средств, вызывающих банкротство фирмы. Риск равен 75-100 %


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

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

Форс-мажорный риск связан с резким непредсказуемым и бесконтрольным изменением среды и возникновением бесконтрольных "ияний, оказываемых на объект риска.

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

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

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

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

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

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

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

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

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

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

Риск платежа связан с задержками получения финансовых средств.

1.4 Мера риска


       Как пишет автор в /7/, наиболее распространенной мерой риска коммерческого или финансового решения или операции следует считать среднеквадратическое отклонение (положительный квадратный корень из дисперсии) значения показателя эффективности этого решения или операции. Чем меньше  разброс результата решения, тем более он предсказуем, то есть тем значение риска меньше.

       Для оценивания риска применяются также и различные меры рассеяния: диапазон, полумежквартильный диапазон, дисперсия или вариация, полувариация, абсолютное среднее отклонение, которые подробно рассмотрены в /7/.


1.5 Методы анализа рисков


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


1.5.1 Метод корректировки нормы дисконта


Данная методика заключается в определении поправки к коэффициенту дисконтирования, учитывающей риск. Данная поправка выбирается в зависимости от характера инвестиционной деятельности. Автор в /4/ приводит пример поправок к коэффициенту дисконтирования, который показан в таблице 2.


Таблица 2 - Поправки на риск к коэффициентам дисконтирования показателей инвестиционного проекта

Уровни риска

Пример цели проекта

Премия за риск, %

Очень низкий

Вложения в государственные облигации

0

Низкий

Вложение в надежную технику

3 - 5

Средний

Увеличение объема продаж существующей продукции

8 - 10

Высокий

Производство и продвижение на рынок нового продукта

13 - 15

Очень высокий

Вложения в исследования и инновации

18 - 20

        Чем выше степень рискованности проекта, тем больше значение поправки и, соответственно, меньше значение приведенной стоимости проекта и тем менее охотно инвесторы склонны вкладывать капиталы в такие проекты

В /9/ автор указывает достоинства этого метода - простота расчетов, а также в понятности и доступности. Вместе с тем, как отмечает автор, метод имеет существенные недостатки.

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

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


1.5.2 Анализ чувствительности


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

Сначала производится выбор ключевого показателя эффективности инвестиций, в качестве которого может служить внутренняя норма прибыльности (IRR) или чистое современное значение (NPV). Далее происходит выбор факторов, относительно которых разработчик инвестиционного проекта не имеет однозначного суждения и установление их номинальных и предельных  значений. Далее производится расчет ключевого показателя для всех выбранных предельных значений неопределенных факторов. В конце анализа происходит построение графика чувствительности для всех неопределенных факторов. В западном инвестиционном менеджменте этот график носит название "Spider GraphтАЭ. Данный график позволяет сделать вывод о наиболее критических факторах инвестиционного проекта, с тем чтобы в ходе его реализации обратить на эти факторы особое внимание с целью сократить риск реализации инвестиционного проекта.

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

Главным недостатком данного метода, по мнению автора, является предпосылка о том, что изменение одного фактора рассматривается изолированно, тогда как на практике все экономические факторы в той или иной степени коррелированны.



1.5.3 Анализ iенариев


Это прием анализа риска, который, как отмечает автор в /1/, на ряду с базовым набором исходных данных проекта рассматривает ряд других наборов данных, которые, по мнению разработчиков проекта, могут иметь место в процессе реализации. В анализе iенария, финансовый аналитик просит технического менеджера подобрать показатели при "плохомтАЭ стечении обстоятельств (малый объем продаж, низкая цена продажи, высокая себестоимость единицы товара, и т. д.) и при "хорошемтАЭ. После этого, NPV при хороших и плохих условиях вычисляются и сравниваются с ожидаемым NPV.

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


1.5.4 Анализ вероятностных распределений потоков платежей


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

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


1.5.5 Деревья решений


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

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

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

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


1.5.6 Имитационное моделирование (метод Монте-Карло)


Данный метод описан во многих источниках, например в /1,2,10/.  Здесь в центре внимания оказываются распределения вероятностей какого-либо финансового показателя (например, NPV). В общем случае имитационное моделирование Монте-Карло - это процедура, с помощью которой математическая модель определения данного показателя подвергается ряду имитационных прогонов с помощью компьютера. В ходе процесса имитации строятся последовательные iенарии с использованием исходных данных, которые по смыслу проекта являются неопределенными, и потому в процессе анализа полагаются случайными величинами. Процесс имитации осуществляется таким образом, чтобы случайный выбор значений из определенных вероятностных распределений не нарушал существования известных или предполагаемых отношений корреляции среди переменных. Результаты имитации собираются и анализируются статистически, с тем, чтобы оценить меру риска.

Как отмечает автор в /9/, практическое применение данного метода продемонстрировало широкие возможности его использования в инвестиционном проектировании, особенно в условиях неопределённости и риска. Данный метод особенно удобен для практического применения тем, что удачно сочетается с другими экономико-статистическими методами и другими методами исследования операций. Практическое применение данного метода, как замечает автор, показало, что зачастую он даёт более оптимистичные оценки, чем другие методы, например анализ iенариев, что обусловлено перебором промежуточных вариантов.


1.5.7 Модель оценки риска стратегического инвестиционного проекта


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

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

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

В качестве целевой функции для построения модели оценки риска берется определение чистого приведенного эффекта и его классическая функция, приведенная в формуле (4).

Ненадежными случайными величинами являются чистые денежные потоки в момент времени t. На основе метода Монте-Карло определяется математическое ожидание чистого приведенного эффекта и его дисперсия.

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

Среднеквадратическое отклонение чистого приведенного эффекта составит


σ2(NPV) = E[NPV-E(NPV)2]        

σ2(NPV) = E[((О±*S1 + О±2*S2 + тАж +О±n*Sn)-( О±*E(S1) + О±2*E(S2) + тАж +О±n*E(Sn)))2],        (5)

где Si - случайная величина денежного потока, денежные единицы;

О± - коэффициент дисконтирования, доли единицы

E[..] - операция вычисления математического ожидания.

Приведем формулу (5) к следующему виду


σ2(NPV) = E[(О± *(S1 - E(S1)) + О±2*(S2 -  E(S2)) +тАж +О±n*(Sn - E(Sn)))2],        (6)


После преобразований, автор получает следующее выражение:


                       (7)


где Vt - вариация (риск) проекта в момент времени t, (денежные единицы)2

n - число планово-учетных периодов проекта,

m - размер матрицы ковариаций, денежные единицы,

i,j -  номер планово-учетного периода

Sij -  чистые денежные потоки, денежные единицы,

σ2(Si) - дисперсия случайной величины денежных потоков, (денежные единицы)2,

Cov(Si,Sj) - ковариация между величинами Si и Sj, (денежные единицы)2,

α - коэффициент дисконтирования, доли единицы.


       Критерием покрытия автор называет соотношение стоимости собственного капитала субъекта в момент времени t к заемному



       (8)

где Сt - критерий покрытия в момент времени t, доли единицы,

Аt - собственный капитал субъекта в момент времени t, денежные единицы,

Zt - заемный капитал в момент времени t, денежные единицы.


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

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



       (9)



где Rt  - коэффициент ликвидности в момент времени t, доли единицы,

Sij - чистые денежные потоки в i,j-й планово-учетный период, денежные единицы,

  α - безрисковая ставка дисконтирования, доли единицы,

  n - число планово-учетных периодов проекта,

  i - номер планово-учетных периодов,

  j - номер  планово-учетного периода на момент реализации стратегического инвестиционного проекта,

NPVt - фактически полученная стоимость стратегического инвестиционного проекта (денежные потоки, полученные на момент времени t), денежные единицы,

  I - первоначальные капиталовложения, денежные единицы.

       

Ясно, что Ri - случайная величина, ее реализации составляют значения коэффициента ликвидности стратегического инвестиционного проекта за плановый период.

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

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




       



       (10)




к - размерность вектора Pf(t), единицы,

f - число ресурсов в "портфеле ресурсов", единицы,

t - номер планово-учетных периода,

Pf - цена на f-й ресурс, денежные единицы,

Ptkrit - критический лимит цены на f-й ресурс, денежные единицы,

Vn - коэффициент ковариации  Pf и Pt, (денежные единицы)2,

xf - доля f-го ресурса в "портфеле ресурсов", доли единицы.


1.5.8 Метод нечетко-множественной оценки инвестиционного проекта


Зададим  набор нечетких чисел  = (amin, , amax) для анализа эффективности проекта (эти числа моделируют высказывание следующего вида: "параметр А приблизительно равен и однозначно находится в диапазоне [amin, amax]".):

  • = (Imin, , Imax) - инвестор не может точно оценить, каким объемом инвестиционных ресурсов он будет располагать на момент принятия решения;
  • = (ri min, , ri max) - инвестор не может точно оценить стоимость капитала, используемого в проекте (например, соотношение собственных и заемных средств, а также процент по долгосрочным кредитам);
  • = (Vmin, , Vmax) - инвестор прогнозирует диапазон изменения денежных результатов реализации проекта с учетом возможных колебаний цен на реализуемую продукцию, стоимости потребляемых ресурсов, условий налогообложения, "ияния других факторов;
  • = (Gmin, , Gmax) - инвестор нечетко представляет себе критерий, по которому проект может быть признан эффективным, или не до конца отдает себе отчет в том, что можно будет понимать под "эффективностью" на момент завершения инвестиционного процесса.

В том случае, если какой-либо из параметров однозначно  задан, то нечеткое число вырождается в действительное число А с выполнением условия amin = = amax. При  этом существо метода остается неизменным.

Чтобы преобразовать формулу (4) к виду, пригодному для использования нечетких исходных данных, воспользуемся способом, предложенным автором в /6/.

       Зададимся фиксированным уровнем принадлежности α и определим соответствующие ему интервалы достоверности по двум нечетким числам и : [a1, a2] и [b1, b2], соответственно. Тогда основные операции с нечеткими числами сводятся к операциям с их интервалами достоверности. А операции с интервалами, в свою очередь, выражаются через операции с действительными числами - границами интервалов:

  • операция "сложения"


[a1, a2]  (+)  [b1, b2] = [a1 + b1, a2 + b2],                                      (11)


  • операция "вычитания"


[a1, a2]  (-)  [b1, b2] = [a1 - b2, a2 - b1],                                       (12)


  • операция "умножения"


[a1, a2]  (×)  [b1, b2] = [min(a1b1, a1b2, a2b1, a2b2 ), max(a1b1, a1b2, a2b1, a2b2 )],        (13)


  • операция "деления"


[a1, a2]  (/)  [b1, b2] = [a1, a2]  (×)  [1/b2, 1/b1]        (14)


  • операция "возведения в степень"


[a1, a2]  (^)  i = [a1i , a2i].                                         (15)


       По каждому нечеткому числу в структуре исходных данных получаем интервалы достоверности [I1, I2], [ri1, ri2], [ΔVi1, ΔVi2]. И тогда, для  заданного уровня α, путем подстановки соответствующих границ интервалов в (4) по правилам (11) - (15), получаем


       (16)


Далее, задавшись приемлемым уровнем дискретизации по α на интервале принадлежности [0, 1], автор в /6/  приводит функцию принадлежности результирующего нечеткого числа к треугольному виду, ограничиваясь расчетами по значимым точкам нечетких чисел исходных данных.

Далее, исходя из функций принадлежности и конкретизируя определенный уровень принадлежности α, автор строит зону неэффективных инвестиций и вычисляет площади () этой плоской фигуры в зависимости от интервальных значений чистой приведенной стоимости (NPV1, NPV2 ) и критерия эффекта (G1, G2).

После чего, предположив, что все реализации (NPV, G) при заданном уровне принадлежности α равновозможны, автор выводит степень риска неэффективности проекта φ(α) через геометрическую вероятность события попадания точки (NPV, G) в зону неэффективных инвестиций

                                                        (17)


Тогда итоговое значение степени риска неэффективности проекта он получает из уравнения (18) 


       (18)


В /6/ он рассматривает частный случай, когда ограничение определено четко уровнем G. С учетом формулы (18)  и длинной цепи преобразований, автор получает меру оценки  степени риска инвестиционных проектов, которая выглядит так


       ,        (19)

где

,        (20)


       (21)


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

В /15/ автор рассматривает полученную оценку степени риска для различных способов представлений чистого приведенного эффекта.

Результат для случая, когда критерий G представлен нечетким числом произвольного вида, представлен автором в /16/.

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

Метод оценки риска, разработанный Недосекиным А.О. /6/, опирается на теорию нечетких множеств. Все данные представлены нечеткими числами, а риск рассматривается как вероятность попадания значения чистого приведенного эффекта в зону неэффективных инвестиций. Чем больше эта вероятность тем, соответственно, больше риск. Это действительно так, но оценка риска может получиться односторонней, если в процессе инвестирования не учитывать  во сколько раз значение заемных средств превышает собственные, а также проводить сопоставления полученных в ходе реализации проекта результаты с прогнозными.

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

2 Специальная часть


2.1 Описание модели оценки риска инвестиционного проекта для ОАО "Завод по производству труб большого диаметра» на основе модели риска стратегического инвестиционного проекта


Данный проект является стратегическим, поэтому  для оценки его риска воспользуемся разработанной Каблуковым В.В.в /2/ моделью. 

Система критериев стратегического инвестиционного проекта в данной модели состоит из:  степени неопределенности (рискованности) результата, доли покрытия заемного капитала собственным, ликвидности проекта и стратегической значимости для субъекта.

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

Данные критерии довольно сложно оценить количественно. В первую очередь выполнение всех параметров "ияет на себестоимость продукции. Однако по оценкам экспертов из  Института по проектированию металлургических заводов (ГИПРОМЕЗ), себестоимость таких труб, выпущенных на заводе в Нижнем Тагиле, будет намного меньше цены покупки зарубежных аналогов. Без выполнения данного условия постройка завода была бы экономически невыгодна. Поэтому при разработке модели оценки рисков проекта данный критерий не учитывался.

Приведем модель оценки риска инвестиционного проекта без учета критерия стратегической значимости для субъекта:

  1. Критерий для учета неопределенности (риска) стратегических инвестиционных проектов при зависимых денежных потоках


               

       (22)


где Vt - вариация (риск) проекта в момент времени t, (денежные единицы)2

n - число планово-учетных периодов проекта,

i,j -  номер планово-учетного периода

Sij -  чистые денежные потоки, денежные единицы,

σ2(Si) - дисперсия случайной величины денежных потоков, (денежные единицы)2,

Cov(Si,Sj) - ковариация между величинами Si и Sj, (денежные единицы)2,

α - коэффициент дисконтирования, доли единицы.


       2) Критерий покрытия



       (23)

где Сt - критерий покрытия в момент времени t, доли единицы,

Аt - собственный капитал субъекта в момент времени t, денежные единицы,

Zt - заемный капитал в момент времени t, денежные единицы.


       3) Критерий ликвидности стратегического инвестиционного проекта

       (24)

где    Rt   -   коэффициент ликвидности в момент времени t, доли единицы,

NPVt - фактически полученная стоимость стратегического инвестиционного проекта           (денежные потоки, полученные на момент времени t), денежные единицы,

       I    -    первоначальные капиталовложения,  денежные единицы.


Ясно, что Rt - случайная величина, ее реализации составляют значения коэффициента ликвидности стратегического инвестиционного проекта за плановый период.

       Проект А будет считаться выгоднее проекта В, если имеют место следующие  неравенcтва:


       E(NPV(A)) тЙе E(NPV(B))

       Vt(A) тЙд Vt(B)

Rt(A) тЙе Rt(B),        (25)

где E(NPV(A)), E(NPV(B))  -  математические ожидания чистого приведенного эффекта проектов. 


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


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

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

       Так, например значения возмещения НДС по инвестициям и амортизация напрямую зависит от объема инвестиций, а прирост оборотных средств от эксплутационных затрат. 

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

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

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




2.3 Имитационная модель получения возможных iенариев величин денежных потоков


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

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

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

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

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

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

Математическое ожидание чистого приведенного эффекта рассчитывалось по формуле (26)


       (26)

где   I       - первоначальные капиталовложения, денежные единицы,

  N      - число планово-учетных периодов проекта,

  I        - номер планово-учетного периода

E(Si) -математическое ожидание чистого денежного потоки в i-й учетный период проекта,       денежные единицы,

к         - коэффициент дисконтирования, доли единицы.


2.4 Построение модели оценки риска инвестиционного проекта при нечетких входных данных


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

Понятие дисперсии, так же как и математического ожидания, функции распределения и ковариации  не определено для нечетких чисел, поэтому использование формулы (22) вызывает определенные трудности. В результате для учета риска была рассмотрена разработанная Недосекиным А.О.   оценка возможности того, что по результатам инвестиционного процесса значение NPV окажется ниже предустановленного граничного уровня /6/. Таким образом, первый критерий оценки риска проекта будет вычисляться по следующей формуле


               (27)


где


,                       (28)

       .             (29)

где Risk(G) - вероятность того, что значение чистого приведенного эффекта окажется ниже        предустановленного граничного уровня, доли единицы,

G           -    уровень эффективности проекта, денежные единицы,

NPVmin -  минимальное значение чистого приведенного эффекта из заданного диапазона,  денежные единицы,

NPVmах - максимальное значение чистого приведенного эффекта из заданного диапазона, денежные единицы,

NPVav -    среднее значение чистого приведенного эффекта из заданного диапазона, денежные единицы,

О±1       -   функция принадлежности нечеткого числа NPV, доли единицы.


Степень риска Risk(G) принимает значение от 0 до 1. Каждый инвестор, исходя из своих инвестиционных предпочтений, может классифицировать значение Risk(G), выделив для себя отрезок неприемлемых значений риска. Возможна также более подробная градация степени риска, которая будет рассмотрена позже.

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



       


       (30)


где Rt1- минимальное значение коэффициента ликвидности в момент времени t, доли единицы,

Rt2- среднее (наиболее ожидаемое) значение коэффициента ликвидности в момент времени t, доли единицы,

Rt3- максимальное значение коэффициента ликвидности в момент времени t, доли единицы,

Si1- минимальное значение чистого денежного потока в i-й планово-учетный период, денежные единицы,

Si2- среднее значение чистого денежного потока в i-й планово-учетный период, денежные единицы,

Si3- максимальное значение чистого денежного потока в i-й планово-учетный период, денежные единицы,

α1 -  минимальное значение безрисковой ставки дисконтирования, доли единицы,

α2 - среднее значение безрисковой ставки дисконтирования, доли единицы,

α3 - максимальное значение безрисковой ставки дисконтирования, доли единицы,

n   - число планово-учетных периодов проекта,

I    -  номер планово-учетных периодов,

j    - номер планово-учетного периода на момент реализации стратегического инвестиционного проекта,

NPVt - фактически полученная стоимость стратегического инвестиционного проекта (денежные потоки, полученные на момент времени t), денежные единицы,

I1 -минимальное значение первоначальных капиталовложений, денежные единицы,

I2 - максимальное значение первоначальных капиталовложений, денежные единицы,

I3 - среднее значение первоначальных капиталовложений, денежные единицы.


Критерий покрытия в рамках данной модели оценивается по следующей формуле:



       (31)

где Сt1 - минимальное значение критерия покрытия в момент времени t, доли единицы,

Сt2 - максимальное значение критерия покрытия в момент времени t, доли единицы,

Аt1 - минимальное значение собственного капитала субъекта в момент времени t, денежные единицы,

Аt2 - максимальное значение собственного капитала субъекта в момент времени t, денежные       единицы,

Zt1 - минимальное значение заемного капитала в момент времени t, денежные единицы,

Zt2 - максимальное значение заемного капитала в момент времени t,  денежные единицы.


2.5 Описание нечетко-моножественной модели принятия решения для сложных систем


Для получения однозначного ответа об уровне риска инвестиционного проекта на основе полученных данных необходимо ввести процедуру принятия решения.  Такая процедура описана Смирновым А.П. в /17/.

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

Модель управления в рассматриваемом случае есть модель связи между входными переменными u и выходной переменной v. Механизм этой связи включает суждения оператора о значениях переменных. В результате на основе численного значения  каждой из входных переменных оператор присваивает им качественные (нечеткие) значения. Свое решение он также принимает на основе нечеткого значения выходной переменной. Это означает, что оператор интуитивно пользуется нечеткой логикой, а конкретно - правилами нечеткого вывода.

Правила вначале формулируются с помощью термов (словесных описаний значений входных переменных). Каждое правило представляет собой текст, определяющий некоторое нечеткое отношение R между входными переменными u и выходной переменной v. Обозначим порядковый номер правила через L. 

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

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

Нечеткое отношение R для L-го правила между j-й входной переменной uj и выходной переменной v в соответствии с принятым правилом минимума выражено следующей функцией принадлежности


       (32)


Здесь индекс i(L) означает индекс i-го терма в L-м правиле вывода. Функция принадлежности (31) отображает отношение связи между числовыми значениями в паре (uj, v). Чем больше ее значение, тем теснее эта связь.

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

Пусть входные переменные uj представлены нечеткими числами fj с функциями принадлежности μfj (uj). Заметим, что эти функции есть результат работы системы наблюдения (измерения) в отличие от ранее введенных функций μji(uj), которые выражают мнение эксперта-оператора по поводу конкретных значений uj. Тогда в соответствии с принятым правилом композиционного вывода можно записать связь между выходной переменной v и входной переменной uj следующим образом


       (33)


Здесь Mj(v) есть функция принадлежности, устанавливающая локальную связь между нечеткой входной переменной uj и нечеткой выходной переменной v.

Если система наблюдения дает конкретные числовые значения uj=Ej, то формула (33) преобразуется к следующему виду


       (34)


Поскольку в L-м правиле логического вывода исходные посылки связаны логическим "и» (то есть наличием данных обо всех четырех входных переменных для вывода значения выходной переменной), то соответствующая операция над нечеткими множествами реализуется в виде их пересечения. Последнее же реализуется /18/ с помощью операции минимума над соответствующими функциями принадлежности. Обозначим нечеткое множество, соответствующее выходной переменной v и полученное на основании L-го правила вывода через QL, а его функцию принадлежности через μQL(v). Тогда можно записать


       (35)


Данные о выходной переменной, полученные из всех правил вывода, должны быть логически объединены. Это соответствует операции максимума над функциями принадлежности /18/. Обозначив через Q результирующее нечеткое множество, соответствующее выходной переменной v, а через μQ(v)- его функцию принадлежности, окончательно запишем


       (36)

Теперь нужно оценить конкретное значение v* для принятия решения о движении данной плавки. Эта процедура называется дефазификацией. Предложено использовать наиболее распространенный метод дефазификации /18/ - нахождение центра тяжести функции принадлежности


       (37)


Здесь V- область определения (универсальное множество) функции ОјQ(v).

Таким образом, полученная модель использует входные переменныe uj, имеющие четкие значения, и выдает выходную переменную v также в четком виде., в то время как внутренняя структура модели является нечеткой.


2.6 Описание нечетких данных для модели принятия решения о риске инвестиционного проекта 


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

Качественные оценки этих критериев формализуются с помощью лингвистических переменных А1, А2, А3 соответственно.

Лингвистическая переменная  Aj (j=1,3) характеризуется следующим набором


<Aj,T(Aj),Uj>,        (38)

где  Aj - название переменной,

  T(Aj) - множество значений переменной (множество термов),

  Uj - универсальное множество соответствующей базовой переменной uj.


Ниже приведены значения компонент указанного набора:

  • A1=тАЭУровень риска для первого критериятАЭ, T(A1)=тАЭминимальный, повышенный, критический, недопустимыйтАЭ.
  • A2=тАЭУровень риска для второго критериятАЭ, T(A2)=тАЭминимальный, повышенный, критический, недопустимыйтАЭ.
  • A3=тАЭ Уровень риска для третьего критерия тАЭ, T(A3)=тАЭ минимальный, повышенный, критический, недопустимый тАЭ.

Такая градация степени риска взята из классификации рисков Каблукова В.В., где он описывает данные категории следующим образом: минимальная степень допустимости риска характеризуется уровнем возможных потерь расчетной прибыли в пределах 0 - 25 %, повышенная степень - 25 - 50 %, критическая - 50 - 70 %, недопустимая - 75 - 100   %.

Каждому множеству T(Aj) соответствуют четыре  терма Tji(Aj).

Каждый терм Tji(Aj) (i=1,4) характеризуется функцией принадлежности μji(uj), которая определена на соответствующем универсальном множестве Uj и выражает смысл данного терма.

Опишем сформированные функции принадлежности для первого критерия оценки риска. Здесь К1, К2, К3 - границы интервалов для соответствующих уровней риска. Границей для недопустимого уровня является единица. Значения данных интервалов можно получить из экспертного опроса.

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


       (39)


Повышенный уровень риска для первого критерия


       (40)


Критический уровень риска для первого критерия


       (41)


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

       (42)


Опишем функции принадлежности к риску для критерия ликвидности. Тут тоже используются границы интервалов для соответствующих уровней риска К1, К2, К3. Где К1 - это граница недопустимого уровня риска, К2 - критического, К3 - повышенного, границей минимального уровня является единица. Значения данных интервалов можно получить из экспертного опроса.

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


       (43)


Сформируем функции принадлежности коэффициента ликвидности к введенной лингвистической переменной:

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


       (44)        

Повышенный уровень риска для второго критерия


       (45)


Критический уровень риска для второго критерия


       (46)


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


       (47)


Опишем функции принадлежности для критерия покрытия. Тут также используются границы интервалов для соответствующих уровней риска К1, К2, К3, где К1 - это граница недопустимого уровня риска, К2 - критического, К3 - повышенного. Границей минимального уровня является единица. Значения данных интервалов можно получить из экспертного опроса.

Поскольку в результате расчетов мы получаем два значения, которые характеризуют минимальное (Сt1) и максимальное значение (Ct2) критерия, то для свертки этих значений воспользуемся следующей формулой


       (48)

Сформируем функции принадлежности коэффициента покрытия к введенной лингвистической переменной. Минимальный уровень риска для третьего критерия


       (49)


Повышенный уровень риска для третьего критерия


       (50)


Критический уровень риска для третьего критерия


       (51)


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


       (52)


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


<B,T(B),V>,        (53)

где  B       - название переменной (B  =  "Уровень риска проекта»);

T(B)  - множество термов (T(B) = "минимальный», "повышенный», "критический», "недопустимый»);

V      -  универсальное множество базовой переменной v (в долях единицы).


Значения функции принадлежности  μk (v) термов Tk(B) (k=1,4) также могут быть получены из экспертной информации.

Сформируем функции принадлежности риска проекта к введенной лингвистической переменной. Здесь К1, К2, К3 - границы интервалов для соответствующих уровней риска. Границей для недопустимого уровня является единица. Значения данных интервалов можно получить из экспертного опроса. Минимальный уровень риска проекта 


,        (54)

где RE - уровень риска инвестиционного проекта, (доли единицы).


Повышенный уровень риска для первого критерия


       (55)


Критический уровень риска для первого критерия


       (56)


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


       (57)


Смысл нечеткого вывода состоит в следующем. Если А - причина (предпосылка), а  В- результат (заключение), то можно определить нечеткое отношение  R соответствия между А и В, смысл которого отражается в знании: из А скорее всего следует В. Это знание выражено формулой R=АВ( где это символ нечеткой импликации). Тогда связь между нечеткой предпосылкой АтАЩ и нечетким заключением ВтАЩ можно записать в виде


BтАЩ = AтАЩ R = AтАЩ (AB),        (58)

где значок   - это правило композиционного вывода (правило свертки).


В рассматриваемой логической системе предпосылки определяются лингвистическими переменными А123, а заключение - лингвистической переменной В. В каждом конкретном правиле имеются три предпосылки (по числу входных переменных) и одно заключение. Каждое такое логическое правило определяет одно из возможных состояний объекта управления, а полный набор правил характеризует все возможные состояния /17/. Поскольку каждая из трех предпосылок имеет четыре значения соответствующей лингвистической переменной, а в правилах вывода должны присутствовать все комбинации значений, то общее число правил равно 43 =64.

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




3 Анализ результатов


3.1 Обоснование  выбора среды программирования


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

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

Характерные черты Delphi:

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


3.2. Описание программы


Программа "Оценка риска инвестиционного проекта» анализирует степень риска проекта и выдает результат  о его уровне в долевом отношении.

Риск инвестиционного проекта оценивается на основе трех показателей: вероятности попадания в зону неэффективности инвестиций, критерия покрытия и критерия ликвидности, которые были описан выше.

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

Рассмотрим основные элементы пользовательского интерфейса. Структура начального окна программы изображена на рисунке А1 приложения А.

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

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

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

При выборе пункта формирование денежных потоков появляется окно, изображенное на рисунке А3 приложения А.

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

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

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

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

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

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

Главное меню показанного окна содержит опции: файл и данные. Опция "файл» содержит в себе процедуры сохранения введенных данных и открытия файла данных, а опция "данные» - пункты: формирование денежных потоков, коэффициент ликвидности, анализ риска проекта, формирование уровней риска, формирование правил вывода.

При выборе пункта меню "Формирование денежных потоков» появляется окно, аналогичное изображенному на рисунке А3 приложения А.

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

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

При выборе опции "Коэффициент ликвидности», находящейся в пункте меню "Данные» основного окна "Оценка риска проекта» появляется окно, показанное на рисунке А6 приложенияВаА.

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

При выборе опции "Формирование уровней риска» появляется окно, показанное на рисункеВаА7 приложения А.

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

При выборе опции "Формирование правил вывода» появляется окно, показанное на рисункеВаА8 приложения А.

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

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

При нажатии этой кнопки загружается форма отчета, показанная на рисункеВаА9 приложенияВаА. Текст программы приведен в приложение Б.


3.3 Оценка риска инвестиционного проекта ОАО "Завод по производству труб большого диаметра» с применением теории вероятностей


Исходные данные для проведения оценки риска инвестиционного проекта были предоставлены институтом по проектированию металлургических заводов (ГИПРОМЕЗ).

Для расчета  значения критерия покрытия были взяты данные из таблицы 3.


Таблица 3 - Схема финансирования строительства завода по производству труб большого диаметра, %

Источники финансирования

Периоды проекта, года

4

5

6

7

8

9

10

11

12

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

31,3

41,0

36,6

35,0

48,0

61,0

74,0

87,0

100

Заемные средства

68,7

59,0

63,4

65,0

52,0

39,0

26,0

13,0

0


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

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

Расчет риска проекта начали с четвертого года, а за первоначальные капиталовложения приняли среднюю сумму "ожений на строительство завода, требуемую за три первых года с начала строительства, то есть I равнялось  17020 миллионов рублей. Норма дисконта была равна 10 %.

Значения критериев неопределенности (Vt), ликвидности (Rt) и покрытия (Ct), а также чистого приведенного эффекта (NPVt) для каждого планово-учетного периода проекта, рассчитанные программой, показаны в таблице 5.


Таблица 4 - Потоки финансовых средств для оценки риска проекта, млн.руб.

Название составляющих

Планово-учетные периоды проекта, года

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Поступление денежных средств

Доходы от реализации продукции

0

0

0

9333

15484

15824

15824

15824

15824

15824

15824

15824

15824

15824

15824

0

0

0

11541

19146

19567

19567

19567

19567

19567

19567

19567

19567

19567

19567

Возмещение НДС по инвестициям

0

0

0

2116

2039

0

0

0

0

0

0

0

0

0

0

0

0

0

2539

2447

0

0

0

0

0

0

0

0

0

0

Амортизация

0

0

0

1012

1778

1778

1778

1778

1778

1778

1778

1778

1778

1778

1778

0

0

0

1214

2134

2134

2134

2134

2134

2134

2134

2134

2134

2134

2134

Расход денежных средств

Инвестиции, включая НДС

3353

4320

9347

7907

0

0

0

0

0

0

0

0

0

0

0

4024

5184

11216

9488

0

0

0

0

0

0

0

0

0

0

0

Прирост оборотных средств

0

0

0

630

235

12

0

0

0

0

0

0

0

0

0

0

0

0

696

260

14

0

0

0

0

0

0

0

0

0

Эксплутационные затраты

0

0

0

6302

8656

8775

8775

8775

8775

8775

8775

8775

8775

8775

8775

0

0

0

6966

9568

9699

9699

9699

9699

9699

9699

9699

9699

9699

9699

Налоги

0

0

0

916

1906

1934

1910

1886

1861

1837

1813

1788

1764

1740

1715

0

0

0

1120

2330

2364

2334

2305

2275

2245

2215

2186

2156

2126

2097

Математическое ожидание

-3353

-4320

-9347

-1319

1053

8156

8107

8235

8115

8151

8255

8374

8502

8256

8426



Таблица 5 - Результат оценки риска инвестиционного проекта на основе вероятностного подхода,

Период проекта

Ct, доли единицы

NPVt, млрд. руб.

Vt, (млрд. руб.)2

ПГ2 , млрд. руб.

1

2

3

4

5

4

0,58

-14,54

660,89

0,81

5

0,92

-8,24

1878,80

1,37

6

1,56

-3,63

2952,54

1,72

7

2,85

0,53

3784,71

1,94

8

6,69

4,37

4832,95

2,20

9

100,00

7,81

5846,83

2,42

10

100,00

10,95

6698,38

2,59

11

100,00

13,84

7286,51

2,70

12

100,00

16,51

7583,38

2,76

13

100,00

18,98

7693,57

2,77

14

100,00

21,15

8045,46

2,84

15

100,00

23,17

8373,56

2,89


Так как критерий неопределенности представляет собой дисперсию чистого приведенного эффекта, то для простоты восприятия в таблицу добавлен последний столбик, показывающий величину среднеквадратического отклонения (ПГ2).

График зависимости значения среднеквадратического отклонения и чистого приведенного эффекта показан на рисунке 1.


Рисунок 1 - Зависимость среднеквадратического отклонения от значения NPVt


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


3.4 Применение математического аппарата нечетких множеств для оценки риска проекта


При анализе риска инвестиционного проекта на основе нечетко-множественного подхода были взяты интервалы чистых денежных потоков, рассчитанные на основе данных  из таблицы 4. Значения нечетких чисел чистых денежных потоков, рассчитанные при помощи программы, представлены в таблице 6. Здесь Smin - означает нижнюю границу интервала, Sav - среднюю, а Smax - верхнюю,  Si, (i = 4..12) - планово-учетные периоды проекта.


Таблица 6 - Значение нечетких чисел чистых денежных потоков, млрд. руб.


S4

S5

S6

S7

S8

S9

S10

S11

S12

S13

S14

S15

1

2

3

4

5

6

7

8

9

10

11

12

13

Smin

-5,81

7,14

5,52

5,57

5,60

5,63

5,62

5,69

5,72

5,75

5,78

5,81

Sav

-3,06

8,99

7,39

7,43

7,46

7,49

7,49

7,54

7,57

7,60

7,62

7,65

Smax

-0,46

12,92

10,98

11,02

11,04

11,06

11,06

11,11

11,14

11,16

11,19

11,21


Норма дисконта была взята неизменной и равнялась 10 %. Значения долей собственных и заемных средств также предполагались неизменными. Значение критерия эффективности было взято на основе предполагаемого ежегодного дохода в период погашения кредитов. Таким образом, G равнялось 2700 миллионов рублей. Значение первоначальных капиталовложений рассчитывалось как нечеткое число в  интервале  от 17020 до 20424 миллионов рублей.

Уровни риска для коэффициента ликвидности и покрытия были взяты следующие: К1Ва=Ва0,25 К2Ва=Ва0,50, К3Ва=Ва0,75.  Для критерия вероятности попадания в зону неэффективных инвестиций были взяты следующие уровни риска: К1Ва=Ва0,05, К2Ва=Ва0,10, К3Ва=Ва0,20,. Данные значения представлены в долях единицы.

Функции принадлежности к уровням риска имеют вид, представленный в формулах (59)-(72)

Минимальный уровень риска для вероятности попадания в зону неэффективных инвестиций


       (59)


Повышенный уровень риска для вероятности попадания в зону неэффективных инвестиций


       (60)


Критический уровень риска для вероятности попадания в зону неэффективных инвестиций


       (61)


Недопустимый уровень риска для вероятности попадания в зону неэффективных инвестиций


       (62)


Обобщенный критерий ликвидности


       (63)


Минимальный уровень риска для критерия ликвидности


       (64)        


Повышенный уровень риска для критерия ликвидности


       (65)


Критический уровень риска для критерия ликвидности


       (66)


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


       (67)


Обобщенный критерий коэффициента покрытия


       (68)


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


       (69)


Повышенный уровень риска для критерия покрытия


       (70)


Критический уровень риска для критерия покрытия


       (71)

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


       (72)


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


Таблица 7 - Результаты оценки риска без учета коэффициента ликвидности

Периоды проекта

Сt

NPVt

Risk(G)

Общий риск проекта

Значение

Уровень риска


Значение

Уровень риска

1

2

3

4

5

6

7

4

0,54

н

(-25,70;-19,80;-17,44)

1,00

н

0,84 - н

5

0,92

м

(-18,80;-12,37;  -6,75)

1,00

н

0,78 - н

6

1,56

м

(-15,65;  -6,82;   1,50)

1,00

н

0,78 - н

7

2,85

м

(-11,85;  -1,74;   9,02)

0,89

н

0,78 - н

8

6,69

м

(-8,37;   2,89; 15,87)

0,42

н

0,78 - н

9

1,00

м

(-5,19;   7,12; 22,12)

0,12

к

0,38 - п

10

1,00

м

(-2,29; 10,98;27,81)

0,04

м

0,16 - м

11

1,00

м

(0,36; 14,49;32,99)

0,01

м

0,16 - м

12

1,00

м

(2,79; 17,70;37,72)

0,00

м

0,16 - м

13

1,00

м

(5,00; 20,63;42,02)

0,00

м

0,16 - м

14

1,00

м

(7,02; 23,30;45,94)

0,00

м

0,16 - м

15

1,00

м

(8,88; 25,74;49,51)

0,00

м

0,16 - м









Покажем на рисунке 2 зависимость уровня риска от времени.


Рисунок 2 - Изменения уровня риска в течении жизненного цикла проекта

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

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


Таблица 8 - Анализ риска инвестиционного проекта с учетом коэффициента ликвидности

Периоды проекта

Сt

NPVt

Rt

Vt

Общий риск

Значение

Уровень

Значение

Уровень

Значение

Уровень

1

2

3

4

5

6

7

8

9

4

0,54

н

-19,80

(  0,77;1,00;1,14)

н

1,00

н

0,84 - н

5

0,92

м

-12,37

(  0,62;1,00;1,83)

н

1,00

н

0,78 - н

6

1,56

м

-6,82

(  0,44;1,00;0,00)

н

1,00

н

0,84 - н

7

2,85

м

-1,74

(  0,15;1,00;0,00)

н

1,00

н

0,84 - н

8

6,69

м

2,89

(  1,00;1,00;0,18)

м

0,00

м

0,17 - м

9

1,00

м

7,12

(  1,00;1,00;0,32)

м

0,00

м

0,16 - м

10

1,00

м

10,98

(  1,00;1,00;0,39)

м

0,00

м

0,16 - м

11

1,00

м

14,49

(39,91;1,00;0,44)

м

0,00

м

0,16 - м

Продолжение таблицы 8

1

2

3

4

5

6

7

8

9

12

1,00

м

17,70

(  6,35;1,00;0,47)

м

0,00

м

0,16 - м

13

1,00

м

20,62

(  4,12;1,00;0,49)

м

0,00

м

0,16 - м

14

1,00

м

23,29

(  3,31;1,00;0,51)

м

0,00

м

0,16 - м

15

1,00

м

25,73

(  2,90;1,00;0,52)

м

0,00

м

0,16 - м


       Покажем изменение уровня риска проекта во времени на рисунке 3









           Рисунок 3 - Изменение уровня риска проекта во времени


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

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



       



4 Безопасность жизнедеятельности


4.1 Идентификация опасных и вредных производственных факторов


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

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

Кинескопы, особенно цветные, где действуют три катодных луча, имеют свойство накапливать статические заряды на поверхности экрана. Хорошо заметны два признака этого: стеклянная поверхность притягивает частички пыли, которые прилипают к стеклу, а после выключения цветного монитора слышно легкое потрескивание. Статическое поле может накапливаться на одежде и теле и отрицательно воздействовать на кожу, вызывая ее раздражение. Исследования показали, что напряженность электрического поля между экраном видеотерминала и оператором составляет 5 - 15 кВ/м, что не выше нормы, но приводит к загрязнению экрана и притягивания к нему отрицательных ионов и частиц пыли.

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

Жалобы на те или иные расстройства зрения составляют от 62 % до 94 % работающих, которые заняты работой за ПЭВМ более половины дня:

  1. усталость глаз - до 4 - 5 %;
  2. сильные боли и ощущение песка в глазах - до 31 %;
  3. зуд в глазах к концу рабочего дня - до 50 %.

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

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

Анализ потенциально опасных и вредных факторов, сопутствующих выполняемым в работе на ПЭВМ операций, приведен в соответствии с действующими нормативами. Результаты представлены в таблице 9.


Таблица 9 - Анализ опасных и вредных производственных факторов

Операция

Используемые оборудование и вещества

Опасные и вредные факторы

Нормируемое значение параметров

классификация

перечень

1

2

3

4

5

Включение и выключение оборудования

Рубильники, устройства запуска ПЭВМ

Физический

Повышенная напряженность электрического поля

f = 5 Гц - 2 кГц         Епду = 25 В/м

f = 2 - 400 кГц

Епду = 2,5 В/м

на расстоянии 50 см вокруг ВДТ

Проведение проектных работ

Дисплей

Физический

Повышенный уровень ионизирующих излучений в рабочей зоне

ПДД = 20 мЗв/год

Продолжение таблицы 9

1

2

3

4

5



Физический

Недостаточная освещенность рабочей зоны

Eн = 300 лк


Компьютер с процессором  Intel Celeron c тактовой частотой 600 МГц

Физический

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

Uпр = 2 B,

Iч = 0,3 мА,

f = 50 Гц

Запись на жесткий и гибкий магнитные диски

Жесткий диск, дисковод

Физический

Повышенный уровень магнитного поля

f = 5 Гц - 2 кГц

Hпду = 250 нТл

f = 2 - 400 кГц

Hпду = 25 нТл

на расстоянии 50 см вокруг ВДТ


4.2 Санитарно-технические требования


Безопасность на рабочем месте обеспечивается при условии соблюдения санитарно-гигиенических норм (к санитарно-гигиеническим характеристикам относятся: микроклимат на рабочем месте, шум, освещение и так далее).


4.2.1 Требования к планировке помещения


Дипломная работа выполнялась в помещении площадью 24 м2 объемом   84м3. В комнате установлено 3 компьютера. На одного работающего приходится 8м2, 28 м3 рабочего пространства, что соответствует СанПиН 2.2.2.542-99 (гигиенические требования к видеодисплейным терминалам, ПЭВМ и организации работы: норма площади помещения 6 м2, V = 20 м3).

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


4.2.2 Требования к микроклимату помещения


Выполняемые работы в проектном отделе относятся к категории 1а-работы: выполняемые сидя, с энергозатратами 139 Вт.

Нормирование параметров микроклимата производится в соответствии с ГОСТ 12.1.005-88 (таблица 10

Таблица 10  - Нормирование параметров микроклимата

Параметры

Относительная "ажность, %

Скорость движения

воздуха, м/с

Температура воздуха В°С

Нормированные

40 - 60

не более 0,1

х.п. 22 - 24

т.п. 23 - 25

Фактические

45

0,1

х.п. 22 - 24

т.п. 23 - 25


Таким образом, параметры микроклимата в рассматриваемом помещение соответствуют оптимальным нормам /19/.

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

Температура в помещении регулируется при помощи кондиционеров и системы отопления. В холодное время года функционирует водяное отопление и работает кондиционер, а в теплое - кондиционер и вентиляция.

Стены и потолок помещения отделаны специальным шумопоглощающим материалом.


4.2.3 Требования к освещению помещения


В помещении имеется естественное и искусственное освещение. Нормы освещенности представлены в таблице 11.


Таблица 11 - Нормы освещенности помещения

1

2

3

4

5

6

7

8

9

10

Высокая точность


от 0,3 до 0,5 мм


Б1


> 70 %


300 лк


100 лк


40


15 %


3,0 %


1,0 %


Графы содержат следующие сведения:

1 - Характеристика зрительных работ

2 -  Наименьший размер объекта различения

3 -  Разряд зрительной работы

4 -  Относительная продолжительность зрительной работы

5 - Освещенность на рабочей поверхности от системы общего искусственного освещения

6 - Цилиндрическая освещенность

7 - Показатель дискомфорта

8 - Коэффициент пульсации освещенности

9 - КЕО при верхнем освещении

10 - КЕО при боковом освещении

Для искусственного освещения используют 3 светильника на люминеiентных лампах (типа ЛД 40). Необходимое количество светильников определяется по формуле


,         (73)        

где eh - освещенность, лк;

S   - площадь помещения, м2;

- коэффициент запаса, k=l,3;

Z   - коэффициент минимальной освещенности, z=1,2;

Фл - световой поток, Фл = 2100 лм;

N   - количество ламп в одном светильнике, n = 2;

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


Согласно формуле (73) шт.

Расчетное количество светильников соответствует их установленному количеству. Следовательно, в установке дополнительного освещения нет необходимости. Уровень освещенности в помещении удовлетворяет требованию СНиП 23-05-95.


4.2.4 Требования безопасности при эксплуатации электрокоммуникаций


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

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


4.3 Разработка мер защиты от опасных и вредных факторов


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


Таблица 12 - Меры зашиты от опасных и вредных производственных факторов

Опасные и вредные факторы

Меры защиты

Место расположения

организационные
технические





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

Инструктажи по технике безопасности

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

Системные блоки персональных компьютеров, мониторы

Продолжение таблицы 12

1

2

3

4

Ионизирующее излучение

режим труда и отдыха

Использование защитных экранов, расположение компьютеров по периметру помещения

Персональный компьютер

Электромагнитные излучения

Регламентация рабочего времени

Экранирование электромагнитных полей

Персональный компьютер

Повышенный уровень шума

Рациональное размещение оборудования

Звукопоглощающая облицовка стен, применение звукоизолирующих подвесных потолков

Стены, потолки, перекрытия


4.4 Безопасность жизнедеятельности в чрезвычайных ситуациях


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

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

Подкатегории "В" приведены в таблице 13.


Таблица 13 - Определение подкатегории пожароопасных помещений

Наименование категории

Удельная пожарная нагрузка, МДж/м2

1

2

В1

Более 2200

В2

1401 - 2200

ВЗ

181 - 1401

В4

1 - 181


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

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


Q = тИС Gi Qi ,        (74)

где Q  - пожарная нагрузка, МДж;

Gi - масса i-го материала пожарной нагрузки, кг;

Qi - низшая теплота сгорания i-гo материала, МДж/кг.


Удельная пожарная нагрузка определяется по формуле


q=Q/S,         (75)        


Для помещения площадью S = 24 м2 пожарная нагрузка Q = 2180 МДж. По формуле (75) удельная пожарная нагрузка равна 90,83 МДж/м2. Следовательно, помещение относится к категории В4.

Степень огнестойкости помещений - II. /22/

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


4.5 Инженерная разработка. Расчет защитного зануления персонального компьютера


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

Условия срабатывания защиты


IК = k I,        (76)        

где IК - ток однофазного короткого замыкания, А;

k - коэффициент, принимается в зависимости от типы защиты электроустановки;

I - ток срабатывания автоматического выключателя, А.


Если защита осуществляется автоматическим выключателем, срабатывающем без выдержки времени, то k принимается в пределах 1,25-1,4. Определяем наименьшее допустимое по условиям срабатывания значение тока: IК = 1,25 50 = 62,5 А.

Полное сопротивление трансформатора ZТ = 1,949 Ом.

Вычисляем сопротивление фазного проводника (R, Ом) по формуле


,        (77)        

где ρ - удельное сопротивление проводника, Ом мм2/м;

l - длина проводника, м;

S - сечение проводника, мм2.


Тогда для линии длиной 100 м получаем активное сопротивление фазного проводника

RФ = 0,018 100/2,25 = 0,8 Ом.

Поскольку провод медный, принимаем внутреннее индуктивное сопротивление фазного проводника Хф = 0.

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

Оґ = IK/S = 62,5/(40 2) = 0,78 А/мм2.

Активное сопротивление стального проводника rw=4,2 Ом/км.

Индуктивное сопротивление стального проводника xw=2,52 Ом/км. Тогда для линии длиной 100 м имеем: RН.З = rw l = 4,2 0,1 = 0,42 Ом, XН.З = xw l = 2,52 0,1 = 0,252 Ом.

Определяем внешнее индуктивное сопротивление петли фаза-нуль (Ом/км) по формуле

,        (78)        

где ω - угловая частота, рад с-1;

L - индуктивность линии, Г;

μ - относительная магнитная проницаемость среды;

μ0 = 4π 10-7, Г/м - магнитная постоянная;

l - длина линии, м;

D - расстояние между проводами линии, м.


Получаем: ХП = ХП l = 0,6 0,1 = 0,06 Ом.

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


,         (79)


Согласно формуле (79): = 115 А.

Вывод: поскольку действительное (вычисленное) значение тока однофазного короткого замыкания превышает наименьшее допустимое по условиям срабатывания защиты значение 62,5 А, проводник выбран правильно, т.е. обеспечена отключающая способность системы зануления.

Таким образом, параметры защитного зануления персонального компьютера  в  рассматриваемом  помещение  соответствуют  оптимальным нормам /23/.


5 Охрана природной окружающей среды


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

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

Дипломная работа выполнялась в организации, где используются мониторы, поддерживающие стандарт ТСО-99.


5.1 Стандарты безопасности


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

В недалеком прошлом существовали различные стандарты в области безопасности мониторов различных типов (TCO-92, TCO-95, MPR II), сейчас же  стандарт TCO-99 не только объединил все ранее описанные требования, но и еще более ужесточил их.

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

Требования представлены в таблице 14.


Таблица 14 - Обязательные требования и рекомендации стандарта TCO-99

Параметр

Обязательное требование

Рекомендация

1

2

3

1. Визуальные эргономические требования: требования к четкости изображения

1.3. Линейность

X1

-

1.4. Ортогональность

X

-

1.5.1. Уровень яркости

X

R2

1.5.2. Равномерность яркости

X

R

1.5.3. Контрастность

X

R

1.6. Отражательная способность обрамления экрана и блеск

X

R

1.7.1. Колебания цветовой температуры

X

R

1.7.2 Цветовая однородность и 

характеристики

X

R

2. Визуальные эргономические требования: требования к стабильности изображения

2.1. Периодическое изменение яркости

X

R

2.2. Позиционная неустойчивость (флуктуация)

X

R

3. Факторы внешнего воздействия

3.1. внешние переменные магнитные поля.

X

R

4. Требования к излучениям и энергосбережению

4.1. Рентгеновское излучение

X

R

4.2. Электростатический потенциал

X

-

4.3. Переменное электрическое поле

X

-

4.4. Переменное магнитное поле

X

-

4.5. Энергосбережение

X

R

5. Требования к электрической безопасности

5.1. Электрическая безопасность

X

R

6. Дополнительные характеристики

6.1. Наклон в вертикальной плоскости

-

R

6.2. Регулировка высоты

-

R

6.3. Поворот в горизонтальной плоскости

-

R

6.3. Поворот в горизонтальной плоскости

-

R

6.4. Регулировка яркости и контраста

-

R

6.5. Индикация частоты вертикальной развертки

-

R

6.6. Акустический шум (для ВДТ с вентилятором)

X

R

7. Экологические требования




1. X - характеристики, обязательные для сертификации, которая должна быть проведена аккредитованными лабораториями.

2. R - характеристики, которые не требуются для сертификации в настоящее время, или характеристики, которые могут стать обязательными в будущем.

Также TCO-99 предполагает новые методы проведения тестов. Стандарт TCO-99 распространяется на традиционные CRT мониторы, плоско панельные мониторы (Flat Panel Displays), портативные компьютеры (Laptop и Notebook), системные блоки и клавиатуры. Спецификации TCO-99 содержат в себе требования, взятые из стандартов TCO-95, ISO, IEC и EN, а также из EC Directive 90/270/EEC и Шведского национального стандарта MPR 1990:8 (MPRII) и из более ранних рекомендаций TCO. В разработке стандарта TCO-99 приняли участие TCO, Naturskyddsforeningen и and Statens Energimyndighet (The Swedish National Energy Administration, Шведское Национальное Агентство по Энергетике).


5.2 Эргономические требования


Данные приведены в таблице 15. Требуемые параметры на персональном компьюторе соблюдены (размер диагонали - 17'', разрешение 1280х1024, частота 85 Гц).


Таблица 15 - Соответствие эргономическим требованиям

Размер диагонали ЭЛТ

Частота вертикальной развертки

Разрешение

1

2

3

14-15"

Не менее 85 Гц

не менее 800 x 600

17"

Не менее 85 Гц

не менее 1024 x 768

19-21"

Не менее 85 Гц

не менее 1280 x 1024

Не более 21"

Не менее 85 Гц

не менее 1280 x 1024


Рекомендация: частота вертикальной развертки не менее 100 Гц.


5.3 Стандарты уровней излучения


5.3.1 Требования к электромагнитным излучениям и энергопотреблению


Требования к электромагнитному излучению электронно-лучевых мониторов не изменились, но условия измерений стали более жесткими. Теперь измерения уровней излучения проводятся при частоте кадровой развертки 85 Гц вместо 75 Гц и яркости не меньше 100 кд/м2.


5.3.2 Рентгеновское излучение


Рентгеновское излучение не более 5000 Гр/ч. Рекомендация - не более 300 Гр/ч. Метод измерения: Согласно IEC 60 950 (Приложение H). Оборудование: согласно IEC 60 950. (Погрешность измерений не более В±10%).


5.3.3 Электростатический потенциал


Эквивалентный поверхностный потенциал  не более В±0,5 кВ.


5.3.4 Переменное электрическое поле


Полоса I: 5 Гц-2 кГц, - не более 10 В/м (на расстоянии 30 см перед экраном, 50 см вокруг). Полоса II: 2 кГц-400 кГц, - не более 1.0 В/м (на расстоянии 30 см перед экраном, 50 см вокруг).


5.3.5 Переменное магнитное поле


Полоса I: 5 Гц-2 кГц, - не более 250 нТ (на расстоянии 30 см перед экраном, 50 см вокруг). Полоса II: 2 кГц-400 кГц, - не более 25 нТ (на расстоянии 30 см перед экраном, 50 см вокруг).






5.3.6 Энергосбережение


Энергопотребление в режиме standby  не более 15 Вт. Энергопотребление в режиме off  не более 5 Вт. При выходе из режима standby различимое изображение должно появиться не более чем за три секунды.


5.4 Требования к электрической безопасности


ВДТ должен быть сертифицирован согласно стандарту EN 60950 (IEC 60950) "Безопасность оборудования для информационных технологий, включая бизнес-оборудование". Все компьютер в офисе поддерживают данный стандарт.


5.5 Дополнительные требования


5.5.1 Наклон в вертикальной плоскости


Рекомендация: монитор должен поворачиваться вертикальной плоскости в диапазоне от -5В° до +20В°.


5.5.2 Регулировка высоты


Рекомендация: должна быть возможность поднять или опустить ВДТ как минимум на 110 мм.


5.5.3 Поворот в горизонтальной плоскости


Рекомендация: монитор должен поворачиваться относительно подставки в горизонтальной плоскости на 45В° в каждую сторону (относительно центрального положения).





5.5.4 Регулировка яркости и контраста


Рекомендация: у пользователя должна быть возможность легко изменить яркость и контраст изображения, например, при помощи экранного меню (OSD).


5.5.5 Индикация частоты вертикальной развертки


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


5.5.6 Акустический шум (для ВДТ с вентилятором)


Встроенный вентилятор должен удовлетворять требованиям, предъявляемым к вентиляторам системного блока компьютера. Громкость шума  не более 4,5 бел в режиме Stand-By и не более 5,5 бел в рабочем режиме (1 бел равен 10 децибел).


5.6 Экологические стандарты


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

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

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





5.7 Стандарты пониженного энергопотребления


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

Самым распространенным энергосберегающим нормативом является стандарт Energy Star, предложенный американским Агентством по защите окружающей среды. По стандарту ЕРА Energy Star устройство должно потреблять в неактивном режиме не более 30 Вт электроэнергии. Для выполнения требований стандарта ЕРА Energy Star ассоциацией VESA был разработан специальный стандарт DPMS, программное обеспечение которого имеет функцию поддержки управления экономным потреблением мощности. Стандарт сигнализации системы управления мощностью монитора приведен в таблице 15.



Таблица 15 - Стандарт сигнализации системы управления мощностью монитора

Состояние

Нормальное функциониро-вание

Режим функции сохранения питания

Временный режим

Режим отключения питания

1

2

3

4

Горизонтальная
Вертикальная
Видео

Активна
Активна
Активна

Активна / Не активна
Не активна / Активна
Не используется

Не активный

Не активный
Не используется

Индикатор
(Цвет LED)

Зеленый

Оранжевый

Оранжевый,
Зеленый,

Мигающий (интервал 1 сек)

Потребление мощности

до 80 Вт

Меньше 15 Вт

Меньше
8 Вт


В соответствии со спецификацией VESA монитор может находиться в одном из четырех режимов: On (включен), Stand by ("дежурный", или "ждущий"), Suspend (минимальное потребление электроэнергии) и Off (выключен). Переход на каждый следующий режим происходит после определенного времени не активности, которое задается программно.

Нормы энергосбережения содержатся также в стандарте ТСО-99.


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


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

Утилизация: расширение областей применения компьютерной техники, ее быстрое моральное старение остро ставит вопрос о необходимости разработки новых технологий переработки компьютерного лома.

До недавнего времени при утилизации старых компьютеров происходила их разработка на фракции: металлы, пластмассы, стекло, провода, штекеры. Вторичные ресурсы металлов складываются из лома (3-4 %) и отходов (57 %). Из одной тонны компьютерного лома получают до 200 кг меди, 480Вакг железа и нержавеющей стали, 32 кг алюминия, 3 кг серебра, 1 кг золота и 300 г палладия.

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

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

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

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

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

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

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

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


Выводы


  1. В дипломной работе разработана новая модель оценки уровня риска инвестиционного проекта, сочетающая в себе достоинства уже применяемых в практике моделей.
  2. Для однозначной характеристики уровня риска проекта было предложено использование нечетко-множественной модели принятия решения.
  3. Новая модель использует свертку трех критериев оценки уровня риска проекта: вероятность попадания в зону неэффективности, критерий ликвидности и критерий покрытия, при помощи которых наиболее полно можно охарактеризовать неопределенность существующей информационной среды.
  4. Разработана технология использования нечеткого вывода для принятия решения по оценке уровня риска инвестиционного проекта.
  5. Разработано программно-алгоритмическое обеспечение  расчета значений используемых в модели критериев и объединения их в один общий показатель, характеризующий уровень риска проекта.
  6. Преимущества разработанной модели были показаны при оценке уровня риска  инвестиционного проекта строительства завода труб большого диаметра в Нижнем Тагиле.
  7. В разделе безопасность жизнедеятельности учтено "ияние опасных и вредных факторов и проведен расчет защитного зануления.

Список использованных источников


  1. Савчук В.П. Оценка инвестиционных проектов. - На сайте:
  2. Каблуков В.В. Модели оценки рисков стратегических инвестиционных проектов: ДистАжкандидата экономических наук. - Санкт-Петербург, 1999. - 167 с.
  3. ссылка на сайт удаленаinv_risk_calc.php - БессоновВаД.А. Оценка риска инвестиционного проекта
  4. Абрамов С.И. Инвестирование. - М.: Центр экономики и маркетинга, 2000.
  5. Виленский В.Л., Лифшиц В.Н., Смоляк С.А. Оценка эффективности инвестиционных проектов. Теория и практика. - М. Дело, 2001.
  6. Недосекин О.А. Нечетко-множественный анализ рисков фондовых инвестиций. - СПб.: Сезам, 2003.
  7. Моделирование рисковых  ситуаций  в  экономике и бизнесе / Дубров А.М., ЛагошаВаБ.А., Хрусталев Е.Ю. и др.; Под ред. Б.А.Лагоша; М.: Финансы и статистика, 2001.
  8. Лапуста М.Г., Шаршукова Л.Г. Риски в предпринимательской деятельности. - М.: Инфра, 1998.
  9. ссылка на сайт удаленаfinanalysis/quant_risk.shtml - Дмитриев М.Н., Кошечкин С.А. Количественный анализ риска инвестиционных проектов.
  10. Козинцев Т.О. - Использование техники динамического моделирования в менеджменте процентных рисков. - М.: Диалог-МГУ, 2000.
  11. Заде Л. - Понятие лингвистической переменной и ее применение к принятию приближенных решений, М., Мир, 1976.
  12. Беллман Р., Заде Л. - Принятие решений в расплывчатых условиях // Вопросы анализа и процедуры принятия решения. - М.: Мир, 1976.
  13. Кофман А. - Введение в теорию нечетких множеств. - М.: Радио и связь, 1982.
  14. Кофман А., Хил Алуха Х. - Введение теории нечетких множеств в управлении предприятиями, Минск, Вышэйшая школа, 1992.
  15. ссылка на сайт удаленаsc_group.php - Недосекин О.А. Оценка риска инвестиций по NPV произвольно-нечеткой формы.
  16.   ссылка на сайт удаленаsc_group.php - Недосекин О.А., Кокош А.М. Оценка риска инвестиций для произвольно-размытых факторов инвестиционного проекта.
  17. Смирнов А.П., Якунин А.Г.. Модель управления операциями участка "сталь-прокат» в классе нечетких систем // Черная металлургия.  - 2001. - №3.
  18. Прикладные нечеткие системы: пер. с япон. / К.Асаи, Д.Ватада, С.Иваи и др.; под. ред. Т.Тэрано, К.Асаи, М.Сугэно. - М.: Мир, 1993.
  19. Бабайцев И.В., Варенков А.Н., Потоцкий Е.П. Безопасность жизнедеятельности и экология в дипломной работе. Учебное пособие. - М.: мисис, 1997.
  20. ГОСТ 12.0.003-74. Опасные и вредные производственные факторы. Классификация. - М.: Издательство стандартов, 1975.
  21. СНиП 2.01.02-85. Противопожарные нормы. - М.: Стройиздат, 1986.
  22. НПБ 105-95. Определение категорий помещений и зданий по взрывопожарной и пожарной опасности. М.:МВД РФ. Государственная противопожарная служба, 1995.
  23. ГОСТ 12.1.030-81. Электробезопасность. Защитное заземление. Зануление. - М.: Издательство стандартов, 1981.
  24. СанПиН 2.2.542-96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы. - М.: Госкомсанэпиднадзор России, 1996.
  25. Учебное пособие по разделам "Безопасность жизнедеятельности» и "Охрана окружающей природной среды» в дипломной работе / под ред. проф. Б.С.Мастрюкова - М.: мисис, 2000.

Приложение Б. Текст программы

unit datamodul;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, StdCtrls, ExtCtrls, ComCtrls, Spin, Menus;

type

  TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    Panel1: TPanel;

    Label1: TLabel;

    Label2: TLabel;

    SpinEdit1: TSpinEdit;

    Label3: TLabel;

    Edit1: TEdit;

    StringGrid1: TStringGrid;

    Label4: TLabel;

    StringGrid2: TStringGrid;

    Label5: TLabel;

    StringGrid3: TStringGrid;

    CheckBox1: TCheckBox;

    StringGrid4: TStringGrid;

    Label6: TLabel;

    N6: TMenuItem;

    N7: TMenuItem;

    N8: TMenuItem;

    SaveDialog1: TSaveDialog;

    OpenDialog1: TOpenDialog;

    Label7: TLabel;

    Edit2: TEdit;

    N5: TMenuItem;

    N9: TMenuItem;

    GroupBox1: TGroupBox;

    Label8: TLabel;

    Edit3: TEdit;

    Label9: TLabel;

    Edit4: TEdit;

    Button1: TButton;

    procedure FormCreate(Sender: TObject);

    procedure SpinEdit1Change(Sender: TObject);

    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid4KeyPress(Sender: TObject; var Key: Char);

    procedure CheckBox1Click(Sender: TObject);

    procedure N8Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure Edit2KeyPress(Sender: TObject; var Key: Char);

    procedure N5Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  i,j,n,nRt : integer; {циклич.пер-е, кол-во ПУП,кол-во ПУП для рассчета Rt}

  Ir,G : real;  {соб.кап "ожения для Rt, критерий эффективности}

  Ip : array[1..3] of real; {макс. и мин-е значение первонач.кап.вложений}

  RSvar,Rdvar,Vt : array[1..20] of real;{реальное значение Si и di для подсчета Rt, кр.риска}

  dvar : array[1..3,1..20] of real; {безриск.%ставка 1-я строка - мин, 2 - макс.}

  Svar,NPVvar,Rt : array[1..3,1..20] of real; {интервалы ден.потоков 1 строка - мин,2 - сред.зн.,3 - макс,NPV-массив,кр.ликвидности}

  At,Zt,Ct : array[1..2,1..20] of real; {соб,заем средства, кр.покрытия 1- мин, 2- макс}

  mCt,mVt,mRt : array[1..4,1..20] of real; {массивы функций принадлежностей к риску}

  kCt,kVt,kRt,kre : array[1..3] of real; {массивы верхних границ весов для оценки риска, 1- минимальный, 4 - недопустимый}

implementation


uses Rtmodul, Rezaltmodul, Formirmodul, mmodul, Rulermodul;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

   n:=SpinEdit1.Value;

   StringGrid1.ColCount:=n;

   StringGrid2.ColCount:=n;

   StringGrid3.ColCount:=n;

   StringGrid4.ColCount:=n;

   Checkbox1.Checked:=false;

   kCt[1]:=0.25;kCt[2]:=0.5;kCt[3]:=0.75;

   kRt[1]:=0.25;kRt[2]:=0.5;kRt[3]:=0.75;

   kVt[1]:=0.05;kVt[2]:=0.1;kVt[3]:=0.2;

   kre[1]:=0.25;kre[2]:=0.5;kre[3]:=0.75;

   for j:=0 to n-1 do begin

       StringGrid1.Cells[j,0]:=IntToStr(j+1);

       StringGrid2.Cells[j,0]:=IntToStr(j+1);

       StringGrid3.Cells[j,0]:=IntToStr(j+1);

       StringGrid4.Cells[j,0]:=IntToStr(j+1);

       RSvar[j+1]:=0;Rdvar[j+1]:=0;

   end;

   Rtkey:=false; Ir:=0;nRt:=0;

end;


procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

  n:=SpinEdit1.Value; CheckBox1.Checked:=false;

  Form4.StringGrid1.ColCount:=n+1;  Form4.StringGrid2.ColCount:=n+1;  Form2.SpinEdit1.Value:=n;

  Form3.StringGrid1.RowCount:=n+1;  Form3.StringGrid2.RowCount:=n+1;

  StringGrid1.ColCount:=n; StringGrid2.ColCount:=n; StringGrid3.ColCount:=n; StringGrid4.ColCount:=n;

    for j:=0 to n-1 do begin

       StringGrid1.Cells[j,0]:=IntToStr(j+1); StringGrid2.Cells[j,0]:=IntToStr(j+1); StringGrid3.Cells[j,0]:=IntToStr(j+1);

       StringGrid4.Cells[j,0]:=IntToStr(j+1);

       Form3.StringGrid1.Cells[0,j+1]:=IntToStr(j+1);Form3.StringGrid2.Cells[0,j+1]:=IntToStr(j+1);

       Form4.StringGrid1.Cells[j+1,0]:=IntToStr(j+1); Form4.StringGrid2.Cells[j+1,0]:=IntToStr(j+1);

   end;

end;


procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(59),chr(44),chr(8):;

else key:=chr(0); end;

end;


procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);

begin

  Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(59),chr(44),chr(8):;

   else key:=chr(0);   end;

end;


procedure TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);

begin

   Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(59),chr(44),chr(8):;

   else key:=chr(0);end;

end;

procedure TForm1.StringGrid4KeyPress(Sender: TObject; var Key: Char);

begin

  Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(59),chr(44),chr(8):;

   else key:=chr(0);end;

end;


procedure TForm1.CheckBox1Click(Sender: TObject);

begin

    case CheckBox1.State of

       cbChecked:   begin

                                     StringGrid4.ColCount:=1; Stringgrid4.RowCount:=1; StringGrid4.FixedCols:=0; StringGrid4.FixedRows:=0;

                            end;

       cbUnchecked: begin

                       StringGrid4.ColCount:=n; Stringgrid4.RowCount:=2; StringGrid4.FixedCols:=0; StringGrid4.FixedRows:=1;

                       For j:=1 to n do begin  StringGrid4.Cells[j-1,0]:=IntToStr(j); end;

                               end;

   end;

end;


procedure TForm1.N8Click(Sender: TObject);

var

str,str2,str3 : string;

k,ii,iv,re : integer;

Cto,Rto : array[1..20] of real; // массивы обобщенных значений Ct и Rt

smax,smin,sav,min,A1,A2,B1,B2,C1,C2,K1,K2,vr,vrz,vrch,mvr1,mvr2,mvr3,mvr4 : real;

begin

//-------------------------------ввод критерия эффективности

      try G:=StrToFloat(Edit2.Text);

      Except G:=0;Edit2.Text:=IntToStr(0); end;

//-------------------------------ввод первонач. ден кап

      str:=Edit1.Text;

      if pos(';',str)<>0 then begin str2:=''; k:=1;

                              for i:=1 to Length(str) do begin

                                           if (str[i]<>';') then str2:=str2+str[i]

                                                            else begin

                                                                Ip[k]:=StrToFloat(str2);

                                                                str2:='';

                                                                k:=k+1;

                                                            end;

                                           if i=Length(str) then Ip[k]:=StrToFloat(str2);

                              end;

      end else begin

                 try

                    Ip[1]:=StrToFloat(str); Ip[2]:=StrToFloat(str); Ip[3]:=StrToFloat(str);

                 except

                    showmessage('Ошибка при вводе значения первоначальных капиталовложений!'); FocusControl(Edit1);

                 end;

               end;

//------------------------------ввод массива денежных потоков:

      for j:=0 to n-1 do begin

         str:=StringGrid1.Cells[j,1];

         if pos(';',str)<>0 then begin str2:='';k:=1;

                                       for i:=1 to Length(str)do begin

                                           if (str[i]<>';') then str2:=str2+str[i]

                                                            else begin

                                                                Svar[k,j+1]:=StrToFloat(str2);

                                                                k:=k+1;str2:='';

                                                            end;

                                           if i=Length(str) then Svar[k,j+1]:=StrToFloat(str2);

                                       end;

         end else try

                    Svar[1,j+1]:=StrToFloat(str); Svar[2,j+1]:=StrToFloat(str); Svar[3,j+1]:=StrToFloat(str);

                  except

                    showmessage('Ошибка при вводе значений интервалов денежных потоков!'); FocusControl(Stringgrid1);

                  end;

      end;

//----------------------------ввод массива соб.и заем. средств

      for j:=0 to n-1 do begin

         str:=StringGrid2.Cells[j,1];

         str3:=StringGrid3.Cells[j,1];

         if pos(';',str)<>0 then begin str2:='';k:=1;

                                       for i:=1 to Length(str)do begin

                                           if (str[i]<>';') then str2:=str2+str[i]

                                                            else begin

                                                                At[k,j+1]:=StrToFloat(str2);

                                                                k:=k+1;str2:='';

                                                            end;

                                           if i=Length(str) then At[k,j+1]:=StrToFloat(str2);

                                       end;

         end else try

                    At[1,j+1]:=StrToFloat(str);

                    At[2,j+1]:=StrToFloat(str);

                  except

                    showmessage('Ошибка при вводе значений собственных средств!');

                    FocusControl(StringGrid2);

                  end;

         if pos(';',str3)<>0 then begin str2:='';k:=1;

                                       for i:=1 to Length(str3)do begin

                                           if (str3[i]<>';') then str2:=str2+str3[i]

                                                            else begin

                                                                Zt[k,j+1]:=StrToFloat(str2);

                                                                k:=k+1;str2:='';

                                                            end;

                                           if i=Length(str3) then Zt[k,j+1]:=StrToFloat(str2);

                                       end;

         end else try

                    Zt[1,j+1]:=StrToFloat(str3);

                    Zt[2,j+1]:=StrToFloat(str3);

                  except

                    showmessage('Ошибка при вводе значений заемных средств!');

                    FocusControl(StringGrid3);

                  end;

      end;

//------------------------Ввод массива безриск.% ставки

      case CheckBox1.State of

       cbChecked:   begin

                    str:=StringGrid4.Cells[0,0];

                    if pos(';',str)<>0 then begin str2:='';k:=1;

                                            for i:=1 to Length(str)do begin

                                               if (str[i]<>';') then str2:=str2+str[i]

                                                                else begin

                                                                  dvar[k,1]:=StrToFloat(str2);

                                                                  k:=k+1;str2:='';

                                                                end;

                                               if i=Length(str) then dvar[k,1]:=StrToFloat(str2);

                                            end;

                    end else begin try

                              dvar[1,1]:=StrToFloat(str);

                              dvar[2,1]:=StrToFloat(str);

                              dvar[3,1]:=StrToFloat(str);

                             except

                                showmessage('Ошибка при вводе значения безрисковой процентной ставки!');

                                FocusControl(Stringgrid4);

                             end;  end;


                    for i:=2 to n do begin

                           dvar[1,i]:=dvar[1,1];

                           dvar[2,i]:=dvar[2,1];

                           dvar[3,i]:=dvar[2,1];

                    end;

       end;

       cbUnchecked: begin

                    for j:=0 to n-1 do begin

                        str:=StringGrid4.Cells[j,1];

                        if pos(';',str)<>0 then begin str2:='';k:=1;

                                                for i:=1 to Length(str)do begin

                                                    if (str[i]<>';') then str2:=str2+str[i]

                                                                     else begin

                                                                          dvar[k,j+1]:=StrToFloat(str2);

                                                                          k:=k+1;str2:='';

                                                                     end;

                                                    if i=Length(str) then dvar[k,j+1]:=StrToFloat(str2);

                                                end;

                        end else try

                                   dvar[1,j+1]:=StrToFloat(str);

                                   dvar[2,j+1]:=StrToFloat(str);

                                   dvar[3,j+1]:=StrToFloat(str);

                                 except

                                   showmessage('Ошибка при вводе значений безрисковой процентной ставки!');

                                   FocusControl(Stringgrid4);

                                 end;

                    end;

    end;end;

//------------------------------Рассчет значения коэф-та покрытия Сt

   for i:=1 to n do begin

     Ct[1,i]:=1;

     Ct[2,i]:=1;

   end;

   for i:=1 to n do begin

     if Zt[2,i]<>0 then Ct[1,i]:=At[1,i]/Zt[2,i];

     if Zt[1,i]<>0 then Ct[2,i]:=At[2,i]/Zt[1,i];

     j:=3;

     if (Ct[1,i]*Ct[2,i])<=(kCt[1]*kCt[1]) then Cto[i]:=(Ct[1,i]*Ct[2,i])/(kCt[1]*kCt[1]);

     if ((Ct[1,i]*Ct[2,i])>(kCt[1]*kCt[1]))and (Ct[1,i]*Ct[2,i]<=(kCt[2]*kCt[2]))then  j:=0;

     if ((Ct[1,i]*Ct[2,i])>(kCt[2]*kCt[2]))and (Ct[1,i]*Ct[2,i]<=(kCt[3]*kCt[3])) then j:=1;

     if ((Ct[1,i]*Ct[2,i])>(kCt[3]*kCt[3]))and (Ct[1,i]*Ct[2,i]<1) then j:=2;

     if (Ct[1,i]*Ct[2,i]>=1) then Cto[i]:=1;

     if (j = 0) or (j = 1) then

     Cto[i]:=kCt[1+j]+((((Ct[1,i]*Ct[2,i])-(kCt[1+j]*kCt[1+j]))*(kCt[2+j]-kCt[1+j]))/((kCt[2+j]*kCt[2+j])-(kCt[1+j]*kCt[1+j])));

     if j = 2 then

     Cto[i]:=kCt[1+j]+((((Ct[1,i]*Ct[2,i])-(kCt[1+j]*kCt[1+j]))*(1-kCt[1+j]))/(1-(kCt[1+j]*kCt[1+j])));

   end;

   for i:=1 to n do begin

       for j:=1 to 3 do begin

           NPVvar[j,i]:=0;

       end;

   end;


//------------------------------Рассчет инервалов NPVt

   if Rtkey=false then begin

                  for ii:=1 to n do begin

                      for i:=1 to ii do begin

                          smin:=1;smax:=1;sav:=1;

                          for j:=1 to i do begin  smax:=smax*dvar[1,i];

                                                  smin:=smin*dvar[3,i];

                                                  sav:=sav*dvar[2,i];

                                           end;

                          NPVvar[3,ii]:=NPVvar[3,ii]+(Svar[3,i]/smax);

                          NPVvar[1,ii]:=NPVvar[1,ii]+(Svar[1,i]/smin);

                          NPVvar[2,ii]:=NPVvar[2,ii]+(Svar[2,i]/sav);

                      end;

                      NPVvar[1,ii]:=NPVvar[1,ii]-Ip[3];

                      NPVvar[2,ii]:=NPVvar[2,ii]-Ip[2];

                      NPVvar[3,ii]:=NPVvar[3,ii]-Ip[1];

                  end;

   end else begin

                 for ii:=1 to nRt do begin

                      for i:=1 to ii do begin

                          smax:=1;

                          for j:=1 to i do begin smax:=smax*Rdvar[i];end;

                          NPVvar[3,ii]:=NPVvar[3,ii]+(RSvar[i]/smax);

                      end;

                      NPVvar[1,ii]:=NPVvar[3,ii]-Ir;

                      NPVvar[2,ii]:=NPVvar[3,ii]-Ir;

                      NPVvar[3,ii]:=NPVvar[3,ii]-Ir;

                  end;

                  for ii:=nRt+1 to n do begin

                      for i:=1 to nRt do begin

                          smax:=1;

                          for j:=1 to i do begin smax:=smax*Rdvar[i];end;

                          NPVvar[3,ii]:=NPVvar[3,ii]+(RSvar[i]/smax);

                      end;

                      NPVvar[2,ii]:=NPVvar[3,ii];

                      NPVvar[1,ii]:=NPVvar[3,ii];

                      for i:=nRt+1 to ii do begin

                          smin:=1;smax:=1;sav:=1;

                          for j:=1 to i do begin  smax:=smax*dvar[1,i];

                                                  smin:=smin*dvar[3,i];

                                                  sav:=sav*dvar[2,i];

                          end;

                          NPVvar[3,ii]:=NPVvar[3,ii]+(Svar[3,i]/smax);

                          NPVvar[1,ii]:=NPVvar[1,ii]+(Svar[1,i]/smin);

                          NPVvar[2,ii]:=NPVvar[2,ii]+(Svar[2,i]/sav);

                      end;

                      NPVvar[1,ii]:=NPVvar[1,ii]-Ir;

                      NPVvar[2,ii]:=NPVvar[2,ii]-Ir;

                      NPVvar[3,ii]:=NPVvar[3,ii]-Ir;

                  end;

   end;

//------------------------------Рассчет значения коэффициента риска Vt

   for i:=1 to n do begin

       if (NPVvar[3,i]=NPVvar[1,i]) or (NPVvar[2,i]=NPVvar[1,i]) or (NPVvar[3,i]=NPVvar[2,i]) then begin

            if (NPVvar[1,i]>G) then Vt[i]:=0;

            if (NPVvar[1,i]<=G) and (NPVvar[3,i]>=G) then Vt[i]:=(G-NPVvar[1,i])/(NPVvar[3,i]-NPVvar[1,i]);

            if (NPVvar[3,i]<G) then Vt[i]:=1;

       end else begin

            smin:=(G-NPVvar[1,i])/(NPVvar[3,i]-NPVvar[1,i]);

            if G<NPVvar[1,i] then Vt[i]:=0;

            if (G>=NPVvar[1,i]) and (G<NPVvar[2,i]) then begin

                     smax:=(G-NPVvar[1,i])/(NPVvar[2,i]-NPVvar[1,i]);

                     Vt[i]:=smin*(1+((1-smax)/smax)*Ln(1-smax));

            end;

            if (G>=NPVvar[2,i]) and (G<NPVvar[3,i]) then begin

                     if G=NPVvar[2,i] then smax:=1 else smax:=(NPVvar[3,i]-G)/(NPVvar[3,i]-NPVvar[2,i]);

                     Vt[i]:=1-((1-smin)*(1+((1-smax)/smax)*Ln(1-smax)));

            end;

            if G>=NPVvar[3,i] then Vt[i]:=1;

       end;

   end;


//-----------------------------Рассчет значения коэ-та ликвидности Rt


   For i:=1 to n do begin

       Rt[1,i]:=1;Rto[i]:=1;

       Rt[2,i]:=1;

   end;

//-----------------------------рассчет прогнозного занчения NPV и Rt

if Rtkey=true then begin

   for ii:=1 to n do begin

         NPVpmin:=0;NPVpmax:=0;NPVpav:=0;

         for i:=1 to ii do begin

             smin:=1;smax:=1;sav:=1;

             for j:=1 to i do begin smin:=smin*dvar[3,i];smax:=smax*dvar[1,i];sav:=sav*dvar[2,i];end;

             NPVpmax:=NPVpmax+(Svar[3,i]/smax);

             NPVpmin:=NPVpmin+(Svar[1,i]/smin);

             NPVpav:=NPVpav+(Svar[2,i]/sav);

         end;

         NPVpmin:=NPVpmin-Ip[3];

         if NPVpmin<>0 then Rt[1,ii]:=NPVvar[1,ii]/NPVpmin;

         NPVpmax:=NPVpmax-Ip[1];

         if NPVpmax<>0 then Rt[3,ii]:=NPVvar[3,ii]/NPVpmax;

         NPVpav:=NPVpav-Ip[2];

         if NPVpav<>0 then Rt[2,ii]:=NPVvar[2,ii]/NPVpav;

         if (NPVpmin<=0) and (NPVvar[1,ii]>=0) then Rt[1,ii]:=1;

         if (NPVpmax<=0) and (NPVvar[3,ii]>=0) then Rt[3,ii]:=1;

         if (NPVpav<=0) and (NPVvar[2,ii]>=0)  then Rt[2,ii]:=1;

         if (NPVpmin>=0) and (NPVvar[1,ii]<0) then Rt[1,ii]:=0;

         if (NPVpmax>=0) and (NPVvar[3,ii]<0) then Rt[3,ii]:=0;

         if (NPVpav>=0) and (NPVvar[2,ii]<0)  then Rt[2,ii]:=0;

   end;

   for i:=1 to n do begin

     j:=3;

     if (Rt[1,i]*Rt[2,i]*Rt[3,i])<=(kRt[1]*kRt[1]*kRt[1]) then Rto[i]:=(Rt[1,i]*Rt[2,i]*Rt[3,i])/(kRt[1]*kRt[1]);

     if ((Rt[1,i]*Rt[2,i]*Rt[3,i])>(kRt[1]*kRt[1]*kRt[1]))and (Rt[1,i]*Rt[2,i]*Rt[3,i]<=(kRt[2]*kRt[2]*kRt[2]))then  j:=0;

     if ((Rt[1,i]*Rt[2,i]*Rt[3,i])>(kRt[2]*kRt[2]*kRt[2]))and (Rt[1,i]*Rt[2,i]*Rt[3,i]<=(kRt[3]*kRt[3]*kRt[3])) then j:=1;

     if ((Rt[1,i]*Rt[2,i]*Rt[3,i])>(kRt[3]*kRt[3]*kRt[3]))and (Rt[1,i]*Rt[2,i]*Rt[3,i]<1) then j:=2;

     if (Rt[1,i]*Rt[2,i]*Rt[3,i]>=1) then Rto[i]:=1;

     if (j = 0) or (j = 1) then

     Rto[i]:=kRt[1+j]+((((Rt[1,i]*Rt[2,i]*Rt[3,i])-(kRt[1+j]*kRt[1+j]*kRt[1+j]))*(kRt[2+j]-kRt[1+j]))/((kRt[2+j]*kRt[2+j]*kRt[2+j])-(kRt[1+j]*kRt[1+j]*kRt[1+j])));

     if j = 2 then

     Rto[i]:=kRt[1+j]+((((Rt[1,i]*Rt[2,i]*Rt[3,i])-(kRt[1+j]*kRt[1+j]*kRt[1+j]))*(1-kRt[1+j]))/(1-(kRt[1+j]*kRt[1+j]*kRt[1+j])));

   end;

end;


   for i:=1 to n do begin

//----------------------------------Значения ф. принадлежности для Сt

       if Cto[i]<=((kCt[2]+kCt[3])/2) then mCt[1,i]:=0;

       if (Cto[i]>((kCt[2]+kCt[3])/2)) and (Cto[i]<kCt[3]) then mCt[1,i]:=(2*Cto[i]-kCt[2]-kCt[3])/(kCt[3]-kCt[2]);

       if Cto[i]>=kCt[3] then mCt[1,i]:=1;


       if (Cto[i]<=((kCt[1]+kCt[2])/2)) or (Cto[i]>=((kCt[3]+1)/2)) then mCt[2,i]:=0;

       if (Cto[i]>((kCt[1]+kCt[2])/2)) and (Cto[i]<((kCt[2]+kCt[3])/2)) then mCt[2,i]:=(2*Cto[i]-kCt[1]-kCt[2])/(kCt[3]-kCt[1]);

       if (Cto[i]>=((kCt[2]+kCt[3])/2)) and (Cto[i]<=((kCt[3]+1)/2)) then mCt[2,i]:=1-((2*Cto[i]-kCt[2]-kCt[3])/(1-kCt[2]));


       if (Cto[i]<=(kCt[1]/2)) or (Cto[i]>((kCt[2]+kCt[3])/2)) then mCt[3,i]:=0;

       if (Cto[i]>(kCt[1]/2)) and (Cto[i]<((kCt[1]+kCt[2])/2)) then mCt[3,i]:=(2*Cto[i]-kCt[1])/(kCt[2]);

       if (Cto[i]>=((kCt[1]+kCt[2])/2)) and (Cto[i]<=((kCt[2]+kCt[3])/2)) then mCt[3,i]:=1-(2*Cto[i]-kCt[1]-kCt[2])/(kCt[3]-kCt[1]);


       if Cto[i]>=((kCt[1]+kCt[2])/2) then mCt[4,i]:=0;

       if (Cto[i]<((kCt[1]+kCt[2])/2)) and (Cto[i]>kCt[1]) then mCt[4,i]:=1-(2*(Cto[i]-kCt[1])/(kCt[2]-kCt[1]));

       if Cto[i]<=kCt[1] then mCt[4,i]:=1;

//----------------------------------Значения ф. принадлежности для Rt

       if Rto[i]<=((kRt[2]+kRt[3])/2) then mRt[1,i]:=0;

       if (Rto[i]>((kRt[2]+kRt[3])/2)) and (Rto[i]<kRt[3]) then mRt[1,i]:=(2*Rto[i]-kRt[2]-kRt[3])/(kRt[3]-kRt[2]);

       if Rto[i]>=kRt[3] then mRt[1,i]:=1;


       if (Rto[i]<=((kRt[1]+kRt[2])/2)) or (Rto[i]>=((kRt[3]+1)/2)) then mRt[2,i]:=0;

       if (Rto[i]>((kRt[1]+kRt[2])/2)) and (Rto[i]<((kRt[2]+kRt[3])/2)) then mRt[2,i]:=(2*Rto[i]-kRt[1]-kRt[2])/(kRt[3]-kRt[1]);

       if (Rto[i]>=((kRt[2]+kRt[3])/2)) and (Rto[i]<=((kRt[3]+1)/2)) then mRt[2,i]:=1-((2*Rto[i]-kRt[2]-kRt[3])/(1-kRt[2]));


       if (Rto[i]<=(kRt[1]/2)) or (Rto[i]>=((kRt[2]+kRt[3])/2)) then mRt[3,i]:=0;

       if (Rto[i]>=(kRt[1]/2)) and (Rto[i]<((kRt[1]+kRt[2])/2)) then mRt[3,i]:=(2*Rto[i]-kRt[1])/(kRt[2]);

       if (Rto[i]>=((kRt[1]+kRt[2])/2)) and (Rto[i]<((kRt[2]+kRt[3])/2)) then mRt[3,i]:=1-((2*Rto[i]-kRt[1]-kRt[2])/(kRt[3]-kRt[1]));


       if Rto[i]>=((kRt[1]+kRt[2])/2) then mRt[4,i]:=0;

       if (Rto[i]<((kRt[1]+kRt[2])/2)) and (Rto[i]>kRt[1]) then mRt[4,i]:=1-(2*(Rto[i]-kRt[1])/(kRt[2]-kRt[1]));

       if Rto[i]<=kRt[1] then mRt[4,i]:=1;

//----------------------------------Значения ф. принадлежности для Vt

       if Vt[i]<=((kVt[2]+kVt[3])/2) then mVt[4,i]:=0;

       if (Vt[i]>((kVt[2]+kVt[3])/2)) and (Vt[i]<kVt[3]) then mVt[4,i]:=(2*Vt[i]-kVt[2]-kVt[3])/(kVt[3]-kVt[2]);

       if Vt[i]>=kVt[3] then mVt[4,i]:=1;


       if (Vt[i]<=((kVt[1]+kVt[2])/2)) or (Vt[i]>=((kVt[3]+1)/2)) then mVt[3,i]:=0;

       if (Vt[i]>((kVt[1]+kVt[2])/2)) and (Vt[i]<((kVt[2]+kVt[3])/2)) then mVt[3,i]:=(2*Vt[i]-kVt[1]-kVt[2])/(kVt[3]-kVt[1]);

       if (Vt[i]<((kVt[3]+1)/2)) and (Vt[i]>((kVt[2]+kVt[3])/2)) then mVt[3,i]:=1-((2*Vt[i]-kVt[2]-kVt[3])/(1-kVt[2]));


       if (Vt[i]<=(kVt[1]/2)) or (Vt[i]>=((kVt[2]+kVt[3])/2)) then mVt[2,i]:=0;

       if (Vt[i]>(kVt[1]/2)) and (Vt[i]<((kVt[1]+kVt[2])/2)) then mVt[2,i]:=(2*Vt[i]-kVt[1])/(kVt[2]);

       if (Vt[i]>=((kVt[1]+kVt[2])/2)) and (Vt[i]<=((kVt[2]+kVt[3])/2)) then mVt[2,i]:=1-((2*Vt[i]-kVt[1]-kVt[2])/(kVt[3]-kVt[1]));


       if Vt[i]>=((kVt[1]+kVt[2])/2) then mVt[1,i]:=0;

       if (Vt[i]<((kVt[1]+kVt[2])/2)) and (Vt[i]>kVt[1]) then mVt[1,i]:=1-(2*(Vt[i]-kVt[1])/(kVt[2]-kVt[1]));

       if Vt[i]<=kVt[1] then mVt[1,i]:=1;

   end;

//-----------------------------Вывод значений

   For i:=1 to n do begin

       str:='('+FloatToStrF(Ct[1,i],ffFixed,9,2)+';  '+FloatToStrF(Ct[2,i],ffFixed,9,2)+')';

       Form3.StringGrid1.Cells[1,i]:=str;

       Form3.StringGrid1.Cells[4,i]:=FloatToStrF(Vt[i],ffFixed,9,2);

       str:='('+FloatToStrF(NPVvar[1,i],ffFixed,9,2)+';  '+FloatToStrF(NPVvar[2,i],ffFixed,9,2)+';  '+FloatToStrF(NPVvar[3,i],ffFixed,9,2)+')';

       Form3.StringGrid1.Cells[2,i]:=str;

       str:='('+FloatToStrF(Rt[1,i],ffFixed,9,2)+';  '+FloatToStrF(Rt[2,i],ffFixed,9,2)+';  '+FloatToStrF(Rt[3,i],ffFixed,9,2)+')';

       Form3.StringGrid1.Cells[3,i]:=str;

   end;

   for j:=1 to n do begin

//      Form3.StringGrid2.Cells[1,j]:=FloatToStr(Cto[j]);

//       Form3.StringGrid2.Cells[2,j]:=FloatToStr(Rto[j]);

      k:=1; ii:=1;iv:=1;

      for i:=2 to 4 do begin

          if  mCt[i-1,j]<mCt[i,j] then k:=i;

          if  mRt[i-1,j]<mRt[i,j] then ii:=i;

          if  mVt[i-1,j]<mVt[i,j] then iv:=i;

      end;

      if k=1 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-минимальный';

      if k=2 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-повышенный';

      if k=3 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-критический';

      if k=4 then Form3.StringGrid2.Cells[1,j]:=FloatToStrF(mCt[k,j],ffFixed,9,2)+'-недопустимый';

      if ii=1 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-минимальный';

      if ii=2 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-повышенный';

      if ii=3 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-критический';

      if ii=4 then Form3.StringGrid2.Cells[2,j]:=FloatToStrF(mRt[ii,j],ffFixed,9,2)+'-недопустимый';

      if iv=1 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-минимальный';

      if iv=2 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-повышенный';

      if iv=3 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-критический';

      if iv=4 then Form3.StringGrid2.Cells[3,j]:=FloatToStrF(mVt[iv,j],ffFixed,9,2)+'-недопустимый';


//----------------------------------Рассчет общего риска проекта

      re:=TR[iv,k,ii];

      min:=mVt[iv,j];

      if mRt[ii,j]<min then min:=mRt[ii,j];

      if mCt[k,j]<min then min:=mCt[k,j];

      if re=1 then begin

         A1:=0;B1:=0;K1:=0;C1:=0;

         C2:=(((1-min)*(kre[2]-kre[1]))+2*kre[1])/2;

         K2:=(kre[1]+kre[2])/2;

         A2:=(-2/(kre[2]-kre[1]));

         B2:=1+((2*kre[1])/(kre[2]-kre[1]));

      end;

      if re=2 then begin

         A1:=2/kre[2];

         B1:=-kre[1]/kre[2];

         K1:=kre[1]/2;

         C1:=((min*kre[2])+kre[1])/2;

         C2:=(((1-min)*kre[3])+kre[2]+(min*kre[1]))/2;

         K2:=(kre[2]+kre[3])/2;

         A2:=(-2/(kre[3]-kre[1]));

         B2:=1+((kre[1]+kre[2])/(kre[3]-kre[1]));

      end;

      if re=3 then begin

         A1:=2/(kre[3]-kre[1]);

         B1:=-(kre[1]+kre[2])/(kre[3]-kre[1]);

         K1:=(kre[1]+kre[2])/2;

         C1:=((min*(kre[3]-kre[1]))+kre[1]+kre[2])/2;

         C2:=(((1-min)*(1-kre[2]))+kre[3]+kre[2])/2;

         K2:=(kre[3]+1)/2;

         A2:=(-2/(1-kre[2]));

         B2:=1-((kre[2]+kre[3])/(1-kre[2]));

      end;

      if re=4 then begin

         A1:=(2/(kre[3]-kre[2]));

         B1:=-(kre[2]+kre[3])/(kre[3]-kre[2]);

         K1:=(kre[2]+kre[3])/2;

         C1:=((min*(kre[3]-kre[2]))+kre[2]+kre[3])/2;

         C2:=1;K2:=0;A2:=0;B2:=0;

      end;

      vrch:=(A1*((C1*C1*C1)-(K1*K1*K1))/3);

      vrch:=vrch+((B1*((C1*C1)-(K1*K1)))/2);

      vrch:=vrch+(min*((C2*C2)-(C1*C1))/2);

      vrch:=vrch+(A2*(((K2*K2*K2)-(C2*C2*C2)))/3)+(B2*((K2*K2)-(C2*C2))/2);

      vrz:=(A1*((C1*C1)-(K1*K1))/2);

      vrz:=vrz+(B1*(C1-K1));

      vrz:=vrz+(min*(C2-C1));

      vrz:=vrz+(A2*((K2*K2)-(C2*C2))/2)+(B2*(K2-C2));

      vr:=vrch/vrz;

//----------------------

     if TR[iv,k,ii]=1 then begin

       if (vr<=(kre[1]/2)) or (vr>=((kre[2]+kre[3])/2)) then mvr2:=0;

       if (vr>(kre[1]/2)) and (vr<((kre[1]+kre[2])/2)) then mvr2:=(2*vr-kre[1])/(kre[2]);

       if (vr>=((kre[1]+kre[2])/2)) and (vr<=((kre[2]+kre[3])/2)) then mvr2:=1-((2*vr-kre[1]-kre[2])/(kre[3]-kre[1]));


       if vr>=((kre[1]+kre[2])/2) then mvr1:=0;

       if (vr<((kre[1]+kre[2])/2)) and (vr>C2) then mvr1:=1-(2*(vr-kre[1])/(kre[2]-kre[1]));

       if vr<=C2 then mvr1:=min;

       if mvr2>mvr1 then re:=2;

     end;

     if TR[iv,k,ii]=2 then begin

       if (vr<=((kre[1]+kre[2])/2)) or (vr>=((kre[3]+1)/2)) then mvr3:=0;

       if (vr>((kre[1]+kre[2])/2)) and (vr<((kre[2]+kre[3])/2)) then mvr3:=(2*vr-kre[1]-kre[2])/(kre[3]-kre[1]);

       if (vr<((kre[3]+1)/2)) and (vr>((kre[2]+kre[3])/2)) then mvr3:=1-((2*vr-kre[2]-kre[3])/(1-kre[2]));


       if (vr<=(kre[1]/2)) or (vr>=((kre[2]+kre[3])/2)) then mvr2:=0;

       if (vr>(kre[1]/2)) and (vr<C1) then mvr2:=(2*vr-kre[1])/(kre[2]);

       if (vr>=C1) and (vr<=C2) then mvr2:=min;

       if (vr>=C2) and (vr<((kre[2]+kre[3])/2)) then mvr2:=1-((2*vr-kre[1]-kre[2])/(kre[3]-kre[1]));


       if vr>=((kre[1]+kre[2])/2) then mvr1:=0;

       if (vr<((kre[1]+kre[2])/2)) and (vr>kre[1]) then mvr1:=1-(2*(vr-kre[1])/(kre[2]-kre[1]));

       if vr<=kre[1] then mvr1:=1;

       if mvr1>mvr2 then re:=1;

       if mvr3>mvr2 then re:=3;

     end;

     if TR[iv,k,ii]=3 then begin

       if vr<=((kre[2]+kre[3])/2) then mvr4:=0;

       if (vr>((kre[2]+kre[3])/2)) and (vr<kre[3]) then mvr4:=(2*vr-kre[2]-kre[3])/(kre[3]-kre[2]);

       if vr>=kre[3] then mvr4:=1;


       if (vr<=((kre[1]+kre[2])/2)) or (vr>=((kre[3]+1)/2)) then mvr3:=0;

       if (vr>((kre[1]+kre[2])/2)) and (vr<C1) then mvr3:=(2*vr-kre[1]-kre[2])/(kre[3]-kre[1]);

       if (vr>=C1) and (vr<=C2) then mvr3:=min;

       if (vr<((kre[3]+1)/2)) and (Vt[i]>C2) then mvr3:=1-((2*vr-kre[2]-kre[3])/(1-kre[2]));


       if (vr<=(kre[1]/2)) or (vr>=((kre[2]+kre[3])/2)) then mvr2:=0;

       if (vr>(kre[1]/2)) and (vr<((kre[1]+kre[2])/2)) then mvr2:=(2*vr-kre[1])/(kre[2]);

       if (vr>=((kre[1]+kre[2])/2)) and (vr<=((kre[2]+kre[3])/2)) then mvr2:=1-((2*vr-kre[1]-kre[2])/(kre[3]-kre[1]));

       if mvr4>mvr3 then re:=4;

       if mvr2>mvr3 then re:=2;

     end;

     if TR[iv,k,ii]=4 then begin

       if vr<=((kre[2]+kre[3])/2) then mvr4:=0;

       if (vr>((kre[2]+kre[3])/2)) and (Vt[i]<C1) then mvr4:=(2*vr-kre[2]-kre[3])/(kre[3]-kre[2]);

       if vr>=C1 then mvr4:=min;


       if (vr<=((kre[1]+kre[2])/2)) or (vr>=((kre[3]+1)/2)) then mvr3:=0;

       if (vr>((kre[1]+kre[2])/2)) and (vr<((kre[2]+kre[3])/2)) then mvr3:=(2*vr-kre[1]-kre[2])/(kre[3]-kre[1]);

       if (vr<((kre[3]+1)/2)) and (vr>((kre[2]+kre[3])/2)) then mvr3:=1-((2*vr-kre[2]-kre[3])/(1-kre[2]));

       if mvr3>mvr4 then re:=3;

     end;

//---------------------

      if re=1 then begin

                     Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-минимальный';

                     Edit4.Text:='минимальный';

                   end;

      if re=2 then begin

                     Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-повышенный';

                     Edit4.Text:='повышенный';

                   end;

      if re=3 then begin

                     Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-критический';

                     Edit4.Text:='критический';

                   end;

      if re=4 then begin

                     Form3.StringGrid2.Cells[4,j]:=FloatToStrF(vr,ffFixed,9,2)+'-недопустимый';

                     Edit4.Text:='недопустимый';

                   end;

   end;

   Edit3.Text:=FloatToStrF(vr,ffFixed,9,2);

end;


procedure TForm1.N7Click(Sender: TObject);

begin

   Form2.Show;

end;


procedure TForm1.N3Click(Sender: TObject);

Var

    Myfile : Textfile;

    Date : String;

begin

    If (saveDialog1.Execute) then begin

               AssignFile(Myfile,Savedialog1.FileName);

               Try Rewrite(myFile);

               Except

                   Showmessage('Ошибка при чтении файла!'); Exit;

               end;

               Date:=IntToStr(SpinEdit1.Value);WriteLn(MyFile,Date);

               Date:=Edit1.Text;WriteLn(MyFile,Date);

               Date:=Edit2.Text;WriteLn(MyFile,Date);

               For i:=0 to n-1 do begin

                   Date:=StringGrid1.Cells[i,1];

                   WriteLn(Myfile,Date);

               end;

               For i:=0 to n-1 do begin

                   Date:=StringGrid2.Cells[i,1];

                   WriteLn(Myfile,Date);

               End;

               For i:=0 to n-1 do begin

                   Date:=StringGrid3.Cells[i,1];

                   WriteLn(Myfile,Date);

               End;

               Date:=IntToStr(StringGrid4.ColCount);WriteLn(Myfile,Date);

               For i:=0 to StringGrid4.ColCount-1 do begin

                   Date:=StringGrid4.Cells[i,1];

                   WriteLn(Myfile,Date);

               End;

               With Form2 do begin

                    Date:=IntToStr(SpinEdit1.Value);WriteLn(Myfile,Date);

                    Date:=Edit1.Text;WriteLn(Myfile,Date);

                    For i:=0 to nRt-1 do begin

                        Date:=StringGrid1.Cells[i,1];

                        WriteLn(Myfile,Date);

                    end;

                    For i:=0 to nRt-1 do begin

                        Date:=StringGrid2.Cells[i,1];

                        WriteLn(Myfile,Date);

                    end;

               end;

     Closefile(myFile);

   end

  else Begin Showmessage('Ошибка!'); Exit;end;

end;


procedure TForm1.N4Click(Sender: TObject);

Var

     Myfile : Textfile;

     Date : String;

begin

     If (OpenDialog1.Execute)  then begin

                  AssignFile(Myfile,Opendialog1.FileName);

                  Try Reset(myFile);

                  Except

                      Showmessage('Ошибка при чтении файла!'); Exit;

                  end;

                  ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);n:=StrToInt(Date);

                  ReadLn(MyFile,Date);Edit1.Text:=Date;

                  ReadLn(MyFile,Date);Edit2.Text:=Date;

                  For i:=0 to n-1 do begin

                      ReadLn(MyFile,Date);

                      StringGrid1.Cells[i,1]:=Date;

                  end;

                  For i:=0 to n-1 do begin

                      ReadLn(MyFile,Date);

                      StringGrid2.Cells[i,1]:=Date;

                  End;

                  For i:=0 to n-1 do begin

                      ReadLn(MyFile,Date);

                      StringGrid3.Cells[i,1]:=Date;

                  End;

                  ReadLn(MyFile,Date);StringGrid4.ColCount:=StrToInt(Date);

                  For i:=0 to StringGrid4.ColCount-1 do begin

                      ReadLn(MyFile,Date);

                      StringGrid4.Cells[i,1]:=Date;

                  End;

                  With Form2 do begin

                     ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);

                     nRt:=StrToInt(Date);StringGrid1.ColCount:=nRt;StringGrid2.ColCount:=nRt;

                     ReadLn(MyFile,Date);Edit1.Text:=Date;

                     For i:=0 to nRt-1 do begin

                        ReadLn(MyFile,Date);

                        StringGrid1.Cells[i,1]:=Date;

                     end;

                     For i:=0 to nRt-1 do begin

                        ReadLn(MyFile,Date);

                        StringGrid2.Cells[i,1]:=Date;

                     end;

                  end;

               Closefile(myFile);

               if StringGrid4.ColCount=1 then CheckBox1.Checked:=true;

  end

  else Begin Showmessage('Файл не найден!'); Exit;end;

end;


procedure TForm1.N6Click(Sender: TObject);

begin

  Form4.Show;

end;


procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

   Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44),chr(8):;

   else key:=chr(0); end;

end;


procedure TForm1.N5Click(Sender: TObject);

begin

Form5.show;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

   Form6.show;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

Form3.Show;

end;

end.

unit Rtmodul;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, Spin;


type

  TForm2 = class(TForm)

    GroupBox1: TGroupBox;

    Label1: TLabel;

    SpinEdit1: TSpinEdit;

    Label2: TLabel;

    Edit1: TEdit;

    GroupBox2: TGroupBox;

    StringGrid1: TStringGrid;

    GroupBox3: TGroupBox;

    StringGrid2: TStringGrid;

    Panel1: TPanel;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure SpinEdit1Change(Sender: TObject);

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    procedure FormCreate(Sender: TObject);

    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form2: TForm2;

  Rtkey : boolean;

  i,j,ii : integer;

  NPVpmin,NPVpmax,NPVpav,smin,smax : real;{прогнозное значение NPV для интервала}

implementation


uses datamodul;


{$R *.dfm}


procedure TForm2.SpinEdit1Change(Sender: TObject);

begin

   nRt:=SpinEdit1.Value;

   StringGrid1.ColCount:=nRt;

   StringGrid2.ColCount:=nRt;

   for i:=1 to nRt do begin

       StringGrid1.Cells[i-1,0]:=IntToStr(i);

       StringGrid2.Cells[i-1,0]:=IntToStr(i);

   end;

end;


procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

  Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54),

      chr(55),chr(56),chr(57),chr(44),chr(8):;

   else key:=chr(0);

   end;

end;


procedure TForm2.FormCreate(Sender: TObject);

begin

   nRt:=n;

   StringGrid1.ColCount:=nRt;

   StringGrid2.ColCount:=nRt;

   for j:=0 to nRt-1 do begin

       StringGrid1.Cells[j,0]:=IntToStr(j+1);

       StringGrid2.Cells[j,0]:=IntToStr(j+1);

   end;

   For i:=1 to n do begin

       RSvar[i]:=0;

       Rdvar[i]:=0;

   end;

end;


procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

   Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54),

      chr(55),chr(56),chr(57),chr(44),chr(8):;

   else key:=chr(0);

   end;

end;


procedure TForm2.StringGrid2KeyPress(Sender: TObject; var Key: Char);

begin

   Case key of

      chr(45),chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54),

      chr(55),chr(56),chr(57),chr(44),chr(8):;

   else key:=chr(0);

   end;

end;


procedure TForm2.BitBtn1Click(Sender: TObject);

begin

//----------------------------- Ввод значений в массив  для рассчета коэф-та ликвидности Rt


    try Ir:=StrToFloat(Edit1.Text); Except Ir:=0; Edit1.Text:=IntToStr(0); end;


    for i:=1 to nRt do begin

       try

         RSvar[i]:=StrToFloat(StringGrid2.Cells[i-1,1]);

       Except

         StringGrid2.Cells[i-1,1]:=IntToStr(0);

       end;

       try

         Rdvar[i]:=StrToFloat(StringGrid1.Cells[i-1,1]);

       Except

         StringGrid1.Cells[i-1,1]:=IntToStr(0);

       end;

    end;

    Rtkey:=true;

    Form2.Hide;

    Form1.Show;

end;


procedure TForm2.BitBtn2Click(Sender: TObject);

begin

  nRt:=n;

  Rtkey:=false;

  Form2.Close;

end;


end.


unit Formirmodul;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, StdCtrls, Menus;


type

  TForm4 = class(TForm)

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    GroupBox1: TGroupBox;

    Label1: TLabel;

    StringGrid1: TStringGrid;

    GroupBox2: TGroupBox;

    StringGrid2: TStringGrid;

    SaveDialog1: TSaveDialog;

    OpenDialog1: TOpenDialog;

    procedure FormCreate(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form4: TForm4;

  i,j,t : integer;

  PlusSi,MinusSi : array[1..3,1..20] of real;

implementation


uses datamodul;


{$R *.dfm}


procedure TForm4.FormCreate(Sender: TObject);

begin

    StringGrid1.ColCount:=n+1;

    StringGrid2.ColCount:=n+1;

    StringGrid1.Cells[0,1]:='Доходы от реализации продукции';

    StringGrid1.Cells[0,2]:='Возмещение НДС по инвестиции';

    StringGrid1.Cells[0,3]:='Амортизация';

    StringGrid2.Cells[0,1]:='Инвестиции (включая НДС)';

    StringGrid2.Cells[0,2]:='Прирост оборотных средств';

    StringGrid2.Cells[0,3]:='Эксплутационные затраты';

    StringGrid2.Cells[0,4]:='Налоги';

    For i:=1 to n do begin

        StringGrid1.Cells[i,0]:=IntToStr(i);

        StringGrid2.Cells[i,0]:=IntToStr(i);

    end;

end;


procedure TForm4.N5Click(Sender: TObject);

begin

   if StringGrid1.Focused then StringGrid1.RowCount:=StringGrid1.RowCount+1;

   if StringGrid2.Focused then StringGrid2.RowCount:=StringGrid2.RowCount+1;

end;


procedure TForm4.N6Click(Sender: TObject);

begin

   if StringGrid1.Focused then StringGrid1.RowCount:=StringGrid1.RowCount-1;

   if StringGrid2.Focused then StringGrid2.RowCount:=StringGrid2.RowCount-1;

end;


procedure TForm4.N3Click(Sender: TObject);

Var

    Myfile : Textfile;

    Date : String;

begin

    If (saveDialog1.Execute) then begin

               AssignFile(Myfile,Savedialog1.FileName);

               Try Rewrite(myFile);

               Except

                   Showmessage('Ошибка при чтении файла!'); Exit;

               end;

               Date:=IntToStr(StringGrid1.RowCount);WriteLn(MyFile,Date);

               Date:=IntToStr(StringGrid2.RowCount);WriteLn(MyFile,Date);

               For j:=0 to n do begin

                   For i:=0 to StringGrid1.RowCount-1 do begin

                      Date:=StringGrid1.Cells[j,i];

                      WriteLn(Myfile,Date);

                   end;

               end;

               For j:=0 to n do begin

                   For i:=0 to StringGrid2.RowCount-1 do begin

                      Date:=StringGrid2.Cells[j,i];

                      WriteLn(Myfile,Date);

                   end;

               end;

               Closefile(myFile);

    end

    else Begin Showmessage('Ошибка!'); Exit;end;

end;


procedure TForm4.N2Click(Sender: TObject);

Var

     Myfile : Textfile;

     Date : String;

begin

     If (OpenDialog1.Execute)  then begin

                  AssignFile(Myfile,Opendialog1.FileName);

                  Try Reset(myFile);

                  Except

                      Showmessage('Ошибка при чтении файла!'); Exit;

                  end;

                  ReadLn(MyFile,Date);StringGrid1.RowCount:=StrToInt(Date);

                  ReadLn(MyFile,Date);StringGrid2.RowCount:=StrToInt(Date);

                  For j:=0 to n do begin

                      For i:=0 to StringGrid1.RowCount-1 do begin

                          ReadLn(MyFile,Date);

                          StringGrid1.Cells[j,i]:=Date;

                      end;

                  end;

                  For j:=0 to n do begin

                      For i:=0 to StringGrid2.RowCount-1 do begin

                          ReadLn(MyFile,Date);

                          StringGrid2.Cells[j,i]:=Date;

                      end;

                  end;

                  Closefile(myFile);

  end

  else Begin Showmessage('Файл не найден!'); Exit;end;

end;


procedure TForm4.N7Click(Sender: TObject);

var

    str,str2 : string;

           k : integer;

begin

    for t:=1 to n do begin

         for j:=1 to 3 do begin

             PlusSi[j,t]:=0;

         end;

    end;


    for t:=1 to n do begin

        for i:=1 to StringGrid1.RowCount-1 do begin

            str:=StringGrid1.Cells[t,i];

            if pos(';',str)<>0 then begin str2:='';k:=1;

                                       for j:=1 to Length(str)do begin

                                           if (str[j]<>';') then str2:=str2+str[j]

                                                            else begin

                                                                 PlusSi[k,t]:=PlusSi[k,t]+StrToFloat(str2);

                                                                 k:=k+1;str2:='';

                                                            end;

                                           if j=Length(str) then PlusSi[k,t]:=PlusSi[k,t]+StrToFloat(str2);

                                       end;

            end else try

                       PlusSi[1,t]:=PlusSi[1,t]+StrToFloat(str);

                       PlusSi[2,t]:=PlusSi[2,t]+StrToFloat(str);

                       PlusSi[3,t]:=PlusSi[3,t]+StrToFloat(str);

                     except

                       showmessage('Ошибка при вводе значений интервалов денежных потоков!');

                       FocusControl(Stringgrid1);

                     end;

        end;

        for i:=1 to StringGrid2.RowCount-1 do begin

            str:=StringGrid2.Cells[t,i];

            if pos(';',str)<>0 then begin str2:='';k:=1;

                                       for j:=1 to Length(str)do begin

                                           if (str[j]<>';') then str2:=str2+str[j]

                                                            else begin

                                                                 if k=1 then PlusSi[3,t]:=PlusSi[3,t]-StrToFloat(str2);

                                                                 if k=2 then PlusSi[2,t]:=PlusSi[2,t]-StrToFloat(str2);

                                                                 k:=k+1;str2:='';

                                                            end;

                                           if j=Length(str) then PlusSi[1,t]:=PlusSi[1,t]-StrToFloat(str2);

                                       end;

            end else try

                       PlusSi[1,t]:=PlusSi[1,t]-StrToFloat(str);

                       PlusSi[2,t]:=PlusSi[2,t]-StrToFloat(str);

                       PlusSi[3,t]:=PlusSi[3,t]-StrToFloat(str);

                     except

                       showmessage('Ошибка при вводе значений интервалов денежных потоков!');

                       FocusControl(Stringgrid1);

                     end;

        end;

    end;

    for i:=1 to n do begin

        str:='';

        for j:=1 to 3 do begin

            str:=str+FloatToStr(PlusSi[j,i]);

            if j<>3 then str:=str+';';

        end;

        Form1.StringGrid1.Cells[i-1,1]:=str;

    end;

end;


end.



unit Risk;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls, Buttons, Spin, Menus;


type

  TForm8 = class(TForm)

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    StringGrid1: TStringGrid;

    StringGrid2: TStringGrid;

    TabSheet2: TTabSheet;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    StringGrid3: TStringGrid;

    StringGrid4: TStringGrid;

    TabSheet3: TTabSheet;

    Label8: TLabel;

    StringGrid6: TStringGrid;

    Label9: TLabel;

    StringGrid7: TStringGrid;

    StringGrid8: TStringGrid;

    Label10: TLabel;

    Panel3: TPanel;

    Label11: TLabel;

    Label12: TLabel;

    Label13: TLabel;

    Label14: TLabel;

    SpinEdit1: TSpinEdit;

    SpinEdit2: TSpinEdit;

    Edit1: TEdit;

    Edit2: TEdit;

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    CheckBox1: TCheckBox;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    N5: TMenuItem;

    N9: TMenuItem;

    CheckBox2: TCheckBox;

    Label7: TLabel;

    procedure SpinEdit1Change(Sender: TObject);

    procedure SpinEdit2Change(Sender: TObject);

    procedure Edit1Exit(Sender: TObject);

    procedure Edit2Exit(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure CheckBox2Click(Sender: TObject);

    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid4KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid6KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid7KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid8KeyPress(Sender: TObject; var Key: Char);


   

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form8: TForm8;

  Ct,At,Zt,Simd : array[1..20] of real;{критерий покрытия,соб.капитал,заемный кап.,мат.ож.ден.потоков(прогнозир.ден.потоки)}

  Pfsr : real; {ср.зн.цены}

  Sij,Vt : array[1..20] of real;{чист.ден.потоки,риск,}

  Rt : array[1..20] of real;{кр.ликвидности}

  n,i,j,f,l,ii : integer;  {число ПУП,число ресурсов,}

  d,NPV,NPVi,NPVj,s,sum,sum2,sum3,ENPV : real; {коэф.дисконтирования,ЧПЭ,мат.ож.NPV}

  Ip : real; {первонач.кап.вложения}

  Pf : array[1..20,1..20] of real; {цена на ресурс в каждый ПУП,  }

  Pkrit,Xf : array[1..20] of real; {Критический лимит цены,доля ресурса в портфеле ресурсов}


implementation


uses Results,Cov, PriceCov, Riskproject, normgenerator;


{$R *.dfm}


procedure TForm8.SpinEdit1Change(Sender: TObject);

begin

   n:=SpinEdit1.Value;

   StringGrid1.ColCount:=n; StringGrid2.ColCount:=n; StringGrid3.ColCount:=n; StringGrid4.ColCount:=n;

   Stringgrid7.RowCount:=n+1; Form3.StringGrid1.ColCount:=n+1;Form3.Stringgrid1.RowCount:=n+1;

   Form4.StringGrid1.ColCount:=n+1; Form4.Stringgrid1.RowCount:=n+1;

   Form7.StringGrid1.ColCount:=n+3; Form7.StringGrid2.ColCount:=n+2;Form7.StringGrid3.ColCount:=n+1;

   For i:=1 to n do begin

        Stringgrid1.Cells[i-1,0]:=IntToStr(i); Stringgrid2.Cells[i-1,0]:=IntToStr(i);

        Stringgrid3.Cells[i-1,0]:=IntToStr(i); Stringgrid4.Cells[i-1,0]:=IntToStr(i);

        Form3.Stringgrid1.Cells[i,0]:=IntToStr(i);Form3.Stringgrid1.Cells[0,i]:=IntToStr(i);

        Form4.Stringgrid1.Cells[i,0]:=IntToStr(i); Form4.Stringgrid1.Cells[0,i]:=IntToStr(i);

        Form7.StringGrid1.Cells[i+2,0]:=IntToStr(i); Form7.StringGrid2.Cells[i+1,0]:=IntToStr(i);

        Form7.StringGrid3.Cells[i,0]:=IntToStr(i); Stringgrid7.Cells[0,i]:=IntToStr(i);


   end;

end;


procedure TForm8.SpinEdit2Change(Sender: TObject);

begin

   f:=SpinEdit2.Value;

   StringGrid6.ColCount:=f;StringGrid7.ColCount:=f+1;

   StringGrid7.RowCount:=n+1; StringGrid8.ColCount:=f;

   For i:=1 to f do begin

        Stringgrid6.Cells[i-1,0]:=IntToStr(i);

        Stringgrid7.Cells[i,0]:=IntToStr(i);

        Stringgrid8.Cells[i-1,0]:=IntToStr(i);

   end;

   For i:=1 to n+1 do begin

       StringGrid7.Cells[0,i]:=IntToStr(i);

   end;

end;



procedure TForm8.Edit1Exit(Sender: TObject);

begin

   try

     d:=StrToFloat(Edit1.Text);

   except

     Showmessage('Неправельный ввод данных!');


   end;

end;


procedure TForm8.Edit2Exit(Sender: TObject);

begin

   try

     Ip:=StrToFloat(Edit2.Text);

   except

     Showmessage('Неправельный ввод данных!');

   end;

end;


procedure TForm8.FormCreate(Sender: TObject);

begin

   n:=5;f:=5;d:=1.2;Ip:=10;

   For i:=1 to 5 do begin

        Stringgrid1.Cells[i-1,0]:=IntToStr(i); Stringgrid2.Cells[i-1,0]:=IntToStr(i);

        Stringgrid3.Cells[i-1,0]:=IntToStr(i); Stringgrid4.Cells[i-1,0]:=IntToStr(i);

        Stringgrid6.Cells[i-1,0]:=IntToStr(i); Stringgrid7.Cells[0,i]:=IntToStr(i);

        StringGrid7.Cells[i,0]:=IntToStr(i);   Stringgrid8.Cells[i-1,0]:=IntToStr(i);

   end;

   For i:=1 to 20 do begin

       For j:=1 to 20 do begin

           Pcovar[i,j]:=0;

           Covar[i,j]:=0;

       end;

   end;

end;


procedure TForm8.CheckBox1Click(Sender: TObject);

begin

  if checkBox1.Checked then Form4.Show;

end;



procedure TForm8.N7Click(Sender: TObject);

var

keyw: boolean;

begin

// Заполнение данных в массивы

keyw:=true;

try

    For i:=0 to n-1 do begin

       Zt[i+1]:=StrToFloat(StringGrid1.Cells[i,1]);

       At[i+1]:=StrToFloat(StringGrid2.Cells[i,1]);

       Simd[i+1]:=StrToFloat(Stringgrid3.Cells[i,1]);

       Sij[i+1]:=StrToFloat(Stringgrid4.Cells[i,1]);

    end;

    s:=0;

    For i:=1 to f do begin

        Pkrit[i]:=StrToFloat(Stringgrid8.Cells[i-1,1]);

        Xf[i]:= StrToFloat(Stringgrid6.Cells[i-1,1]);

        s:=s+Xf[i];

    end;

    if s<>1 then begin

      Showmessage('Общяя сумма долей ресурсов в портфеле должна быть меньше равна единице!');

      keyw:=false;

      PageControl1.ActivePage:=TabSheet3;

      FocusControl(StringGrid6);

    end;

    For j:=1 to f do begin

     for i:=1 to n do begin

          Pf[i,j]:=StrToFloat(Stringgrid7.Cells[j,i]);

     end;

    end;

Except

  ShowMessage('Неправильно заполнены поля!');

  keyw:=false;

end;

if keyw=true then begin

// --------------------------------вычисление мат. ож. NPV

   ENPV:=0;

    For i:=1 to n do begin NPV:=0;

        For j:=1 to i do begin

           NPV:=NPV+Sij[j];

        end;

        NPV:=NPV/i;s:=1;

        for j:=1 to i do begin s:=s*d;end;

        ENPV:=ENPV+(NPV/s);

    end;

    ENPV:=ENPV-Ip;

//----------------------------------вычисление критерия покрытия Ct

    For i:=1 to n do begin

       if Zt[i]<>0 then Ct[i]:=At[i]/Zt[i] else  Ct[i]:=0;

    end;

    For i:=0 to Form2.StringGrid1.ColCount-1 do begin

       Form2.StringGrid1.ColWidths[i]:=Form2.Header1.SectionWidth[i]-1;

    end;

//-----------------------------------вычисление критерия ликвидности Rt в том числе

//-----------------------------------и NPVt

    NPV:=0;s:=d;

    For i:=1 to n do begin

        For j:=1 to i-1 do begin s:=s*d;end;

        NPV:=NPV+(Simd[i]/s); s:=d;

    end;

    NPV:=NPV-Ip; // прогнозное NPV

    For i:=1 to n-1 do begin

        NPVi:=0;NPVj:=0;s:=d;

        for j:=1 to i do begin

            For l:=1 to j-1 do begin s:=s*d; end;

            NPVi:=NPVi+(Sij[j]/s);s:=d; //то NPV, которое получаем по имеющ. данным

        end;

        s:=d;

        for j:=i+1 to n do begin

            For l:=1 to j-1 do begin s:=s*d; end;

            NPVj:=NPVj+(Simd[j]/s);s:=d;

        end;

        NPVj:=NPVj-Ip; //то, что осталось от прогногзного NPV

        Rt[i]:=(NPVi+NPVj)/NPV;

        Form2.StringGrid1.Cells[2,i-1]:=FloatToStr(NPVi);


    end;

    NPVi:=0;s:=d;

    for i:=1 to n do begin

       For l:=1 to i-1 do begin s:=s*d; end;

       NPVi:=NPVi+(Sij[i]/s);s:=d;

    end;

    Rt[n]:=NPVi/NPV;Form2.StringGrid1.Cells[2,n-1]:=FloatToStr(NPVi);

    Form2.StringGrid1.RowCount:=n;

    For i:=0 to n-1 do begin

     Form2.StringGrid1.Cells[0,i]:=IntToStr(i+1);

     Form2.StringGrid1.Cells[1,i]:=FloatToStr(Ct[i+1]);

     Form2.StringGrid1.Cells[3,i]:=FloatToStr(Rt[i+1])

    end;

    Form2.Memo1.Lines.Clear;

    Form2.Memo1.Lines.Add('E(NPV) = ' + FloatToStr(ENPV) + ';');


// Оценка общего риска проекта

    For j:=1 to f do begin

        Pfsr:=0;

        For i:=1 to n do begin

            Pfsr:=Pfsr+Pf[i,j];

        end;

       Pfsr:=Pfsr/n;

        if Pfsr>Pkrit[j] then

           Form2.Memo1.Lines.Add('Покупка ' + IntToStr(j) + '-го ресурса невыгодна');

    end;


   for i:=1 to n do begin

      sum:=0;s:=1;

      For j:=1 to i do begin

         For l:=1 to 2*j do begin s:=s*d; end;

         sum:=sum+(Covar[j,j]/s);s:=1;

      end;

      sum2:=0;sum3:=0;

         for l:=1 to i-1 do begin

             for j:=l+1 to i do begin

                 s:=1;

                 For ii:=1 to l+j do begin s:=s*d; end;

                 sum2:=sum2+(Covar[l,j]/s);

             end;

         end;

      for l:=1 to i do begin

          for j:=1 to i do begin

              sum3:=sum3+(Xf[l]*Xf[j]*PCovar[l,j])

          end;

      end;

      Vt[i]:=sum+(2*sum2)+sum3;

      form2.StringGrid1.Cells[4,i-1]:=FloatToStr(Vt[i]);

   end;

    Form2.Show;

end; 

end;


procedure TForm8.N4Click(Sender: TObject);

Var

Myfile : Textfile;

Date : String;

begin

  If (OpenDialog1.Execute)  then begin

     AssignFile(Myfile,Opendialog1.FileName);

     Try Reset(myFile);

     Except

          Showmessage('Ошибка при чтении файла!'); Exit;

     end;


     With Form1 do begin

         ReadLn(MyFile,Date);SpinEdit1.Value:=StrToInt(Date);n:=StrToInt(Date);

         ReadLn(MyFile,Date);SpinEdit2.Value:=StrToInt(Date);f:=StrToInt(Date);

         ReadLn(MyFile,Date);Edit1.Text:=Date;d:=StrToFloat(Date);

         ReadLn(MyFile,Date);Edit2.Text:=Date;Ip:=StrToFloat(Date);

         For i:=0 to n-1 do begin

             ReadLn(MyFile,Date);

             StringGrid1.Cells[i,1]:=Date;

         end;

         For i:=0 to n-1 do begin

             ReadLn(MyFile,Date);

             StringGrid2.Cells[i,1]:=Date;

         End;

         For i:=0 to n-1 do begin

             ReadLn(MyFile,Date);

             StringGrid3.Cells[i,1]:=Date;

         End;

         For i:=0 to n-1 do begin

             ReadLn(MyFile,Date);

             StringGrid4.Cells[i,1]:=Date;

         End;

         For i:=0 to f-1 do begin

             ReadLn(MyFile,Date);

             StringGrid6.Cells[i,1]:=Date;

         End;

         For i:=1 to n do  begin

          For j:=1 to f do begin

             ReadLn(MyFile,Date);

             StringGrid7.Cells[i,j]:=Date;

          end;

         end;

         For i:=0 to f-1 do begin

             ReadLn(MyFile,Date);

             StringGrid8.Cells[i,1]:=Date;

         End;

     end;

     With Form3 do begin

      For i:=1 to n do begin

          For j:=1 to n do begin

             ReadLn(MyFile,Date);

             StringGrid1.Cells[i,j]:=Date;


          end;

      End;

      BitBtn1Click(Sender);

     end;

     With Form4 do begin

      For i:=1 to n do begin

          For j:=1 to n do begin

             ReadLn(MyFile,Date);

             StringGrid1.Cells[i,j]:=Date;

          end;

      End;

      BitBtn1Click(Sender);

     end;

     Closefile(myFile);

  end

  else Begin Showmessage('Файл не найден!'); Exit;end;

end;


procedure TForm8.N5Click(Sender: TObject);

Var

Myfile : Textfile;

Date : String;

begin

  If (saveDialog1.Execute) then begin

     AssignFile(Myfile,Savedialog1.FileName);

     Try Rewrite(myFile);

     Except

          Showmessage('Ошибка при чтении файла!'); Exit;

     end;

     With Form8 do begin

         Date:=IntToStr(SpinEdit1.Value);WriteLn(MyFile,Date);

         Date:=IntToStr(SpinEdit2.Value);WriteLn(MyFile,Date);

         Date:=Edit1.Text;WriteLn(MyFile,Date);

         Date:=Edit2.Text;WriteLn(MyFile,Date);

         For i:=0 to n-1 do begin

             Date:=StringGrid1.Cells[i,1];

             WriteLn(Myfile,Date);

         end;

         For i:=0 to n-1 do begin

             Date:=StringGrid2.Cells[i,1];

             WriteLn(Myfile,Date);

         End;

         For i:=0 to n-1 do begin

             Date:=StringGrid3.Cells[i,1];

             WriteLn(Myfile,Date);

         End;

         For i:=0 to n-1 do begin

             Date:=StringGrid4.Cells[i,1];

             WriteLn(Myfile,Date);

         End;

         {For i:=0 to n-1 do begin

             Date:=StringGrid5.Cells[i,1];

             WriteLn(Myfile,Date);

         End; }

         For i:=0 to f-1 do begin

             Date:=StringGrid6.Cells[i,1];

             WriteLn(Myfile,Date);

         End;

         For i:=1 to n do begin

            for j:=1 to f do begin

             Date:=StringGrid7.Cells[i,j];

             WriteLn(Myfile,Date);

            end;

         end;

         For i:=0 to f-1 do begin

             Date:=StringGrid8.Cells[i,1];

             WriteLn(Myfile,Date);

         End;

     end;

     With Form3 do begin

       For i:=1 to n do begin

         For j:=1 to n do begin

             Date:=StringGrid1.Cells[i,j];

             WriteLn(Myfile,Date);

         end;

       end;

     end;

     With Form4 do begin

         For i:=1 to n do begin

            For j:=1 to n do begin

             Date:=StringGrid1.Cells[i,j];

             WriteLn(Myfile,Date);

            end;

         end;

     end;

     Closefile(myFile);

  end

  else Begin Showmessage('Ошибка!'); Exit;end;

end;


procedure TForm8.N9Click(Sender: TObject);

begin

Form7.show;

end;


procedure TForm8.CheckBox2Click(Sender: TObject);

begin

   if checkBox2.Checked then Form3.Showmodal;

end;


procedure TForm8.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

   Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44):;

   else key:=chr(0);end;

end;


procedure TForm8.StringGrid2KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44):;

   else key:=chr(0); end;

end;


procedure TForm8.StringGrid3KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44):;

   else key:=chr(0); end;

end;


procedure TForm8.StringGrid4KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44),chr(45):;

   else key:=chr(0); end;

end;


procedure TForm8.StringGrid6KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44):;

   else key:=chr(0); end;

end;


procedure TForm8.StringGrid7KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44):;

   else key:=chr(0);end;

end;


procedure TForm8.StringGrid8KeyPress(Sender: TObject; var Key: Char);

begin

Case key of

      chr(48),chr(49),chr(50),chr(51),chr(52),chr(53),chr(54), chr(55),chr(56),chr(57),chr(44):;

   else key:=chr(0); end;

end;

end.



unit normgenerator;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, StdCtrls, ExtCtrls, ComCtrls, Buttons, Menus;

procedure normgen(var num1,num2 : real);

type

  TForm7 = class(TForm)

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    GroupBox1: TGroupBox;

    Label2: TLabel;

    StringGrid1: TStringGrid;

    StringGrid2: TStringGrid;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    Label1: TLabel;

    TabSheet2: TTabSheet;

    StringGrid3: TStringGrid;

    SaveDialog1: TSaveDialog;

    OpenDialog1: TOpenDialog;

    procedure FormCreate(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure StringGrid1Exit(Sender: TObject);

    procedure StringGrid2Exit(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

   

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form7: TForm7;

  i,j, ndvar : integer;  {число дтерм. перем-х проекта}

  Svar : array[1..500,1..20] of real;{массив значений сгенерированных сл.вел}

  Xvar : array[1..40,1..20] of real; {массив сл.перемен-х проекта}

  Dvar : array[1..20,1..20] of real; {массив детермиированных перем-х ден. потоков}

implementation


uses Risk, Cov;


{$R *.dfm}


procedure normgen(var num1,num2 : real);

var

  r1,r2,svar : real;

begin

     Repeat

          r1:=2*random-1;

          r2:=2*random-1;

          svar:=Sqr(r1)+Sqr(r2);

     Until (svar<1);

     svar:=sqrt((-2*ln(svar))/svar);

     num1:=r1*svar;

     num2:=r2*svar;

end;


procedure TForm7.N2Click(Sender: TObject);

Var

Myfile : Textfile;

Date : String;

begin

  If (OpenDialog1.Execute)  then begin

     AssignFile(Myfile,Opendialog1.FileName);

     Try Reset(myFile);

     Except

          Showmessage('Ошибка при чтении файла!'); Exit;

     end;

     ReadLn(MyFile,Date);StringGrid1.ColCount:=StrToInt(Date);

     ReadLn(MyFile,Date);StringGrid1.RowCount:=StrToInt(Date);

     ReadLn(MyFile,Date);StringGrid2.ColCount:=StrToInt(Date);

     ReadLn(MyFile,Date);StringGrid2.RowCount:=StrToInt(Date);

     For i:=0 to StringGrid1.ColCount do  begin

        For j:=0 to StringGrid1.RowCount do begin

            ReadLn(MyFile,Date);

            StringGrid1.Cells[i,j]:=Date;

        end;

      end;

      For i:=0 to StringGrid2.ColCount do begin

        For j:=0 to StringGrid2.RowCount do begin

             ReadLn(MyFile,Date);

             StringGrid2.Cells[i,j]:=Date;

        end;

      End;

      Closefile(myFile);

  end

  else Begin Showmessage('Файл не найден!'); Exit;end;

end;



procedure TForm7.FormCreate(Sender: TObject);

begin

   StringGrid1.Cells[0,1]:='+'; StringGrid1.Cells[0,3]:='-'; StringGrid1.Cells[0,5]:='-';

   StringGrid2.Cells[0,1]:='+';   StringGrid2.Cells[0,2]:='+'; StringGrid2.Cells[0,3]:='-'; StringGrid2.Cells[0,4]:='-';

   StringGrid1.Cells[1,1]:='Доходы от реализации продукции';

   StringGrid1.Cells[1,3]:='Эксплутационные затраты';

   StringGrid1.Cells[1,5]:='Налоги';

   StringGrid2.Cells[1,1]:='Возмещение НДС по инвестициям';

   StringGrid2.Cells[1,2]:='Амортизация';

   StringGrid2.Cells[1,3]:='Инвестиции';

   StringGrid2.Cells[1,4]:='Прирост оборотных средств';

   StringGrid1.Cells[1,0]:='Название';

   StringGrid1.Cells[2,0]:='Инт-л';

   StringGrid2.Cells[1,0]:='Название';

   i:=1;

   While (i<=StringGrid1.ColCount) do begin

       StringGrid1.Cells[2,i]:='Мин.';

       StringGrid1.Cells[2,i+1]:='Макс.';

       i:=i+2;

   end;

   For i:=3 to StringGrid1.ColCount do begin

       StringGrid1.Cells[i,0]:=IntToStr(i-2);

       StringGrid2.Cells[i-1,0]:=IntToStr(i-2);

       StringGrid3.Cells[i-2,0]:=IntToStr(i-2);

   end;

   For i:=1 to 500 do begin

       Stringgrid3.Cells[0,i]:=IntToStr(i);

   end;

end;


procedure TForm7.N7Click(Sender: TObject);

var

   nvar,nn1,nn2,sv1,sv2 : real; //число стох.пер-х проекта,сл.числа,коэф-ты для прироста об.ср-в.

   kvar : integer;


begin

    nvar:=StringGrid1.RowCount-1;

    For j:=1 to 20 do begin

        Simd[j]:=0;

    end;

    For i:=1 to 500 do begin

        For j:=1 to 20 do begin

            Svar[i,j]:=0;

        end;

    end;

    For i:=1 to 20 do begin

        For j:=1 to 20 do begin

            Covar[i,j]:=0;

        end;

    end;

    for i:=1 to (StringGrid1.ColCount-3) do begin

        j:=1;

        While j<=(nvar-1) do begin

             kvar:=1;

             While kvar<=500 do begin

                  normgen(nn1,nn2);

                  nn1:=Xvar[j,i]+nn1*Xvar[j+1,i];

                  nn2:=Xvar[j,i]+nn2*Xvar[j+1,i];

                  if StringGrid1.Cells[0,j]='-' then begin

                                                         nn1:=-nn1;

                                                         nn2:=-nn2;

                                                     end;

                  if j=5 then begin

                             if Xvar[j,i]<>0 then begin

                                sv1:=nn1/Xvar[j,i];

                                sv2:=nn2/Xvar[j,i];

                             end else begin sv1:=0; sv2:=0; end;

                                Svar[kvar,i]:=Svar[kvar,i]+sv1*Dvar[4,i];

                                Svar[kvar+1,i]:=Svar[kvar+1,i]+sv2*Dvar[4,i];

                              end;

                  Svar[kvar,i]:=Svar[kvar,i]+nn1;

                  Svar[kvar+1,i]:=Svar[kvar+1,i]+nn2;

                  kvar:=kvar+2;

             end;

             j:=j+2;

        end;

        for j:=1 to 500 do begin

            For kvar:=1 to ndvar do begin

               if kvar <>4 then Svar[j,i]:=Svar[j,i]+Dvar[kvar,i];

            end;

        end;

    end;

    For i:=1 to StringGrid1.Colcount-3 do begin

        For j:=1 to 500 do begin

            StringGrid3.Cells[i,j]:=FloatToStr(Svar[j,i]);

            Simd[i]:=Simd[i]+Svar[j,i];

        end;

        Simd[i]:=Simd[i]/500;

        Form8.StringGrid3.Cells[i-1,1]:=FloatToStrF(Simd[i],ffFixed,9,2);

    end;


    For i:=1 to StringGrid1.ColCount-3 do begin

        For j:=i to StringGrid1.ColCount-3 do begin

            For kvar:=1 to 500 do begin

                Covar[i,j]:=Covar[i,j]+((Svar[kvar,i]-Simd[i])*(Svar[kvar,j]-Simd[j]));

            end;

            Covar[i,j]:=Covar[i,j]/500;

            Form3.StringGrid1.Cells[j,i]:=FloatToStrF(Covar[i,j],ffFixed,12,2);

            Form3.StringGrid1.Cells[i,j]:=FloatToStrF(Covar[i,j],ffFixed,12,2);

        end;

    end;

end;


procedure TForm7.StringGrid1Exit(Sender: TObject);

begin

   Try

        For j:=3 to StringGrid1.ColCount-1 do begin

            i:=1;

            While i<=StringGrid1.RowCount-1 do begin

                Xvar[i,j-2]:=StrToFloat(StringGrid1.Cells[j,i]);

                Xvar[i,j-2]:=(Xvar[i,j-2]+StrToFloat(StringGrid1.Cells[j,i+1]))/2;

                Xvar[i+1,j-2]:=Xvar[i,j-2]-StrToFloat(StringGrid1.Cells[j,i]);

                i:=i+2;

            end;

        end;

    except

       ShowMessage('Неправельный ввод данных!');

       FocusControl(StringGrid1);

    end;

end;


procedure TForm7.StringGrid2Exit(Sender: TObject);

var

   nn1 : real;

begin

  Try

      For j:=2 to StringGrid2.ColCount-1 do begin

        For i:=1 to StringGrid2.RowCount-1 do begin

               Dvar[i,j-1]:=StrToFloat(StringGrid2.Cells[j,i]);

               If StringGrid2.Cells[0,i]='-' then Dvar[i,j-1]:=-Dvar[i,j-1]

        end;

      end;

    Except

        ShowMessage('Неправельный ввод данных!');

        FocusControl(StringGrid2);

    end;

    ndvar:=StringGrid2.RowCount-1;

end;


procedure TForm7.N3Click(Sender: TObject);

Var

Myfile : Textfile;

Date : String;

begin

If (saveDialog1.Execute) then begin

     AssignFile(Myfile,Savedialog1.FileName);

     Try Rewrite(myFile);

     Except

          Showmessage('Ошибка при чтении файла!'); Exit;

     end;

     Date:=IntToStr(StringGrid1.ColCount);WriteLn(MyFile,Date);

     Date:=IntToStr(StringGrid1.RowCount);WriteLn(MyFile,Date);

     Date:=IntToStr(StringGrid2.ColCount);WriteLn(MyFile,Date);

     Date:=IntToStr(StringGrid2.RowCount);WriteLn(MyFile,Date);

     For i:=0 to StringGrid1.ColCount do begin

         for j:=0 to StringGrid1.RowCount do begin

             Date:=StringGrid1.Cells[i,j];

             WriteLn(Myfile,Date);

         end;

     end;

     For i:=0 to StringGrid2.ColCount do begin

       For j:=0 to StringGrid2.RowCount do begin

             Date:=StringGrid2.Cells[i,j];

             WriteLn(Myfile,Date);

       end;

     end;

     Closefile(myFile);

  end

  else Begin Showmessage('Ошибка!'); Exit;end;

end;

end.




Страницы: Назад 1 Вперед