![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Yurka |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 143 Пол: Мужской Репутация: ![]() ![]() ![]() |
Текст задания:
Компании, которая продает продукцю 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? |
![]() ![]() |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата -как правильно сгенерировать значения от 0,5 до 1? (max-min)*random+min то есть - (1-0.5)**random+0.5 Сообщение отредактировано: Ozzя - 17.03.2010 6:46 |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:39 |