IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Управление запасами, имитационное моделирование
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Текст задания:
Компании, которая продает продукцю m видов, необходимо определить, какое количество продукции она должна иметь в запасе на каждый из следующих месяцев (n - задан входной параметр). Промежутки времени между возникновением спроса на товар являются независимыми и представленные случайными величинами с одинаковым распределением со средним значением 0,1 мес. Объемы спроса D также являются независимыми (не зависят от того, когда возникает спрос) и одинаково распределены случайные величины:
D={1 с вероятностью 1/6; 2 с вероятностью 1/3; 3 с вероятностью 1/3; 4 с вероятностью 1/6 }
В начале каждого месяца компания пересматривает уровень запасов и решает, какое количество запасов заказать у поставщика. В случае, когда компания заказывает Z единиц товара, она будет нести затраты, равные Kj +ij Z, где Kj - закупочная стоимость товара j, j=1,m ij - дополнительные затраты на единицу заказанного товара. (Если Z=0, любые затраты отсутствуют). При оформлении заказа, время необходимо для его доставки, является случайной величиной, равномерно распределенной между 0,5 и 1 мес.
Компания использует постоянную стратегию управления запасами, чтобы определить какое количество товара заказывать
Z={S-1 если I<s; 0 если I>=s}
Где I,S, s – это соответственно уровень запасов в начале месяца, после поступления заказа и критический.
При возникновении спроса на товар он немедленно удовлетворяется, если уровень запасов, хотя бы равный спросу на товар. Если спрос превышает уровень запасов, поставка той части товара, который превышает спрос над предложением, откладывается и выполняется при будущих поставках. (В этом случае новый уровень запасов равен старому уровню запасов минус объем спроса, который приводит к появлению отрицательного уровня запасов.) При поступлении заказа товар в первую очередь используется для максимального возможного выполнения отложенных поставок (если такие есть); остаток заказа (если такой есть) добавляется в запасы.
Решил смоделировать на Pascal
Код

program var1;
uses crt;
var
n,k,j,klspros:integer;
I,t,x,d,y,Z,S,sumy,sumazak,sumazap,s1,Sp:real;
Begin
clrscr;

write('n=');
readln(n);

write('Krit_yroven_zapasov s=');
readln(s1);

write('verxniy_krut_yroven_zapasov S=');
readln(S);


write('yroven_zapasov_v_nachale_1_mesyaca I=');
readln(I);
K:=32;

randomize;

for k:=1 to n do begin        {для каждого месяця моделируем значения}

  writeln(k,' mesyac');
  sumazak:=0;
  sumazap:=0;
  t:=0;
  sumy:=0;

  while sumy<=1 do begin              {пока сума промежутков появления спроса не равна 1,
                                                      то есть 1 месяцу}
  
    x:=random;
   if x<=(1/6) then d:=1                {генерируем величину спроса}
    else
    if x<=(1/6+1/3) then d:=2
    else
    if x<=(1/6+1/3+1/3) then d:=3
    else
    if x<=(1/6+1/3+1/3+1/6) then d:=4;

    sumazak:=sumazak+d;                   {суммируем величину спроса}
    
    y:=random(9)/100;                      {генерируем промежуток времени появления спроса}
    klspros:=klspros+1;

    if klspros>1 then begin              

{прибавляем к следующему промежутку 0,1, чтобы вышло среднее 0,1,
например если 10 чисел, то получиться (1ч+(2ч-1ч)+(3ч-2ч)+...(10ч-9ч))/10?}

       t:=t+0.1;
       y:=y+t;
       end;

    sumy:=sumy+y;          {суммируем промежутки времени}

    
     write('   t= ',y:7:2);                 {выводим значения на екран}
     write('  spros d=',d:7:1);
     write('  k-stvo tovara=',I:7:2);

     if I>=s1 then                    {используем заданую в условии стратегия поплнения запасов}
     Z:=0;
     if I<s1 then
     Z:=S-1;

     if I>=d then begin                {если можно удовлетворить спрос выводим +
                                                и отнимаем количество товара }
     I:=I-d;
     write ('  + ');
     end;
    
     if I<d then  begin             {если нельзя удовлетворить спрос выводим -
                                             и отнимаем количество товара }
     I:=I-d;
     write ('  - ');
     end;
     writeln(' zakazano=',Z:7:2);       {выводим значения на екран}

     I:=I+Z;
     sumazap:=sumazap+Z;               {суммируем заказынные товары}

  end;
writeln('sumasprosa=',sumazak:7:2,'  sumazazakazov_tovara=',sumazap:7:2, '  zatratu=',(sumazap*3+32):7:2
,' ostatok I=',I:7:2);                {выводим значения на екран}
writeln;
end;

readkey
end.


Пока что такие вопросы:
-правильно ли я сгенерировал промежутки времени появления спроса?
-как правильно сгенерировать значения от 0,5 до 1?

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
-как правильно сгенерировать значения от 0,5 до 1?

(max-min)*random+min
то есть - (1-0.5)**random+0.5

Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Ozzя @ 17.03.2010 6:42) *
то есть - (1-0.5)*random+0.5
Имелось в виду умножение, полагаю..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
Имелось в виду умножение, полагаю..

Да-да, опечатка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Цитата(Ozzя @ 17.03.2010 7:42) *

(max-min)*random+min
то есть - (1-0.5)**random+0.5


спасибо! с этим розобрался
хотелось бы узнать ваше мнение на первый вопрос:
правильно ли я сгенерировал промежутки времени появления спроса?

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 19:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name