Первый  неофициальный  сайт  Elite 2000

Главная
О проекте
Корабли

     by Sigurd

Расы и  союзы
Экономика
Файлы:

     Elite 2000
     Утилиты
     Разное

Guestbook
E-Mail
ДАННАЯ ЭКОНОМИЧЕСКАЯ МОДЕЛЬ НАПИСАНА ПИЛОТОМ VICONT И НЕ ЯВЛЯЕТСЯ ОКОНЧАТЕЛЬНОЙ, РАВНО КАК И ЕДИНСТВЕННОЙ
о как сказанул! ;)

Price_Post (Цена поставщика)

Price_Min (Минимальная цена на данный товар из таблицы)

Price_Max (Максимальная цена на данный товар из таблицы)

Price_Delta (Price_Max - Price_Min)

Price_Change_Speed ( Скорость изменения цены)

Price_Last (Последняя цена на данный товар)

Price_Potr (Цена которая получится у потребителя при потреблении товара у

данного поставщика )

Price_Aver (Средняя арифм.цена которая получится у потребителя по данному

товару)

Storage_Size (Размер Склада данной планеты на данный товар из таблицы)

Storage_Val (Количество товара на складе в начале игры = половине от

Storage_Size )

Time_Last_Calc ( Игровое время когда проводился последний обсчет)

Time_Current ( Текущее игровое время)

Time_Delta (Разница между Time_Current и Time_Last_Calc )

Product_Speed (Скорость производства данного товара)

Product_Speed_Min (минимальная Скорость производства данного товара)

Product_Speed_Max (максимальная Скорость производства данного товара)

Product_Speed_Delta (Product_Speed_Max - Product_Speed_Min)

Product_Need (количество данного товара необходимого данной планете)

Product_W (Масса данного товара из таблицы, для товаров , и так ,

исчисляемых по массе установить равным 1)

Product_Pot (Потенциальное потребление данного товара на данной планете)

Product_Post (Поставщик данного товара)

Product_Potr (Потребитель данного товара)

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

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

таблицы)

Climat_Level (Коэффициент Климата данной планеты из таблицы)

Mineral_Level (Коэффициент Минералов данной планеты из таблицы)

Factory_Max (Максимальное количество фабрик на данной планете из таблицы

должно быть четным)

Factory_Val (текущее Количество фабрик данной планеты для начала = половине

Factory_Max)

Factory_Dev (Производительность 1=ой фабрики данного товара из таблицы)

Factory_KR  (коэффициент от 0 до 0.5 характеризующий количество фабрик от

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

Корректором Рынка)

Factory_Close(Количество фабрик подлежащих закрытию)

Factory_Open(Количество необходимых новых фабрик)

KR          (Коэффициент от 0 до 0.5 характеризующий когда вступает в игру

Корректор Рынка подбирать методом научного тыка)

KRange               (Коэффициент от 0 до (методом научного тыка) характеризующий

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

товара за 1 единицу расстояния)

KRisс_Post  (Коэффициент от 0 до (методом научного тыка) характеризующий

риск при доставке от данного поставщика)

KRisс_Potr  (Коэффициент от 0 до (методом научного тыка) характеризующий

риск при доставке к данному потребителю)

Postav_Dist (Расстояние от данного потребителя до данного поставщика

(придется вычислять самим)

Nas         (Население данной планеты из таблицы)

Nas_Max     (Максимально возможное население для данной планеты из

таблицы)

KPotr      (Коэффициент от 0 до (методом научного тыка) характеризующий

расход данного товара на душу населения)

KPotreb              (Коэффициент от 0 до (методом научного тыка) характеризующий

необходимость данного товара для дальнейшего роста населения)

KTechPotr   (Коэффициент от 0 до (методом научного тыка) характеризующий

изменение расхода данного товара на душу населения в зависимости от ее тех.

уровня)

KFactPotr   (Коэффициент от 0 до (методом научного тыка) характеризующий

расход данного товара на 1 работающую на данной планете фабрику)

KSebe       (Коэффициент от 0 до 1 характеризующий себестоимость

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

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

индустриальных)

Product                (Индекс данного товара)

Spros_Udov  (Удовлетворенность спроса на продукты, если этот показатель

больше Spros_Need то население растет)

Spros_Need  (Необходимый уровень удовлетворенности спроса для дальнейшего

роста населения)

Money       (Деньги затраченные данным поставщиком на приобретение данного

товара)

 

При старте игры Инициализируем

 

10 Запускаем Этап 1-ый

10 инициализируем Price_Post  для каждой планеты поставщика. Предлагаю

проставлять средние значения

20 в цикле для каждого товара: Price_Last(Product) = Price_Post(Product)

30 Time_Last_Calc = 0 ( или кидаем сюда значение игрового времени на начало

игры.)

40 KR=0.05 (Надо подбирать)

50 Factory_KR = 0.1 (Надо подбирать)

60 в цикле для каждого индустриального товара: Product_Speed_Min(Product)

= (2^Tech_Level_Min) * (2^Mineral_Level_Min) = (2^1)*(2^1)=4

70 в цикле для каждого индустриального товара: Product_Speed_Max(Product)

= (2^Tech_Level_Max) * (2^Mineral_Level_Max)

80 в цикле для каждого сельхоз товара: Product_Speed_Min(Product)  =

(2^Tech_Level_Min) * (2^Climat_Level_Min) * Factory_Dev(Product)=

(2^1)*(2^1)*1*Factory_Dev(Product)=4*Factory_Dev(Product)

90 в цикле для каждого сельхоз товара: Product_Speed_Max(Product)  =

(2^Tech_Level_Max) * (2^Climat_Level_Max) * Factory_Dev(Product)

100 в цикле для каждого товара: Product_Speed_Delta(Product) =

Product_Speed_Max(Product) - Product_Speed_Min(Product)

60 в цикле для каждого товара: Price_Delta = Price_Max(Product) -

Price_Min(Product)

Сам обсчет

Этап 0-вой

Инициализация

10 Product_Pot =0

 

Этап 1-ый

инициализация

5 Time_Delta = Time_Current - Time_Last_Calc:Time_Last_Calc=Time_Current

 

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

поставщиками за истекший промежуток времени

#для индустриальных товаров

10 Product_Speed(Product_Post,Product) = Tech_Level(Product_Post) *

Mineral_Level(Product_Post) * Factory_Val(Product_Post,Product) *

Factory_Dev(Product_Post,Product)

#для сельхоз товаров заменим Mineral_Level(Product_Post) на

Climat_Level(Product_Post) и получим

10 Product_Speed(Product_Post,Product) = Tech_Level(Product_Post) *

Climat_Level(Product_Post) * Factory_Val(Product_Post,Product) *

Factory_Dev(Product_Post,Product)

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

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

20 Storage_Val(Product_Post,Product) = Storage_Val(Product_Post,Product) +

Product_Speed(Product_Post,Product)*Time_Delta

30 подставляем следующий продукт в Product и возвращаемся на 10 до тех пор

пока не переберем все продукты

40 подставляем следующую планету в Product_Post и возвращаемся на 10 до тех

пор пока не переберем все планеты

 

Обсчитываем все планеты потребители

инициализация

50 Delta_Price = Price_Max(Product) - Price_Min(Product)

 

сам обсчет

10  Spros_Uch = 0 : Money = 0

11

Product_Need=Time_Delta*Nas(Product_Potr)*KPotr(Product_Potr,Product)*KTechPotr(Product_Potr,Product)+Time_Delta*Factory_Val(Product_Potr,Product)*KFactPotr(Product_Potr,Product)

12 Product_Need1 = Product_Need

20 подставляем следующего поставщика у которого Price_Potr будет минимальна

в Product_Post, По формуле Price_Potr = Price_Post(Product_Post,Product) +

Postav_Dist * KRange(Product) + Delta_Price *( KRisс(Product_Post) +

*KRisс(Product_Potr) )   #(KRisс брать в зависимости от строя на планете

поставщике и еще придется высчитать Postav_Dist (формулу придумайте

сами))

# Проверим есть ли у данного поставщика необходимое количество товара по

формуле

30 если (Storage_Val(Product_Post,Product) < Product_Need) то

            #если у данного поставщика продуктов меньше чем необходимо данному

потребителю

40        если (Storage_Val(Product_Post,Product) <=0) то

                        #если у данного поставщика дефицит данных продуктов

50                    если (Spros_Uch=0) то

                                   #и это первый проверяемый поставщик

                                   # переключим переменную первого поставщика

60                               Spros_Uch=1

                                   #И увеличим его дефицит

70                               Storage_Val(Product_Post,Product) = Storage_Val(Product_Post,Product)

- Product_Need

80                    Конец если (50 строки)

90        иначе (для если 40 строки)

                        #иначе, если у данного поставщика дефицита пока нет, но его запасов

данному потребителю недостаточно

                        #подсчитаем сколько средств придется затратить на приобретение данного

товара у данного поставщика

95                    Money = Money + Price_Potr * Storage_Val(Product_Post,Product)

                        #уменьшим потребность в товарах данного потребителя на остаток на складе

данного поставщика

100                  Product_Need = Product_Need - Storage_Val(Product_Post,Product)

                        #создадим дефицит данному поставщику

110                  Storage_Val(Product_Post,Product) = Storage_Val(Product_Post,Product)

- Product_Need

120      конец если (40 строки)

130 иначе (для если 30 строки)

            # иначе если у данного поставщика достаточно товаров для данного

потребителя

            # Списываем у данного поставщика количество товаров необходимое данному

потребителю

140      Storage_Val(Product_Post,Product) = Storage_Val(Product_Post,Product) -

Product_Need

145      Money = Money + Price_Potr * Storage_Val(Product_Post,Product)

150      Product_Need = 0

160 конец если (30 строки)

    # Если спрос на данные товары у данного потребителя еще не удовлетворен

то повторим все сначала

170 если Product_Need > 0 то возвращаемся на 20 строку

    # подсчитаем среднюю арифметическую себестоимость данного товара у

данного потребителя

180 Price_Aver = Money / Product_Need1

#Со 190 по 250 надо вставить подсчет удовлетворенности спроса населения на

данный продукт(исходя из полученной переменной Price_Aver)( что-то у меня

уже мозги закипают. никак придумать не могу.)

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

коэффициента удовлетворенности по всем продуктам с учетом коэффициента

потребности КАЖДОГО продукта для населения)

250 подставляем следующий продукт в Product и возвращаемся на 10 до тех пор

пока не переберем все продукты

#260 до 290 Здесь уже должен жить КР который в зависимости от

удовлетворенности спроса либо увеличит население либо уменьшит

#причем уменьшение должно происходить резко. Чкть-ли не вдвое, с резким

падением технологического уровня и периодом анархии

300 подставляем следующую планету в Product_Post и возвращаемся на 10 до

тех пор пока не переберем все планеты

 

 Таким манером обсчитываем все планеты потребляющие данный товар, а затем

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

            если Price_Aver(Product) < (Price_Max(Product) + Price_Min(Product))/2, то

можно увеличить население данной планеты по формуле:

            Инициализация

            10 Delta_Aver=0

            Сам КР

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

            10 Delta_Aver= Delta_Aver+ (((Price_Max(Product) + Price_Min(Product)/2) -

 Price_Aver(Product))/(Price_Max(Product) - Price_Min(Product)): I=I+1

            затем Delta_Aver=Delta_Aver/I

            А теперь можно увеличивать население по формуле

            10 Nas=Nas+Nas*Delta_Aver

            Теперь проверим не стало-ли население больше максимального(Nas>Nas_Max),

 

            и если да: Nas = Nas/2: Tech_Level = Tech_Level+1

 

 

========================================================

Обсчитываем все планеты  поставщики по формуле

для сельхоз продуктов

 

10 Product_Speed = (2^Tech_Level(Product_Post)) *

(2^Climat_Level(Product_Post)) * Factory_Val(Product_Post,Product) *

Factory_Dev(Product)

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

получим

10 Product_Speed = (2^Tech_Level(Product_Post)) *

(2^Mineral_Level(Product_Post)) * Factory_Val(Product_Post,Product) *

Factory_Dev(Product)

   # Заложим в коэффициент себестоимости половину дельты по товару.

15 Ksebe = 0.5*( Product_Speed - Product_Speed_Min(Product) )/

Product_Speed_Delta(Product)

16 Price_Min(Product,Planet) = Price_Min(Product) + KSebe *

Price_Delta(Product)

20 если Storage_Val(Product_Post,Product)>=0

            #если имеется не распроданный товар то надо снижать цену  по программе

30        если Price_Post(Product_Post,Product) > Price_Min(Product,Planet)

            #если цена больше минимальной для данной планеты то уменьшим ее по

формуле

40                    Price_Post(Product_Post,Product)=Price_Post(Product_Post,Product)-(

Price_Delta(Product)

*Storage_Val(Product_Post,Product))/(Product_Speed*Time_Delta)

                        #а если цена должна упасть меньше минимума

50                    если Price_Post(Product_Post,Product) < Price_Min(Product,Planet) то

                                   #установим ее в минимальное значение по формуле

55                               Price_Post(Product_Post,Product)=Price_Min(Product,Planet)

56                    конец если (50 Строка)

57        конец если (30 Строка)

# если же наблюдается нехватка товара Storage_Val(Product_Post,Product)<0

то соответственно нужно поднимать цены и открывать фабрики по программе

58 Иначе

            #проверим уровень цены

60        если Price_Post(Product_Post,Product) < Price_Max(Product) то

            #и если цена меньше максимальной то увеличим ее по формуле

65                    Price_Post(Product_Post,Product) = Price_Post(Product_Post,Product) + (

Price_Delta(Product) *

Storage_Val(Product_Post,Product))/(Product_Speed*Time_Delta)

                        #если цена стала больше максимальной

70                    если Price_Post(Product_Post,Product) > Price_Max(Product) то

                                   #вернем ее к максимуму по формуле

80                               Price_Post(Product_Post,Product) = Price_Max(Product)

90                    конец если (70 Строка)

100      конец если (60 Строка)

110 конец если (20 Строка)

-----------------

теперь должен поработать КР

# Увеличим/уменьшим количество фабрик в зависимости от того положительно

или отрицательно значение Storage_Val(Product_Post,Product) по программе

10 если Storage_Val(Product_Post,Product) > 0 то

20        Factory_Close=целая

часть(Storage_Val(Product_Post,Product)/(Time_Delta*Factory_Dev(Product))

30        Factory_Val(Product_Post,Product) = Factory_Val(Product_Post,Product) -

Factory_Close

            # теперь проверим не стало ли значение Factory_Val(Product_Post,Product)

меньше 1

40        если Factory_Val(Product_Post,Product) < 1 то

60        Factory_Val(Product_Post,Product) = 1

70        конец если (40 строка)

80 конец если (10 строка)

90 если Storage_Val(Product_Post,Product) < 0 то

100      Factory_Open=модуль ( целая часть ( Storage_Val( Product_Post,Product)

/ ( Time_Delta * Factory_Dev(Product_Post,Product) ) )

110      Factory_Val(Product_Post,Product) = Factory_Val(Product_Post,Product) +

Factory_Open

120      # теперь проверим не стало ли значение

Factory_Val(Product_Post,Product) больше максимума необходимого для

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

и установим количество фабрик в минимум

130      если Factory_Val(Product_Post,Product) >

Factory_Max(Product_Post,Product) то

140                  Tech_Level(Product_Post) = Tech_Level(Product_Post) + 1

150                  Factory_Val(Product_Post,Product) = целая часть

(Factory_Max(Product_Post,Product) / 2)

160      конец если (130 строка)

170 конец если (90 строка)

Hosted by uCoz