Помощь в написании студенческих работ
Антистрессовый сервис

Математические модели диверсификации (на примере теплоэнергетического предприятия)

ДипломнаяПомощь в написанииУзнать стоимостьмоей работы

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

Математические модели диверсификации (на примере теплоэнергетического предприятия) (реферат, курсовая, диплом, контрольная)

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

Реферат Математические модели диверсификации (на примере теплоэнергетического предприятия).

37 страниц, 3 иллюстрации, 4 таблиц, 3 использованных источника.

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

Объект исследования — модели диверсификации производства.

Цель работы — посторенние математического модельного инструментария для поиска распределения средств между проектами диверсификации.

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

Область применения и рекомендации — экономика, теплоэнергетика.

1. Построение модели, в которой эксперт предлагает несколько программ инвестирования.

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

3. Диверсификация производства энергетического предприятия. Когенерация.

РЕЗУЛЬТАТЫ ПРОДЕЛАННОЙ РАБОТЫ.

ПРИЛОЖЕНИЕ

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

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

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

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

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

1. Построение модели, в которой эксперт предлагает несколько программ инвестирования

диверсификация модель инвестирование энергетический

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

Математическая постановка задачи.

Теперь сформулируем математическую постановку задачи. Предположим, что имеется s экспертов и n инвестиционных проектов диверсификации, оцененных по m параметрам. Считается известными элементы матрицы Аji, где элемент матрицы aji обозначает значение параметра j (j=1…m) для инвестиционного параметра с номером i (i =1…n). Каждый эксперт формирует множества? s, где s=(1…s), состоящих из множества векторов x=(x1…xn), где координаты вектора xi обозначают долю средств, вкладываемых в инвестиционный проект под номером i. Множество? s, каждый эксперт формирует с помощью наложений ограничений вида:

Рассмотрим случай, когда Щs не пересекаются. Тогда результирующим, наиболее точно отражающим мнение каждого эксперта будем считать вариант x*, сумма расстояний от которого до каждого из множеств Щs будет наименьшей. Математически это выглядит так:

Считаем, что расстояние от точки x до множества Щs определяется, как наименьшее расстояние от точки x=(x1…xn), до точки y=(ys1…ysn) из множества Щs, определяемое по формуле:

Таким образом, систему (1.2) можно переписать в следующем виде:

Теперь обратимся к случаю, когда Щs имеют пересечения. Тогда лучшее распределение средств между инвестиционными проектами будем искать решая задачу максимизации или минимизации (в зависимости от выбранного параметра) одного из наиболее важного параметра, при выборе проекта на множестве. Например, это может быть задачи минимизации риска или задача максимизации чистого дисконтированного дохода. Математически это выглядит так:

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

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

Математическая постановка задачи.

Сформулируем математическую постановку задачи. Пусть имеется n инвестиционных проектов, m экспертов и m параметров, по которым оценены проекты. Пронумеруем все проекты диверсификации, пусть i — порядковый номер направления (i =1…n). Считается известными элементы матрицы Аji, где элемент матрицы aji обозначает значение параметра j (j=1…m) для инвестиционного параметра с номером i (i =1…n). Каждый эксперт формирует вектор Pj=(Pj1, Pj2, …, Pjn), j =1…m, где Pjiпорядковый номер проекта диверсификации, который по мнению эксперта, оценивающего параметр с номером j, занимает i-ое место. В каждом таком векторе первое место занимает наиболее привлекательное, с точки зрения рассматриваемого параметра, проект диверсификации и далее по убыванию. Затем каждому вектору Pj поставим в соответствие вектор рj = (рj1, рj2, …, рjn), сформированный по правилу: координата рji — число проектов, которые согласно j-му частному критерию являются более предпочтительными, чем проект, имеющий порядковый номер i.

Теперь необходимо построить матрицу потерь R с элементами rkl, где k, l = (1…m). Для этого рассматривается такой вектор р = (р1, р2,…, рk, …, рn), в котором k-ый проект стоит на l-ом месте, математическая запись координат этого вектора выглядит так рk (l)= l-1. Тогда элементы матрицы потерь считаются следующим образом:

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

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

Причем хkl=1, если к-ая альтернатива назначена на l-ое место, и хkl=0 в противном случае. В результате решения задачи о назначениях будет получена матрица X*={x*kl}, по которой будет восстановлен вектор Р*= (p*1, …p*n), координаты которого, наиболее точно будут отражать мнения экспертов, относительно привлекательности проектов. Чтобы восстановить вектор Р*, будем анализировать матрицу X* по строкам: если x*kl=1, то в векторе P* будем считать p*l = k.

Применим метод парных сравнений, с его помощью рассчитываем весовые коэффициенты, которые и будут соответствовать части средств, вкладываемых в каждое из направлений. Будем формировать матрицу парных сравнений L с элементами аkl, где k, l=(1…n). Элементы матрицы L формируются таким образом:

Затем считаем сумму элементов каждой строки

и величину:

Далее находим вектор Z = (z1, …, zn), где координаты zk, соответствуют долям средств, вкладываемых в проект диверсификации с номером k:

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

3. Диверсификация производства энергетического предприятия. Когенерация

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

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

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

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

Для апробирования алгоритма принятия решения в поиске наиболее рентабельного варианта диверсификации используются данные предоставленные финансовыми аналитиками теплоэнергетического предприятия. На данном теплоэнергетическом предприятии имеется все необходимое оборудование для производства электроэнергии, но до сих пор оно пользовалось услугами электростанций, что повлекло за собой значительные затраты на производство вследствие последних увеличений тарифов на потребление электроэнергии. На предприятии было принято решение о когенерации, но потребовалось правильно, с точки зрения экономической эффективности выбрать объемы производства электроэнергии и теплоэнергии. Рассматриваются следующие варианты структуры производства: 5% электроэнергии и 95% теплоэнергии, 10% электроэнергии и 90% теплоэнергии, 15% теплоэнергии и 85% теплоэнергии. Для каждого структурного маневра рассматриваются различные варианты роста тарифов на производимую теплои электроэнергию, так как от тарифов зависит непосредственная прибыль предприятия. Рассматриваются варианты прироста тарифов на 15%, 20%, 25%, 30% и 35% относительно базового. На предприятии был проведен финансовый анализ производства, после чего окончательно были сформированы возможные варианты диверсификации или инвестиционные проекты. Данные по инвестиционным проектам приведены в таблицах:

Таблица 1. Проект 1 — производство 5% электроэнергии и 95% теплоэнергии.

Параметры

Значения параметров

Варианты прироста тарифа, %

Производство тепловой энергии, Гкал

Производство электроэнергии, Мвт

Тариф на отпускаемое тепло, руб.

Совокупные затраты на теплосистму, на 1 Гкал, руб.

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

Объем тепла, тыс. руб.

Собственные инвестиции организации на тепло на 1 Гкал, руб.

0,43

0,43

0,43

0,43

0,43

Собственные инвестиции на весь объем тепла, тыс. руб.

Тариф на отпускаемую э/энергию, руб.

Совокупные затраты на электросистему, на 1 Мвт

Совокупные затраты на весь объем э/энергии, тыс. руб.

Объем э/энергии, тыс. руб.

Государственные инвестиции в коммунальную энергетику на единицу энергии, руб.

Государственные инвестиции в коммунальную энергетику на весь объем, тыс. руб.

Всего инвестиций на энергосистему, тыс. руб.

Совокупные затраты на содержание и развитие городской энергосистемы на весь объем энергии, тыс. руб.

Суммарный объем отпущенной энергии, тыс. руб.

Чистый дисконтированный доход от проекта диверсификации

— 730 200

— 460 593

— 176 289

Таблица 2. Проект 2 — производство 10% электроэнергии и 90% теплоэнергии.

Параметры

Значения параметров

Варианты прироста тарифа, %

Производство тепловой энергии, Гкал

Производство электроэнергии, Мвт

Тариф на отпускаемое тепло, руб.

Совокупные затраты на теплосистму, на 1 Гкал, руб.

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

Объем тепла, тыс. руб.

Собственные инвестиции организации на тепло на 1 Гкал, руб.

0,44

0,44

0,44

0,44

0,44

Собственные инвестиции на весь объем тепла, тыс. руб.

Тариф на отпускаемую э/энергию, руб.

Совокупные затраты на электросистему, на 1 Мвт

Совокупные затраты на весь объем э/энергии, тыс. руб.

Объем э/энергии, тыс. руб.

Государственные инвестиции в коммунальную энергетику на единицу энергии, руб.

Государственные инвестиции в коммунальную энергетику на весь объем, тыс. руб.

Всего инвестиций на энергосистему, тыс. руб.

Совокупные затраты на содержание и развитие городской энергосистемы на весь объем энергии, тыс. руб.

Суммарный объем отпущенной энергии, тыс. руб.

Чистый дисконтированный доход от проекта диверсификации

— 737 927

— 472 458

— 190 580

Таблица 3. Проект 3 — производство 15% электроэнергии и 85% теплоэнергии.

Параметры

Значения параметров

Варианты роста тарифа, %

Производство тепловой энергии, Гкал

Производство электроэнергии, Мвт

Тариф на отпускаемое тепло, руб.

Совокупные затраты на теплосистму, на 1 Гкал, руб.

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

Объем тепла, тыс. руб.

Собственные инвестиции организации на тепло на 1 Гкал, руб.

0,45

0,45

0,45

0,45

0,45

Собственные инвестиции на весь объем тепла, тыс. руб.

Тариф на отпускаемую э/энергию, руб.

Совокупные затраты на электросистему, на 1 Мвт

Совокупные затраты на весь объем э/энергии, тыс. руб.

Объем э/энергии, тыс. руб.

Государственные инвестиции в коммунальную энергетику на единицу энергии, руб.

Государственные инвестиции в коммунальную энергетику на весь объем, тыс. руб.

Всего инвестиций на энергосистему, тыс. руб.

Совокупные затраты на содержание и развитие городской энергосистемы на весь объем энергии, тыс. руб.

Суммарный объем отпущенной энергии, тыс. руб.

Чистый дисконтированный доход от проекта диверсификации

— 745 460

— 485 243

— 206 135

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

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

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

Введение

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

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

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

Таблица 4. Полученные после решения поставленных выше задачь результаты:

Параметры

5% электроэнергии и

95% теплоэнергии

10% электроэнергии и 90%теплоэнергии

15% электроэнергии и 85% теплоэнергии

Порядковые номера проектов диверсификации

Варианты роста тарифа, %

Производство тепловой энергии, Гкал

Производство электроэнергии, Мвт

Тариф на отпускаемое тепло, руб.

Совокупные затраты на теплосистму, на 1 Гкал, руб.

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

Объем тепла, тыс. руб.

Собственные инвестиции организации на тепло на 1 Гкал, руб.

0,43

0,43

0,44

0,44

0,45

0,45

Собственные инвестиции на весь объем тепла, тыс. руб.

Тариф на отпускаемую э/энергию, руб.

Совокупные затраты на электросистему, на 1 Мвт

Совокупные затраты на весь объем э/энергии, тыс. руб.

Объем э/энергии, тыс. руб.

Государственные инвестиции в коммунальную энергетику на единицу энергии, руб.

Государственные инвестиции в коммунальную энергетику на весь объем, тыс. руб.

Всего инвестиций на энергосистему, тыс. руб.

Совокупные затраты на содержание и развитие городской энергосистемы на весь объем энергии, тыс. руб.

Суммарный объем отпущенной энергии, тыс. руб.

Чистый дисконтированный доход от проекта диверсификации

Для поиска наиболее рентабельного проекта, применим алгоритм, рассмотренный в главе 2. Этот алгоритм поиска позволит нам оценить все значения экономических параметров, по которым оценивались инвестиционные проекты. Алгоритм реализован в виде программы на языке C#, в Microsoft Visual Studio 2005, текст программного кода, с комментариями и скриншотами содержится в приложении.

В результате запуска программы было получено два вектора. Первый вектор P* =(2, 6, 4, 3, 1, 5), координаты которого, являются номерами инвестиционных проектов, упорядоченных таким образом, что наиболее привлекательным является тот, который занимает первое место. Второй вектор Z= (0.083,0.306, 0.14, 0.19, 0.03, 0.25), координаты которого, обозначают весовые коэффициенты привлекательности проектов когенерации. Таким образом, наиболее привлекательным для развития является проект под номером два, с весовым коэффициентом 0.306, это проект с долей выпуска электроэнергии 5%, а теплоэнергии — 95%, при условии прироста тарифа на теплоэнергию относительно базового на 35%. С точки зрения предприятия полученный результат выглядит весьма привлекательно. Нужно заметить, что из всех проектов данный имеет самый высокий чистый дисконтированный доход, что является существенным преимуществом его перед остальными. Однако, относительно высокий прирост тарифов на теплои электроэнергию может быть неприемлем с социальной точки зрения. Считается, что максимальный прирост тарифов не должен превышать 30%. Однако инфляционные ожидания в кризисный период могут значительно превысить сложившиеся в нормальных условиях представления о темпах инфляции. Будем считать, что полученные результаты вполне корректны. С логической точки зрения, поскольку предприятие собирается пробовать себя на рынке электроэнергии, начинание нового бизнеса с малых объемов вполне оправдано, так как конкурентов в сфере производства электроэнергии весьма достаточно. Не исключено, что произведенная электроэнергия может оказаться невостребованной. Начиная с малых объемов, есть шанс постепенно увеличивать клиентскую базу, и как только она станет достаточной, возникнет вопрос об увеличении объема производства электроэнергии в процессе когенерации. Обратим внимание, что проект с номером 6 (электроэнергии 10% и 90% теплоэнергии, рост тарифа в 35%), стоит на втором месте в векторе Р* и имеет достаточно высокий весовой коэффициент согласно вектору Z, равный 0.25. Он как раз и может быть использован для реализации, если производство электроэнергии будет выгодным предприятию.

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

РЕЗУЛЬТАТЫ ПРОДЕЛАННОЙ РАБОТЫ.

В дипломной работе были получены следующие результаты

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

· Для нахождения решений для модели, рассмотренной в третьей главе, реализовано программное обеспечение на языке C++, в Microsoft Visual Studio 2005.

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

· Мительман С. А. «Теоретические и практические основы диверсификации капитала» 2004 г.

· Ерзин А. И. «Исследование операций» лекции.

· Алаева О. А. Савин А.Г. Разработка электронной модели системы теплоснабжения г. Москвы //" Новости теплоснабжения", № 11−2007

· Н. Антонов, Л. Татевосова. Тариф развития и инвестирование теплоснабжения муниципальных образований 2007 г. http://df7.ecfor.rssi.ru/

· Добрякова А. В. Мяков С.Б. Реализация инвестиционных проектов по реконструкции региональных энергетических комплексов и систем коммунальной инфраструктуры на основе долгосрочных тарифных соглашений, гарантирующих возврат привлеченных инвестиционных ресурсов// «Новости теплоснабжения», № 8 2006. http://www.ntsn.ru

· Дубров А. М., Лагоша Б. А., Хрусталев Е. Ю., Барановская Т. П. Моделирование рисковых ситуаций в экономике и бизнесе. — М.: Финансы и Статистика, 2001, 224 с.

· Клименко В. А., Орлов Ю. Н. Математическая модель оптимизации системы теплоснабжения региона//Препринт ИПМ им. М. В. Келдыша РАН Москва, 2003

· Концепция развития теплоснабжения в России, включая коммунальную энергетику, на среднесрочную перспективу. Принята Департаментом Госэнергонадзора РФ. -М., 2002 г.

· Проект «Методические рекомендации по разработке и реализации программ комплексного развития систем теплоснабжения, расположенных в границах муниципальных образований» http://www.rosteplo.ru/Npb_files/npb_shablon.php?id=1126

· Семенов В. Г. Оценка возможности организации конкуренции в системах теплоснабжения//Информационная система по теплоснабжению, 2006 www.rosteplo.ru

· Сигал И. Х., Иванова А. П.

Введение

в прикладное дискретное программирование: модели и вычислительные алгоритмы. Учеб. пособ. — М.: ФИЗМАТЛИТ, 2002.

· Травников Ю. Теплоэнергетика нуждается в обновлении 14.05.2007 www.eprussia.ru

· Хрилев Л. С., Малофеев В. А., Харламов А. А., Лившиц И. Я. Сравнительная оценка отечественных и зарубежных методов разделения расхода топлива в формировании тарифов на ТЭЦ // Теплоэнергетика. — 2003. -№ 4. — С. 45−54.

ПРИЛОЖЕНИЕ

Программа для решения задачи, где каждый эксперт придерживается четко определенного мнения о необходимости поддержки каждого проекта, реализован на языке C#, в Microsoft Visual Studio 2005. Приведем описание программного кода и скриншотов программы.

Входными данные для программы записываются в файл input.txt. Первая строка файла это число параметров, по которым будут оцениваться проекты диверсификации, во второй строке вводится число проектов предложенных для развития. Далее по строкам перечисляются наименование параметров, по которым будут оцениваться проекты. После ввода наименований параметров задаются значения aji элементов матрицы A, где aji это значение параметра с номером j для направления с номером i.

Рис. 1 «Пример содержания данных в файле input. txt»

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

Рис. 2. «Форма, открывающаяся при запуске программы»

После нажатия на кнопку «Запустить» выполняется основной программный код, который является реализацией алгоритма поиска решений для задачи выбора наиболее выгодного проекта диверсификации. Открывается форма, на которой приведен вектор, координаты которого являются порядковыми номерами проектов, наиболее выгодных для развития. Так же на форме выводится вектор Z = (z1,…zn), где координаты zi обозначают весовые коэффициенты привлекательности проекта с порядковым номером i.

Рис. 3. «Форма, содержащая решение задачи»

Ниже приведен программный код, с комментариями.

class loadinput // Класс loadinput используется для загрузки матрицы A из файла input. txt

{

public double[,] in1 = new double[20,20];

public int m, n; // Размерность матрицы A

public string[] Desc = new string[20];

public loadinput ()

{ }

public void load ()

{

StreamReader sr = new StreamReader («input.txt», System.Text.Encoding.GetEncoding (1251));

m = Convert. ToInt32(sr.ReadLine ());

n = Convert. ToInt32(sr.ReadLine ());

for (int j = 1; j < (m + 1); j++)

Desc[j] = sr. ReadLine ();

Regex r1;

Match m1;

for (int j = 1; j < (m+1); j++)

{

string line = «» ;

line = sr. ReadLine ();

int tmp = 0;int i=0;

r1 = new Regex («(?<1>(t+)|(r+))», RegexOptions. IgnoreCase | RegexOptions. Compiled);

for (m1 = r1. Match (line); m1. Success; m1 = m1. NextMatch ())

{

i++;

in1[j, i] = Convert. ToDouble (line.Substring (tmp, m1. Groups[" 1″ ]. Index — tmp));

tmp = m1. Groups[" 1″ ]. Index;

}

i++;

in1[j, i] = Convert. ToDouble (line.Substring (tmp, line. Length-tmp));

}

}

}

class recurs // Класс recurs используется для рекурсивного перебора элементов матрицы X

{

public int n = 0; //кол-во столбцов матрицы X

public int y = 0; //кол-во строк матрицы X

public int[] mas = new int [20];

public bool stop = false;

public recurs (int n1, int y1)

{

n = n1; y = y1−1;

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

mas[i] = 0;

}

public void next (int x)

{

if (mas[x] < y) mas[x] = mas[x] + 1;

else

{

if (x == 0) { stop = true; }

else

{

mas[x] = 0;

next (x — 1);

}

}

}

}

class Points // Класс Points используется для ранжирования элементов матрицы A по строкам

{

public int x; // Порядковый номер столбца матрицы A

public double y; // Значение элемента матрицы A

public Points (int key1, double key2)

{

x = key1;

y = key2;

}

public double Y

{

get

{

return y;

}

}

}

class myComparer: IComparer // Класс myComparer используется для ранжирования элементов матрицы A по возрастанию

{

int IComparer. Compare (object obj1, object obj2)

{

if (((Points)obj1).Y < ((Points)obj2).Y) return -1;

if (((Points)obj1).Y == ((Points)obj2).Y) return 0;

if (((Points)obj1).Y > ((Points)obj2).Y) return 1;

else return 0;

}

}

class myComparer2: IComparer // Класс myComparer2 используется для ранжирования элементов матрицы A по убыванию

{

int IComparer. Compare (object obj1, object obj2)

{

if (((Points)obj2).Y < ((Points)obj1).Y) return -1;

if (((Points)obj2).Y == ((Points)obj1).Y) return 0;

if (((Points)obj2).Y > ((Points)obj1).Y) return 1;

else return 0;

}

}

public partial class Form1: Form // Основное тело программы

{

loadinput li;

public Form1()

{

InitializeComponent ();

li = new loadinput ();

li.load (); // функция загрузки элементов матрицы A из файла

input.txt

for (int i = 0; i < li. m; i++) // Вывод на экран параметров по которым будут оценены проекты

checkedListBox1.Items.Insert (i, li. Desc[i + 1]);

}

private void button2_Click (object sender, EventArgs e)

{

button2.Enabled = false;

int[,] p = new int[20,20];

for (int i = 0; i < (li.m); i++)

{

Points[] itArr = new Points[li.n]; // массив объектов класса

Points.

for (int j = 0; j < (li.n); j++) //каждый объект характеризуется порядковым номером и значением элемента в строке матрицы A

itArr[j] = new Points (j, li. in1[i + 1, j + 1]); if (checkedListBox1.GetItemChecked (i) == true)

{ myComparer2 c = new myComparer2(); System.Array.Sort (itArr, c); } // упорядочивание объектов класса Points по убыванию

(возрастанию) значений элемента в строке матрицы A

else

{ myComparer c = new myComparer (); System.Array.Sort (itArr, c); }

for (int j = 0; j < (li.n); j++)

p[i, j] = itArr[j]. x; // вычисление матрицы P строка матрицы P — вектор Pj, элементы которого Pji обозначают порядковый номер проекта занимающий согласно

jому частному критерию i-ое место

int[] kk = new int[20];

for (int j = 0; j < (li.n); j++)

kk[p[i, j]] = j;

for (int j = 0; j < (li.n); j++)

p[i, j] = kk[j]; // преобразование матрицы P в матрицу П, где строка матрицы P

состоит из векторов Пj, элементы которого Пji обозначают число проектов которые согласно j-ому частному критерию являются предпочтительней чем проекты с номером i

int[,] matr_r = new int[20, 20];

for (int k = 0; k < (li.n); k++)

for (int l = 0; l < (li.n); l++)

{

int sum = 0;

for (int j = 0; j < (li.m); j++)

{

sum += Math. Abs (l-p[j, k]);

}

matr_r[k, l] = sum; // Расчет матрицы R — матрицы потерь

}

// решается задача о назначении Симплекс-методом

int[,] matr_x = new int[20, 20];

int[,] matr_x2 = new int[20, 20];

int[] p_vect = new int[20];

int sum_glob = 99 999 999;

recurs recu2 = new recurs (li.n, li. n+1);

while (recu2.stop ≠ true)

{

recu2.next (li.n — 1);

bool ok = true;

for (int i = 0; i < (li.n); i++)

{

if (ok == false) break;

for (int j = 0; j < (li.n); j++)

{

if ((recu2.mas[i] == recu2. mas[j]) &&(i≠j))

{

ok = false; break;

}

if (recu2.mas[i] == 0) { ok = false; break; }

}

}

if (ok == true)

{

for (int i = 0; i < (li.n); i++)

for (int j = 0; j < (li.n+1); j++)

{

if ((recu2.mas[i] == j)&&(j≠0)) matr_x[j, i] = 1;

else matr_x[j, i] = 0;

}

int sum_t_xr=0;

// вычисление произведения матриц R и X

for (int i = 0; i < (li.n); i++)

for (int j = 0; j < (li.n); j++)

sum_t_xr += matr_x[i + 1, j] * matr_r[i, j];

if (sum_glob > sum_t_xr)

{

sum_glob = sum_t_xr;

//сохраним матрицу X*

for (int i = 1; i < (li.n + 1); i++)

for (int j = 0; j < (li.n); j++)

matr_x2[i, j] = matr_x[i, j];

// алгоритм построяния вектора p* - наиболее точно отражающих мнения экспертов о привлекательности проектов

for (int j = 0; j < (li.n); j++)

p_vect[j] = recu2. mas[j];

}

}

}

string tmp = «Вектор P* nr («;

for (int j = 0; j < (li.n); j++)

tmp += p_vect[j]. ToString ();

tmp += «)nr» ;

// строется матрица парных сравнений L

int[,] matr_a = new int[20, 20];

for (int i = 0; i < (li.n); i++)

for (int j = 0; j < (li.n); j++)

{

int i5=i+1; int i6=j+1;

int q1= tmp. LastIndexOf (i5.ToString ());

int q2 = tmp. LastIndexOf (i6.ToString ());

if (q1 < q2) matr_a[i, j] = 2;

if (q1 == q2) matr_a[i, j] = 1;

if (q1 > q2) matr_a[i, j] = 0;

}

// найдем сумму элементов матрицы парных стравнений по строкам

int[] sum_strok = new int[20];

for (int i = 0; i < (li.n); i++)

{

int sum2 = 0;

for (int j = 0; j < (li.n); j++)

{

sum2 += matr_a[i, j];

}

sum_strok[i] = sum2;

}

// найдем сумму всех элементов матрицы парных сравнений

int obsh_summa = 0;

for (int i = 0; i < (li.n); i++)

obsh_summa += sum_strok[i];

// ищутся весовые коэффициенты привлекательности проектов диверсификации

double[] doli = new double[20];

for (int i = 0; i < (li.n); i++)

doli[i] = (double)sum_strok[i] / (double)obsh_summa;

// Вывод вектора P*

tmp = «Вектор P* = («;

for (int j = 0; j < (li.n); j++)

{

tmp += p_vect[j]. ToString ();

if (j ≠ (li.n — 1)) tmp += «,» ;

}

tmp += «) — координаты обозначают порядковые номера проектов диверсификации упорядоченных по убыванию. На первом месте стоит порядковый номер проекта наиболее выгодного для развития. nr» ;

//MessageBox.Show (tmp);

string tmp1="Вектор Z =(«;

for (int i = 0; i < (li.n); i++)

{

int length = 6;

if (doli[i]. ToString ().Length < 6) length = doli[i]. ToString ().Length;

tmp1 += doli[i]. ToString ().Substring (0, length);

if (i ≠ (li.n — 1)) tmp1 += «; «;

}

MessageBox.Show (tmp+" nr" +tmp1+") — координата Zi обозначает весовой коэффициент привлекательности проекта диверсификации под номером i." ," Ответ"); // вывод весовых коэффициентов привлекательности

}

}

Показать весь текст
Заполнить форму текущей работой