Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системотехника строительства. Учебно-методическое пособие.pdf
X
- •Предисловие
- •1. Общие понятия системотехники и системного анализа. Теория киберфизических строительных систем
- •1.1. Основные понятия теории систем
- •1.2. Системные свойства
- •1.3. Классификация систем
- •2. Проектирование и строительство как система
- •2.1. Строительное проектирование как система
- •2.2. Объект строительства как система
- •1.4. Структура системного анализа
- •1.5. Теория киберфизических строительных систем
- •ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
- •Библиографический список
- •ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
- •Библиографический список
- •3.1. Классификация видов моделирования
- •3.2.1. Задание и содержание практической работы
- •Оформление работы
- •Библиографический список
- •ЗАКЛЮЧЕНИЕ

ПРИЛОЖЕНИЕ
Пример решения задачи для двух машин на языке PHP
<?php
//Определяем исходные параметры для расчета
$sam_work = 4; //Математическое ожидание времени работы самосвала
$sam_ubit = 500; //Убытки от простоя самосвала
$sam_prib = 4000; //Прибыль от работы самосвала
$eks_work = 6; //Математическое ожидание времени работы экскаватора
$eks_ubit = 6000; //Убытки от простоя экскаватора
$eks_prib = 8000; //Прибыль от работы экскаватора
$sam_rem = 1; //Математическое ожидание времени ремонта самосвала
$eks_rem = 2; //Математическое ожидание времени ремонта экскаватора
$zp = 2000; //Зарплата одной бригады
$nak = 500; //Накладные расходы на одну бригаду слесарей (простой од-
ной бригады)
$prof_zp = 1000; //Зарплата бригады при профилактике
$work = 16; //Время работы техники в часах
$prof = 8; //Время проилактики в часах
$days = 10000; //Количество дней работы машины в данной модели
//Определяем функции для расчета
//Функция получения случайной величины по математическому ожиданию
(экспоненциальный закон распределения)
function get_rand($mat) {
$x = mt_rand(1, 1000);
$x = $x/1000;
$x = -1*$mat*log($x);
return $x;
}
//Функция расчета общего времени работы и простоя двух машин в один
день с учетом количества доступных ремонтных бригад
function count_day($b){
//Начальные значения переменных:
$b=intval($b);
$start_b=$b;
global $sam_work; global $eks_work; global $sam_rem; global $eks_rem;
global $work; global $prof; global $days;
$total_work_eks = 0; $total_work_sam = 0; $total_rem_eks = 0; $total_
rem_sam = 0; $total_off_eks = 0; $total_off_sam = 0;
$point_time = 0; $total = 0; $i = 0;
$eks = ‘on’; $sam = ‘on’;
$eks_work_now = get_rand($eks_work); $sam_work_now = get_rand($sam_
work); $eks_rem_now = get_rand($eks_rem); $sam_rem_now = get_rand($sam_
rem);
$nak_time = $work*$b;
41

//Моделируем контрольные точки в течение дня
while($point_time < $work){
if($eks==’on’ && $sam==’on’)
$point = min($eks_work_now, $sam_work_now);
elseif($eks==’on’ && $sam==’rem’)
$point = min($eks_work_now, $sam_rem_now);
elseif($eks==’rem’ && $sam==’on’)
$point = min($eks_rem_now, $sam_work_now);
elseif($eks==’rem’ && $sam==’rem’)
$point = min($eks_rem_now, $sam_rem_now);
elseif($eks==’rem’ && $sam==’off’)
$point = $eks_rem_now;
elseif($eks==’off’ && $sam==’rem’)
$point = $sam_rem_now;
else break;
$min=$point;
$point_time = $point_time + $point;
if($point_time>$work)
$point = $point-$point_time+$work;
if($min == $eks_work_now) {
if($min==$point){
if($b>0){
$eks=’rem’;
$b=$b-1;
}
else
$eks=’off’;
}
$total_work_eks=$total_work_eks+$point;
if($sam == ‘off’)
$total_off_sam=$total_off_sam+$point;
elseif($sam == ‘rem’){
$total_rem_sam=$total_rem_sam+$point;
$sam_rem_now = $sam_rem_now — $point;
}
elseif($sam == ‘on’) {
$total_work_sam=$total_work_sam+$point;
$sam_work_now = $sam_work_now — $point;
}
$eks_work_now = get_rand($eks_work);
}
elseif($min == $sam_work_now) {
if($min==$point){
if($b>0){
$sam=’rem’;
$b=$b-1;
}
42

else
$sam=’off’;
}
$total_work_sam=$total_work_sam+$point;
if($eks == ‘off’)
$total_off_eks=$total_off_eks+$point;
elseif($eks == ‘rem’){
$total_rem_eks=$total_rem_eks+$point;
$eks_rem_now = $eks_rem_now — $point;
}
elseif($eks == ‘on’) {
$total_work_eks=$total_work_eks+$point;
$eks_work_now = $eks_work_now — $point;
}
$sam_work_now = get_rand($sam_work);
}
elseif($min == $eks_rem_now) {
$total_rem_eks=$total_rem_eks+$point;
$b = $b+1;
$eks=’on’;
if($sam == ‘off’) {
$total_off_sam=$total_off_sam+$point;
$sam = ‘rem’;
$b=$b-1;
}
elseif($sam == ‘rem’){
$total_rem_sam=$total_rem_sam+$point;
$sam_rem_now=$sam_rem_now-$point;
}
elseif($sam == ‘on’) {
$total_work_sam=$total_work_sam+$point;
$sam_work_now = $sam_work_now — $point;
}
$eks_rem_now = get_rand($eks_rem);
}
elseif($min == $sam_rem_now) {
$total_rem_sam=$total_rem_sam+$point;
$b = $b+1;
$sam=’on’;
if($eks == ‘off’) {
$total_off_eks=$total_off_eks+$point;
$eks = ‘rem’;
$b=$b-1;
}
elseif($eks == ‘rem’){
43

$total_rem_eks=$total_rem_eks+$point;
$eks_rem_now=$eks_rem_now-$point;
}
elseif($eks == ‘on’) {
$total_work_eks=$total_work_eks+$point;
$eks_work_now = $eks_work_now — $point;
}
$sam_rem_now = get_rand($sam_rem);
}
}
$nak_time = $nak_time-$total_rem_eks-$total_rem_sam;
$array = array(‘total_work_eks’ => $total_work_eks,
‘total_work_sam’ => $total_work_sam,
‘total_rem_eks’ => $total_rem_eks,
‘total_rem_sam’ => $total_rem_sam,
‘total_off_eks’ => $total_off_eks,
‘total_off_sam’ => $total_off_sam,
‘nak_time’ => $nak_time
);
return $array;
}
//Функция расчета экономического эффекта
function count_effect($total_work_eks,$total_work_sam, $total_rem_
eks, $total_rem_sam, $total_off_eks, $total_off_sam, $nak_time, $b) {
global $sam_ubit; global $sam_prib; global $eks_ubit; global $eks_
prib; global $zp; global $nak; global $prof_zp; global $work; global
$prof; global $days;
$total_rem = $total_rem_sam+$total_rem_eks;
$effect = ($total_work_eks*$eks_prib)+($total_work_sam*$sam_prib)($total_rem_eks*$eks_ubit)-($total_rem_sam*$sam_ubit)-($total_off_
eks*$eks_ubit)-($total_off_sam*$sam_ubit)-($total_rem*$zp)-($nak_
time*$nak)-($days*$prof*$prof_zp*$b);
return $effect;
}
//Цикл расчета экономической эффективности работы разного числа бригад (от 1 до 5)
for($b = 1; $b<=5; $b++){
$total_work_eks = 0; $total_work_sam = 0; $total_rem_eks = 0; $total_
rem_sam = 0; $total_off_eks = 0; $total_off_sam = 0; $total_rem = 0;
$nak_time = 0;
//Суммирование значений при заданном количестве дней
for($day=1; $day<=$days; $day++){
$result = count_day($b);
foreach($result as $key=>$value)
$$key = $$key+$value;
}
44

$effect_array[$b] = count_effect($total_work_eks, $total_work_sam,
$total_rem_eks, $total_rem_sam, $total_off_eks, $total_off_sam, $nak_
time, $b);
}
//Выводим количество бригад, являющихся наиболее экономически эффективными
echo ‘Оптимальное число бригад: ‘.array_search(max($effect_
array),$effect_array);
?>
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
