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

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

 

Рисунок 1 - Максимальные значения добычи нефтегазового конденсата при заданных уровнях инвестирования для ДАО Пурнефтегаз.

 

Таким образом, можно определить верхние границы рационального инвестирования. В рассматриваемом случае применение разработанного метода построенияфункции Беллмана для оптимизации инвестиций на заданном временном интервале дает следующий результат: для объема инвестиций 571 324213,4 руб., максимальный объем добычи составит 7 598 451 тонн. Полученное оптимизированное распределение инвестиций по месторождениям ДАО Пурнефтегаз и соответствующие планируемые объемы добычи приведены в таблице 1.3.

 

Таблица 1.3

Результаты оптимизации распределения инвестиций в объеме 571324,2134 тыс. руб.

Месторождение

Объем инвестиций, Объем добычи,
тыс. руб. тыс. тонн
Южно- Тарасовское 15136,5676 506,2
Восточно- Янгтинское 34576,773 1205,5
Фестивальное 11049,4692 281,1
Южно- Харампурское 71993,7218 1083
Тарасовское 126137,8426 1454,56
Барсуковское 118999,3266 1248,199
Западно-Пурпейское 4289,0694 70,2
Северо-Таросовское 11466,6552 271,104
Ново- Пурпейское 17062 232,22
Харампурское 42284,781 405,795
Комсомольское 74448,4972 570,2
Верхне- Пурпейское 18532,9914 130,893
Северо- Комсомольское 19676,0998 88,58
Губкинское 3606,3412 29,4
У сть- Харампурское 2064,0774 21,5
Суммарно 571324,2134 7598,451

 

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



ЗАКЛЮЧЕНИЕ

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

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

Разработанные в большом количестве концепции реформирования газовой отрасли России отражают позиции различных министерств и заинтересованных сторон (МЭРТ, РСПП, Союзгаза, ОАО «Газпром»). Ни одна из этих концепций экономически не была обоснована. Анализ предложений реформирования позволяет сказать, что одним из правильных решений проблем отрасли является повышение цен на газ для промышленных потребителей до экономически обоснованного уровня, что приведет к снижению спроса. Это, во-первых, избавит ОАО «Газпром» от убытков на внутреннем рынке, а во-вторых, позволит увеличить экспорт, который в основном и формирует прибыль ОАО «Газпром». Еще одним следствием станет освоение свободных сегментов рынка независимыми производителями газа, ресурсы которых могут заполнить соответствующие ниши. Возможное предложение газа НПГ на рынке в будущем составит 150-170 млрд. мЗ.

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

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

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

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

Основным камнем преткновения остается вопрос об организации всех аспектов транспортировки газа, другими словами реструктуризации ОАО «Газпром». Осенью 2003 г. МЭРТи «Газпром» обнародовали свои оценки возможного повышения оптовых цен на газ в результате обеспечения недискриминационного доступа поставщиков к трубопроводной системе. В его основе — рост тарифов на прокачку газа после выделения газотранспортной компании из структуры «Газпрома».

В своих расчетах «Газпром» исходил из того, что арендующая у него трубопроводное хозяйство газотранспортная компания будет инвестировать в транспортную инфраструктуру, погашать часть кредиторской задолженности головной организации и выплачивать повышенные дивиденды. В результате тариф за транспортировку 1 тыс. куб. м газа на сто километров вырастет до 32,91 руб., оптовая цена газа вырастет до 38 долл. за 1 тыс. куб. м. По оценке МЭРТ, эта цена возрастет до 33 долл. за 1 тыс. куб. м.

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

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

2. Российский рынок газа в современном состоянии не имеет развитой рыночной инфраструктуры и конкурентной среды. Его характерной особенностью является весьма высокая степень государственного регулирования. Особенностью функционирования российской газовой отрасли является и то обстоятельство, что многие функции государственного регyлирования до сих пор выполняются крупнейшей компанией-монополистом - ОАО «Газпром», что, на взгляд независимых производителей, не является нормальным, т.к. усиливает доминирование этой компании и при водит к многочисленным перекосам и снижению экономической эффективности газовой отрасли страны в целом.

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

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

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

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

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

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

Формирование рынка газа позволит решить следующие задачи:

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

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

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

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

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

Важнейшим условием развития рынка газа в России является отказ от практики государственного регулирования оптовых цен на газ и поэтапный переход к государственному регулированию тарифов в сфере ественной монополии на транспортировку газа.

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

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

· установление цен на газ с учетом эффективности его использования, а в ближайшие три года как минимум на уровне обеспечения самофинансирования газовой отрасли;

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

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

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

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

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

На основе разработанного метода оптимизации инвестиций получены алгоритм и его компьютерная реализация на языке Visual Basic for Application, находящие глобальный оптимум целевой функции и учитывающие специфику возможных вариантов инвестиций в добычу нефтегазового конденсата. Рассчитаны оптимальные варианты распределения инвестиций по месторождениям, обеспечивающие максимальные суммарные объемы добычи нефтегазового конденсата на каждом возможном уровне инвестиций. На основе такого типа результатов руководство компании может просчитывать одновременно несколько стратегий инвестирования и, в зависимости от рыночной конъюнктуры и наличия финансовых ресурсов, принимать оптимальное решение. Подтверждена применимость метода приведенными расчетами максимальных значений добычи при заданных уровнях инвестирования для ДАО Пурнефтегаз.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ:

1. Баранов В.Н. «Независимые производители и перспективы развития газовой отрасли России».

2. Сборник докладов и выступлений «Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»

3. Язев В. «Природный газ».

4. Ермолов О.В., Миловидов К.Н., Чугунов Л.C., Ремизов Л.С. «Стратегия развития нефтегазовых компаний» 1998 г

5. www.gasforum.ru

6. Авдокуши Е.Ф. «Международные экономические отношения» 1999 г.

7. Киреев А. «Международная экономика: движение товара и факторы производства» Часть первая 2000 г.

8. Журнал «Газовый бизнес» январь-феврель 2006г.

9. Офицеров вл., Судзиловский Н.Б. Об одном типе задач линейного программирования и их решении // Известия АН СССР. Техническая кибернетика. - 1981. - N2 6. - С. 14-17.

10. Офицеров вл., Смирнов с.в. Моделирование и оптимизация снабженческой деятельности для крупных компаний // Проблемы управления и моделирования в сложных системах: Труды V международной конф. (Самара, июнь 2003). - Самара: Самарский НЦ РАН, 2003. - С. 197-205.

11. Беллман Р., Дрейфус С. Прикладные задачи динамического программирования. - М.: Наука, 1965. - С. 98.


 


ПРИЛОЖЕНИЕ

 

Листинг программы для оптимизация инвестиций в месторождения на языке программирования VBA

 

Option Explicit ' Все переменные должны описываться

Option Base 1 'Индексы всех массивов начинаются с 1

Туре Mestorozhdenie:Далее будет определен массив этого типа

Name As String 'Имя месторождения

KolVart As lnteger 'Колич вариантов инвестирования

Lnv() As DoubIe 'Будет определен массив вариантов вложений

Dob() As ОоиЫе 'Будет определен массив объемов добычи

End Туре

Туре АО 'Далее будет определен массив этого типа

NameDAO As String 'Имя ДАО

KolMestor As Integer 'Количество MecTopo)jCД в ДАО

MestorO As Mestorozhdenie 'Будег определен массив месторожд ДАО

End Туре

Туре DAO_dob 'Далее будет определен массив этого типа

Name As String 'Имя ДАО

Invest As ОоиЫе 'Инвестиции в ДАО

Dob As ОоиЫе 'Добыча ДАО

End Туре

Туре Maxl

FMAX As ОоиЫе 'Значение функционалана ресурсу, размер массива = числу эффективных вариантов ресурса FNameDAO As String 'Имя ДАО

FNameMestor As String 'Имя месторождения

Flnv As ОоиЫе 'Будет определено вложение средств

FDob As ОоиЫе 'Будет определен объем соответствующей добычи

F _i_INV As Long 'Будет определен индекс инвестирования

End Туре

Туре Мах2

FMAX As ОоиЫе Значение функционалана ресурсе, размер массива = числу эффективных вариантов ресурса FNameDAO As String 'Имя ДАО

NmMestor As String Имя месторождения, дающего последнее приращение

FNameMestorO As String 'Имя месторождения

Flnv As DoubIe 'Будет определено вложение средств

FDob As ОоиЫе 'Будет определен объем соответствующей добычи

F _UNV As Long 'Будет определен индекс инвестирования

End Туре

 

Описание глобальных переменных, видимых во всех процедурах модуля

 

Dim DataВook As String 'Переменная для запоминария имени книги с данными

Dim ProgramBook As String 'Переменная для запоминария имени книги

Dim ResultBook As String 'Переменная для запоминария имени книги с результатами

Dim Row, Column As Integer 'Переменные для сохранения текущего номера ячейки

Dim Sredstva As ОоиЫе 'Общие максимальные средства на добычу

Dim Delta As ОоиЫе 'Интервал приращения средств

Dim PumeftSheet As String 'Переменная для имени листа Пурнефтегаз

Dim SahalinmorSheet As String 'Переменная для имени листа Сахалинморнефтегаз

Dim KrasnodarSheet As String 'Переменная для имени листа Краснодарнефтегаз

Dim StavropSheet As String 'Переменная для листа Ставропольнефтегаз

Dim DagneftSheet As String 'Переменная для ли:;та Дагнефтегаз

Dim TermneftSheet As String 'Переменная для листа Термнефтегаз

Dim GrozneftSheet As String 'Переменная для листа Грознефтегаз

Dim N_DAO As Integer 'Число ДАО

Dim ОАОО As АО 'Определили динамич массив структур ДАО, месторождений, вариантов инв

Sub General() 'Управляющая процедура

Dim FМAXlO As Maxl 'Определили структуру соотв. найденному макс Фун*,ла для одной перем. Dim FMAX20 As ОоиЫе 'Определили рабочее соотв. найденному макс функ-ла.

Dim FMAX30 As Maxl

Dim FMAX40 As Мах2 'Определили соотв. найденному макс функ-ла.

Dim Tst_MAX, Tst_MIN As ОоиЫе 'Переменые для тестирования максимума и минимума

Dim i_DAO, ii_DAO, i_Mestor, ii_Mestor, i_tstMestor, i_ Vart, ii_ Vart, i, fflag, fflagl As Integer 'Индексы для просмотра

Dim N_INV, M_INV As Long 'Максимальное число приращений (для всех в сумме и для одного максимального)

Dim S_INV As Long 'Минимальное значение инвестирования (в вариаmах)

Dim N_Fact_INV, ii_Fact_INV, i_Fact_INV As Long 'Фактическое число вариантов инвестирования

Dim i_INV, nn_Fact_INV, ii_INV As Long 'значение текущею номера вариаmа инвестирования Dim j_in_i1NV As Long 'З,начение текущего номера варианта инвестирования в рамках i

Dim V _i_INV As Double 'Значение текущего варианта инвестирования

Dim V j_in_iINV As Double 'значение текущего варианта инвестирования

Dim N_Mestor As Integer 'Число месторождений (текущее рабочее опред:ление)

Dim Flg As Integer 'флаг для определиния было ли изменене максимума

Dim Мах_Мах As Double 'абсолютный максимум

DataBook = ""

ProgramВook = ''''

ResultBook = ""

'Начало работы, процедура открытия файла с исходными данными

'1)

Сall OpenDataFile

'Определяем отказ от работы

If DataBook = "" Then

Exit Sub

End If

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

Application,StatusBar = "Создаются массивы с данными"

Вводим исходные данные

Саll GetData

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

Sredstva = О

Tst_MIN = 999999999999#

Мах_Мах = О 'сейчас для поиска максимального варианта инвестирования

Fоr i_DAO = 1 То N_DAO

Fоr i_Mestor = 1 То DАО(i_DАо).коlМеstог

Выбор максимального варианта инвестирования среди текущих вариamов

Tst_MAX=O

Рот i_ Vart = 1 То DAO(i_DAO),Mestor(i_Mestor).KoIVart

IfTst_MAX < DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then

Tst_MAX = DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) End If

'Выбор максимального варианта инвестирования среди всех

IfMax_Max < DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then

Мах_Мах = DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) End If

'Выбор нач. знач для инвестирования

IfTst_MIN > DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then

Tst_MIN = DАО(i_DАО).Меstш(i_Меstог).Iпv(i_ Vart)

End If

Next i_ Vart

Sredstva = Sredstva + Tst_MAX Next i_Mestor

Nexti_DAO

'Начальное значение инвестирования V _i_INV = Tst_MIN

Tst_ MIN = 99999999999999#

'Выбор вариаmа DEL ТА для полного оптимума

Fог i_DAO = 1 То N_DAO

Fог i_Mestor = 1 То DAO(i_DAO).KoIMestor

Fот i_ Vart = 1 То DАО(i_DАО).Меstог(i_Меstог).коIVагt Рот ii_DAO = i_DAO То N_DAO

Fот ii_Mestor = 1 То DAO(ii_DAO).KoIMestor

Рот ii_ Vart = 1 То DАО(ii_DАО).Меstог(ii_Меstог).коIVагt

'Выбор варианта приращения инвестирования

If Abs(DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) - DAO(ii_DAO).Mestor(ii_Mestor).Inv(ii_ Vart» <> О Then

IfTst_MIN>Abs(DAO(i_DAO).Mestor(i_Mestor).Inv(i_Vart)DAO(ii_DAO.Mestor(ii_Mestor).Inv(ii_ Vart» Then

Tst_MIN = Abs(DAO(i_DAO).Mestor(i_Mestor).Inv(i_Vart)-DAO(ii_DAO).Mestor(ii_Mestor).Inv(ii_ Vart»

End If

End If

Next ii_ Vart

Next ii_Mestor

Nextii DAO

Next i_ Vart

Next i_Mestor

Nexti_DAO

**************************************************

Заполнение для 'всевозможных вариантов инвестирования

Вычисление общего числа месторождений

N _ Mestor = О 'нач знач общего числа местор.

For i_DAO = 1 То N_DAO

N_Mestor = N_Mestor + DAO(i_DAO).KoIMestor

Next i_DAO

Delta = Tst_MIN

Flg=O

M_INV = Iпt(Мах_Мах / Delta) + 1 'Число приращений для максимального варианта

Tst_ МАХ = О 'нач знач про верки на максимум

Выдаем иформацию в строкеl состояния

Application.StatusBar = "Идет процесс оптимизации"

Определение начальных и конечных индексов в вариантах инвестирования

N_Fact_INV = О 'Начальное число вариантов инвестирования

N_INV = Int(Sredstva / Delta) + 1

S_INV = Int(Tst_MIN / Delta)

IfS_INV = О Then

S_INV = 1

End If

М _ INV = Int(Max _Мах / Delta) + 1 'Число приращений для максимального варианта

For i_INV = S_INV То M_1NV

Текущий объем инвестирования

V _i_INV = Delta * i_INV

For i_DAO = 1 То N_DAO

For i_Mestor = 1 То DАО(i_DАо).коlМеstог

For i_ Vart = 1 То DАО(i_DАО).Меstоr(i_Меstог).коlVагt

Проверка хватает ли текущего объема инвестирования для добычи

IfV _i_INV >= DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then

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

fflag = О

For i = 1 То N]act_INV

IfDAO(i_DAO).Mestor(i_Mestor).Name = FMAX1(i).FNameMestor_

And DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) = _

FMAX1(i).FInv Then

месторождение уже записано

fflag = 1

Exit For

End If

Next i

If fflag = О Then 'записываем в порядке увеличения объемов инвестирования

N_Fact_INV = N_Fact_INV + 1 'Число вариантов инвестиций в для одного месторож

ReDim Preserve FMAX1(N]act_INV)

FMAX1(N]act_INV).FMAX = DAO(i_DAO).Mestor(i_Mestor).Dob(i_ Vart)

FMAXl (N_Fact_INV).F _i_INV = i_INV

FMAX1(N]act_INV).FDob = DAO(i_DAO).Mestor(i_Mestor).Dob(i_ Vart) FMAXl(N]act_INV).Flnv = DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) FMAXl(N]act_INV).FNameDAO = DAO(i_DAO).NameDAO

FMAXl (N ]act_ INV).FNameMestor = DAO(i_ DAO).Mestor(i_ Mestor).Name End If

End lf

Next i_Vart

Next i_Mestor

Nexti_DAO

Next i_INV

********************************************************

Flg=O

ReDim FMAX2(N_INV - S_INV)

Поиск оптимального решения

Tst_MAX = О 'нач знач про верки на максимум

ReDim FMAX4(!)

ReDim FMAX4(!).FNameMestor(N _ Mestor)

Мах_Мах=О nn]act_INV = О

Проход по вариантам финансирования одновременно i_Mestor месторождений

For i_INV = S_INV То N_INV

значение текущего номера варианта инвестирования в рамках общего инвестир i_INV

For j_injINV = S_INV То i_INV

Находим FМAX соответствущий текущеI.jY инвестированию j_in_iINV

Ifj_in_iINV <> UNV Then 'Условие обязательно, если (lIВНЫ, то FMAX2(O)!!!

For i_Fact_INV = 1 То N_Fact_INV

Ifj_in_iINV = FMAX1(i]act_INV).F_i_INV Тhеп

Tst_MAX = FMAX1(i]act_INV).FMAX + FMAX2(i_INV - j_in_iINV)

ExitFor

End If

Next i]act_INV

Else 'если равны,то

For i]act_INV = 1 То N]act_INV

Ifj_in_iINV = FMAXl (i]act_INV).F _i_INV Тhen

Tst_MAX = FMAX1(i]act_INV).FMAX

Exit For

End If

Next i Fact INV

End If

IfTst_MAX> Мах_Мах + 0.00001 Тhen

Flg = 1 'предполагаем, что месторождение еще не используется в финансировании

 

Проверка на участие месторождения в двух финансированиях одновременно

 

Ifj_injINV <> i_INV Тhеп

For i_tstMestor = 1 То nn_Fact_INV

Находим предыдущий индекс объема дающий текущий максимум

IfFMAX4(i_tstMestor).F _i_INV = i_INV - FMAXl(i]act_INV).F _i_INV Тhеп

'Проверяем на совпадение имен среди имен предыдущего индекса

For i_ Vart = 1 То UBoиnd(FMAX4(i_tstМestor).FNameMestor)

IfFMAX4(i_tstMestor).FNameMestor(i_ Vart) = FMAX1(i]act_INV).FNameMestor Тhеп

Попытка улучшить общий результат заменой "старого" варианта

инвестирования в месторождение с этим именем, новым вариантом

If Tst_MAX - FMAX4(i_ Vart).FDob <= Мах_Мах + 0.0001 Тhеп

Flg = О 'месторождение уже используется в финансировании

Tst_MAX = Мах_Мах

fflagl = О

ExitFor

Else 'Попытка замены варианта инвест. в месторождение на этом объеме общих инвестиций Tst_MAX = TsCMAX - FMAX4(i_ Vart).FDob

fflag = i_ Vart

fflagl = 2

Exit For

End If

End If Next i_ Vart End If

lfFJg = О Ог fflagI = 2 Тhen

Exit For

End If

Next i_tstМestor

End If

End If

запись нового результата для данного объема финансирования

IfFlg = 1 Тhen

Flg=O

nn_Fact_INV = nn_Fact_INV + 1

Записываем используемые ранее имена при получении макс на этом объеме

ReDim Preserve FMAX4(nn]act_INV)

ReDim Preseгve FMAX4(nn _Fact_INV).FNameMestor(nn _Fact_ INV) FMAX4(nn]act_INV).FMAX = Tst_MAX

FMAX4(nn]act_INV).FDob = FMAXl(i_Fact_INV).FDob

FMAX4(nn ]act_ INV).Flnv = FMAXl (i]act_ INV).Flnv

FMAX4(nn]act_INV).NmМestor = FMAXl (i]act_INV).FNameMestor

FMAX4(nn_Fact_INV).F _i_INV = i_INV 'Обшие объемы вложения FMAX4(nn_Fact_INV).FNameDAO = FMAX1(i_Fact_INV).FNameDAO

FMAX4(nn ]act_ INV).FNameMestor(nn ]act_ INV) = FMAXl (i_Fact_ INV).FNameMestor

Ifj_in_iINV <> i_INV Тhen

For ii_INV = 1 То nn]act_INV

IfFMAX4(ii_INV).F _i_INV = i_INV - FMAXl(i]act_INV).F _i_INV Тhen

For i_ Vart = 1 То UBound(FMAX4(ii_INV).FNameMestor) FMAX4(nn]act_INV).FNameMestor(i_ Vart) = FMAX4(ii_INV).FNameMestor(i_ Vart)

If fflagl = 2 Then 'Исключаем двойное инвестирование в месторождение, давшее максимум IfFMAX4(ii_INV).FNameMestor(i_ Vart) = FMAXl(i]act_INV).FNameMestor Тhеп FMAX4(nn_Fact_INV).FNameMestor(fflag) = ""

fflagl = О

End If

End If

Next i Vart

End If

Nextii_INV

FMAX4(nn ]act_INV).FNameMestor(nn]act_ INV) = FMAX] (i]act_ INV).FNameMestor

End If

Мах_Мах = Tst_MAX

FMAX2(i_INV) = Мах_Мах

Flg=O

End If

Next j_in _iINV

Nexti_INV

Обработка результатов

Dim OиtRezO As Мах2

Выдача результатов

SubResи1t_oиt(FMAX]О, FMAX40)

End Sиb

Sиb Resиlt_oиt(FМAXIO As Мах], FMAX40 As Мах2)

Dim Sheet As Worksheet 'Переменная для текущих листов

Dim ListNameO As String

Dim arrayindex, nSheets, Add_n_Sheet, OиtSheet As Integer

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

Начальные значения

arrayindex = ] 'Определяет номер имени в массиве имен

nSheets = О

Add_n_Sheet = О

OutSheet = 3 'Необходимое число листов

ReDim ListName(OutSheet)

ListName(l) = "Оптимизация добычи нефти"

ListName(2) = "Для заметок 1"

ListNamе(З) = "Для заметок 2"

ListName(4) = "Максимизация"

 

Формирование имени книги результатов

 

ResиltBook = Time &" "& Date &" "&" Результаты оптимизации "

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

Application.StatusBar = "Создаю книry результатов: "& ResultВook

Создаем новую книry

 

Запрещаем переход на новое окно

 

Application.ScreenUpdating = False

Workbooks.Add

 

Вписываем данные в свойства файла

 

With ActiveWorkbook

Title = ResиltBook

Sиbject = "Оптимизация добычи нефти"

End With

 

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

 

ResиltВook = Replace(ResиltВook, ":", "_")

ResиltBook = Rep]ace(Resи1tBook, ".", "_")

Сохранение файла для изменения имени в текущем каталоге

ActiveWorkbook.SaveAs (ResиltBook)

 

Число листов в открытой книге

 

nSheets = 3

 

Добавляем листы

 

Add_n_Sheet = OиtSheet - nSheets

If Add_n_Sheet > О Тhеп

Worksheets.Add Coиnt:=Add_n_Sheet

End If

 

Переименовываем листы

 

For Eacl1 Sheet In ActiveWorkbook. Worksheets

If IПStr(l, Sheet.Name, "Лист") Тhеп

Sheet.Name = ListName(arrayindex) arrayindex = arrayindex + 1

End If

Next Sheet

 


 

Разрешаем обновление экрана

 

Application.ScreenUpdating = Тгие

 

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

 

Resu1tBook = ActiveWorkbook.Name 'Активизируем книгу с программой

Тhis Workbook.Activate

 

Выдаем результаты по листам

 

For Each Sheet In ActiveWorkbook.Worksheets Select Case Sheet.Name

Case ListName(l) Sheet.Activate СаН Text1lnput

СаН Tabll_Write(FMAX10, FMAX40)

'Case ListName(2)

'Sheet.Activate

'Сall Text2Input

'СаН Tabl2 _ Write(Optimum_ Sk1adO, Optimum ]otrebitel())

'Case ListName(4)

'Sheet.Activate 'СаН Text4Input

'СаН Tabl4_ Write(Optimum]owerFactoгyO)

'ase ListNаmе(З)

'Sheet.Activate

'СаН ТехtЗlnрut

End Select

Next Sheet

ActiveWorkbook.Save 'Сохранение рабочей книги

'ActiveWorkbook.Close 'Закрытие книги

'Wогkshееts(ListNаmе(З)).Activate

'Очищаем StatusBar

Application.StatusBar = False

End Sub

Sub Text1Input()

Dim s, sl As String

Dim Flag As Integer

s= A1"

sl = "L1"

Range(s, sl).Select

With Selection

.HorizontalAlignment = xlCenter

.VeгticalAlignment = xlCenter

.WrapText = False

.Orientation = О

.Addlndent = False

.ShrinkToFit = True

.MergeCeHs = True

End With

With ActiveWorkbook.ActiveSheet

.Range(s, s 1).Font.Size = 16

.Range(s, sl).Font.Bold = True

.Range(s, sl).Font.Name = "Times New Roman"

End With

s= "А2"

sl = "L2"

Range(s, s 1).SeIect

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = О

.Addlndent = False

.shrinkToFit = True

End With

With ActiveWorkbook.ActiveSheet

.Range(s, sl).Font.Size = 12

.Range(s, s 1).Fопt.воld = True

.Range(s, sl).Font.Name = "Times New Roman"

End With

Range("Al:Gl ").Select

ActiveCell.FormulaRICl = "Результаты оптмизации "

Range(" А2:А2 ").Select

ActiveCell.FormulaRICl = "Вложения"

Range("A2").Se1ect

Columns(" A:A").EntireColumn.AutoFit

Range("B2:B2").Select

ActiveCell.FormulaRICl = "МАХ добычи"

Range("B2").Select

Columns("B:B ").Entil'eColumn.AutoFi t

Range("C2:С2 "). Select

ActiveCell.FormulaRICl = "Затраты на единицу"

Range("C2").Select

Columns("C:C").EntireColumn.AutoFi t

Range("D2:D2").Select ActiveCell.FormulaRICl = "Месторождения"

Range("D2").Select Columns("D:D").EntireColumn.AutoFit

Range("E2:E2").Select ActiveCell.FormulaRl Сl = "Инвестиции"

Range("E2").Select Columns("E:E").EntireColumn.AutoFit

Range("F2:F2 ").Select ActiveCell.FormulaRlCl = "Добыча"

Range("F2").Select

Со lumns("F: F").EntireColumn.AutoFit

Range("G2:G2").Select

ActiveCell.FormulaRlCl = "Затраты на единицу"

Range("G2").Select

Columns("G:G").EntireCo lиmп.AutoFit

Rапgе("Н2:Н2 "). Select

ActiveCell.FormulaRICl =" ДАО

Rапgе("Н2 ").Select

Columns("H:H").EntireColumn.AutoFi t

Range("12: 12"). Select

ActiveCell.FormulaRICl =" ДАО

Range("I2").Select

Columns("I:I").EntireColumn.AutoFit

Range("J2:J2"). Select ActiveCell.FormulaRICl = "Инвестиции"

Range("J2").Select

Columns(" J:J").EntireColumn.AutoFit

Rапgе("К2:К2 "). Select

ActiveCell.FormulaRICl = "Добыча"

Rапgе("К2"),Sеlесt Columns("K:K").EntireColumn.AutoFi t

Range("L2: L2 ").Select

ActiveCell.FormulaRlCl = "Затраты на единицу"

Range("L2").Select Columns("L:L").EntireColumn.AutoFit

End Sub

Sub Tabll_ Write(FMAXI0 As Махl, FMAX40 As Мах2)

Dim i, ii,j,jj, Flag As Integer

Dim RowIndex, Strlndex, Columnlndex As Integer Dim Sredstva As Double

Dim DAOI0 As DAO_dob Dim DA020 As DAO_dob

RowIndex = 2

Рог i = LBound(FMAX4) То UBound(FMAX4)

. = 1 'Нач. знач. количества имен ДАО

ReDim DAOl(jj)

ReDim DA02(jj)

Sredstva = о 'Начальное значение фактического финансирования

Columnlndex = 1 'Выход на начало новой старки

Rowlndex = Rowlndex + 1 'Переход на следующую строку

Strlndex = Rowlndex 'Индекс строки вывода группы данных по варианту инвестирования

'Cel1s(RowIndex, Coltlmnlndex).Value = _

, FMAX4(i).F _UNV * 100 'Вывод примерного объема инвестирования

Columnlndex = ColUlrnlndex + 1 'Переход на следущий столбецв строке

Cel1s(Rowlndex, Coltlmnlndex).Value = _

FMAX4(i).FMAX 'Вывод максимальной добычи

Columnlndex = СоlUПl1lпdех + 1 'Переход на следущий столбец в строке

'Выдача всех месторождений и ДАО соответствующих данному mтимальному варианту

For j = LBound(FMAX4(i).FNameMestor) То UBound(FMAX4(i).FNameMestor)

lfFMAX4(i).FNameMestor(j) <> ""

Тhеп Columnlndex = Columnlndex + 1 '

Cel1s(Rowlndex, ColumnIndex).Value = FMAX4(j).NmМestor 'имя месторождения

Columnlndex = Columnlndex + l' Переход на следущий столбец в строке

Cells(Rowlndex, ColumnIndex).Value = FMAX4(j).Flnv 'фактическое финансирование месторождения

Sredstva = Sredstva + FМAX4(j).Flnv 'фактический объем финансирования

Columnlndex = Columnlndex + l' Переход на следущий столбец в строке

Cells(Rowlndex, ColumnIndex).Value = FMAX4(j).FDob 'добыча на месторождении

Columnlndex = Columnlndex + l' Стоимость на единицу добычи

Cells(RowIndex, Columnlndex).Value = FMAX4(j).FInv / FMAX4(j).FDob

Columnlndex = Columnlndex + l' Переход на следущий столбец в строке

Cells(Rowlndex, ColumnIndex).Value = FMAX4(j).FNameDAO 'имя DAO входящего в оптимальные

Ifjj = 1 Тhеп

DA01(jj).Name = FMAX4(j).FNameDAO

DAO 1 (jj).Invest = FMAX4(j).Flnv

DAOl(jj).Dob = FMAX4(j).FDob

End If

Flag= О

Ifjj> 1 Тhеп

Flag= 1

For ii = 1 То jj - 1

IfDAOl(ii).Name = FMAX4(j).FNameDAO Then

DAO 1 (ii).Invest = DAO 1 (ii).Invest + FMAX4(j).FInv

DAO1 (ii).Dob = DAOl(ii).Dob + FMAX4(j).FDob

Flag =0

End If

Next ii

End If

IfFlag = 1 Тhеп

ReDim DA02(jj)

For ii = 1 То jj - 1

DA02(ii) = DAOl(ii)

Next ii

ReDim DAOl(jj)

For ii = 1 То jj – 1

DAOl (ii) = DA02(ii)

Nextii

DAOl(jj).Name = FMAX4(j).FNameDAO

DAO 1 (jj).Invest = FMAX4(j).Flnv

DAOl(jj).Dob = FMAX4(j).FDob

jj=jj+l

End If

Ifjj = 1 Тhen

jj=jj+1

End If

'Формат дробной части вывода

Cells(Rowlndex, Colurnnlndex).NumberFormat = "0.00"

Co\umnIndex = 3 'Выход на начало новой сторки

Rowlndex = Rowlndex + 1 'Переход на следующую строку

End If

Nextj

Rowlndex = Rоwlпdех + 1 'Переход на следующую строку

Соlumпlпdех = I 'Выход на начало новой сторки

Cells(Strlndex, Co\urnnIndex).Va\ue = Sredstva 'фактические затраты

'Эффективность затрат

Cells(StrIndex, Co\urnnlndex + 2).Уаlие = Sredstva/ FMAX4(i).FMAX

Columnlndex = 9 'Выход на начало новой сторки

Cells(StrIndex, Co\umnlndex).Value = "ДАО"

Cells(StrIndex, Colurnnlndex + \).Value = "Инвестиции"

Cells(Strlndex, Colurnnlndex + 2).Value = "Добыча"

Cells(Strlndex, ColumnIndex + З).Vаluе = "Инвестиции/Добыча"

Fог ii = 1 То jj - 1

Cells(Strlndex + ii, Co\urnnlndex).Va\ue = DAO\(ii).Name

Cells(StrIndex + ii, Colurnnlndex + 1).Уаlие = DAO\(ii).Invest

Cells(Strlndex + ii, Columnlndex + 2).Уаlие = DAO\(ii).Dob

Cells(Strlndex + ii, ColurnnIndex + З).Vаluе = DA01(ii).Invest / DA01(ii).Dob

Next ii

Columnlndex = 1 'Выход на начало новой сторки

Next i

Colurnnlndex = 1 'Выход на начало новой сторки

Columns(2).EntireColumn.AutoFit 'Подстрой<а ширины столбца для текста

End Sub

'1)

Sub OpenDataFileO 'Открытие файла с данными

Dim Message, Filename As String

Dim Response As Integer 'Фиксация ответа пользователя

Dim Book As Workbook 'Ссылка на объект Workbook

NewOpen: 'Открытие нужного файла

Message = "Здравствуйте! Будете открывать файл с исходными данными?

" Response = MsgBox(Message, уЬ У esNo, "Оптимизация ")

If Response = vbYes Then

'Открытие окна диалога открытия файла

Application.Dialogs(xlDialog0pen).Show

, Визуальная оценка файла

Message = "Визуально оцените это тот файл, что вы хотели?

" Response = MsgBox(Message, vbYesNo, "Оптимизация ")

IfResponse = vbYes Тhеп

'Запоминание имени открытой книги

DataBook = ActiveWorkbook.Name

E\se

'Закрываем открытую книгу

ActiveWorkbook.C\ose SaveChanges:=False

GoTo NewOpen 'Переход на Открытие нужного файла

End If

E\se

Message = "Будете работать с открытой книгой Ехсеl с исходными данными? " Response = MsgBox(Message, vbOKCancel, "Оптимизация ")

IfResponse = уЬОК Тhen

'Проверка наличия этой книги среди открытых

Fог Each Book In Workbooks

IfBook.Name <> ТhisWorkbook.Name Тhen

Message = BookName &" Это тот файл, что вы хотели? "

Response = МsgВох(Меssаgе, vbYesNo, "Оптимизация ")

If Response = уЬ У es Then

, Визуальная оценка файла Book.Activate

Message = Book.Name & " Визуально оцените это тот файл, чтовы хотели? "

Response = MsgBox(Message, уЬ У esNo, "Оптимизация ")

If Response = уЬ У es Тhеп

'Запоминание имени открытой книги

DataBook = Book.Name

Exit For

End If

End If

End If

NextBook

If DataBook = '''' Тhеп

Message = "Файла нет среди открытых "_

&" или он Вам не подходит. Будете снова открывать файл?"

Response = MsgBox(Message, уЬ У esNo, "Оптимизация ")

If Response = уЬ У es Then

GoTo NewOpen 'Переход на Открытие нужного файла

Else

Exit Sub

End If

End If

Else 'Отказались работать с открытой книгой

Exit Sub

End If

End If

End Sub

'3)_____________________________

_

Sub GetDataO 'Ввод данных из файла с исходными данными

Dim Sheet As Worksheet

Dim п, пп, ппп As Integer 'рабочий индекс

Dim InvestJow, Dob_row As Integer 'строки с иходными данными

'число листов (ДАО) в книге данных

N_DAO = Workbooks(DataBook).Worksheets.Count

ReDim DAO(N_DAO) 'массив структур ДАО определили

Row= 1

 

n=О

For Each Sheet In Workbooks(DataBook).Worksheets

n=n+I

'ввод имен ДАО

DAO(n).NameDAO = Sheet.Name

Invest_row = Workbooks(DataBook).Worksheets(DAO(I).NameDAO).CelIs(28, 2).Value

ОоЬ Jow = Workbooks(DataBook).Worksheets(DAO(1).NameDAO).Cel1s(29, 2). Value

'Для следующего листа все со второго столбца опять

Column=2

mn=О

'Вычисление размерности по числу месторождений

Dо While_

Workbooks(DataBook).Worksheets(Sheet.Name).Cel1s(Row, Column).VaIue <> "" IfWorkbooks(DataBook).Worksheets(Sheet.Name).CelIs(Row, Column).Value <> _ Workbooks(DataBook).Worksheets(Sheet.Name).CelIs(Row, Column + 1).Value_ Тhеп

mn=mn+l

End If

Column = Соlиmn + 1

Loop

'Определение размерности по числу месторождений

ReDim DAO(n).Mestor(nn)

ДОАо(n).коlМеslог = nn

 

'Ввод имен месторождений и числа вариантов ивестир. и добычи

Column=2

nn=О

nnn =0

Do While_

Workbooks(DataBook).Worksheets(Sheet.Name).CelIs(Row, Column).Value <> ""

IfWorkbooks(OataBook).Worksheets(Sheet.Name).CelIs(Row, Column - 1).Value <> _

Workbooks(OataBook). W orksheets(Sheet.Name).CelIs(Row, Column). Value _

Тhеn

nn=nn + 1

DAO(n).Mestor(nn). Name = Workbooks(DataBook). Worksheets(Sheet.Name).CelIs(Row, Column). Value

DАО(п).Меstог(пп).коlVагt = 1

End If

'Определение числа вариантов для месторождения

If Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Column).Value = _ Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Соlиmn + l).Value_

Тhen

DАО(п).Меstог(пп).коlVагt = DАО(п).Меstor(пп).коlVаrt + 1

End If

Соlumn = Соlumn + 1

Loop

'Ввод вариантов инвестирования и добычи

Соlumn=2

nn= 1

nnn = 1

ReDim DAO(n).Mestor(nn). Inv(DAO(n).Mestor(nn).Ко1Vart)

ReDim DAO(n).Mestor(nn).Dob(DAO(n).Mestor(nn).Ко1V art)

Do Whi!e_

Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Со!иmn).Value <> ""

DAO(n).Mestor(nn).Inv(nnn) = _

Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Invest_row,Соlumn).Value DAO(n).Mestor(nn).Dob(nnn) = _

W orkbooks(DataBook). W orksheets(Sheet.Name). Cells(Dob Jow, Со! иmn).Value

'Определение числа вариантов для месторождения

'!!!! Доработать строки - года для параметрического ввода

If Workbooks(DataBook). Worksheets(Sheet.Name).Cells(Row, Соlиmn).Value = _ Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Соlиmn + l).Value_

Тhen

nn = nnn + 1

Else

nnn= 1

End If

If Workbooks(DataBook). Worksheets(Sheet.Name).Cells(Row, Со!иmn).Value <> _ Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Со!иmn + 1).Value

Тhen

IfWorkbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Со!иmn + 1).Уа!ие <> "" _ Тhen

nn = nn + 1

ReDim DAO(n).Mestor(nn). Inv(DAO(n).Mestor(nn).КоlУ art)

ReDim DAO(n).Mestor(nn).Dob(DAO(n).Mestor(nn). КоlУ art)

End If

End If

Соlumn = Column + 1

Loop

Next Sheet

'Считывание параметров расчета

'Sredstva = Workbooks(DataBook).Worksheets(DAO(1).NameDAO).Cells(25, 2).Value

'Delta = Workbooks(DataBook).Worksheets(DA0(1).NameDAO).Cells(26, 2).Value

End Sub

 


[1] «Природный газ» Язев В.

[2] «Природный газ» Язев В.

[3] www. Gazforum.ru

[4] Журнал «Газоаый бизнес» январь-февраль 2006г.

[5] «Независимые производители и перспективы развития газовой отрасли России» В. Н. Баранов

[6] «Независимые производители и перспективы развития отрасли России» В. Н. Баранов

[7] «Независимые производители и перспективы развития газовой отрасли России» В.Н. Баранов

[8] «Независимые производители и перспективы развития газовой отрасли России» В. Н. Баранов

[9] Сборник докладов «Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»

[10] Сборник докладов «Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»

[11] Сборник докладов «Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»

[12] Сборник докладов «Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»

2 «Независимые производители и перспективы развития газовой отрасли России» В.Н. Баранов

[13] Сборник докдадов «Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»

[14] Авдокушин Е.Ф. «Международные экономические отношения» Учебник-М,1998г.

[15] Киреев А. «Международная экономика - движение товаров и факторов производства» Часть первая, 2000

[16] Ермолов О.В., Мтловидов К.Н., Чугунов Л.С., Ремизов В.В. «Стратегия развития нефтегазовых компаний» 1998 г.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: