A6. Георазведка

Проект состоит из главного класса Main – интерфейс модели, просчет показателей

 Sector – задаёт описание полей записей excel файла

Simulation  — эксперимент, для установки входных параметров модели

  1. SIMULATION

Элементы управления входными параметрами в Simulation  

Входные параметры регулируемые из Simulation

choise Тип территории
verAll Вероятность полного отказа
verCrash Вероятность поломки
plaCost Плановая стоимость
masteringTime Плановое время освоения
   
   
   

Часть входных параметров из поключенного excel файла через компонент

Данные из файла считываются при инициализации эксперимента  с помощью кода

и записываются в коллекцию sectors с типом элементов Sector

  1. MAIN

В пространство класса добавлено  7 областей для перехода в разные разделы интерфейса по нажатию на кнопки

Для перехода используется код типа  <Область>.navigateTo()

Для связи с Simulation используются параметры

И через них уже поступают значения входных параметров Simulation

Длительность во времени процессов топоразведки и взрывных работ имитируется с помощью элементов  

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

Таймер Код Назначение
topEvent if(randomTrue(verCrash)){    topoColor=red;    evCase=»Поломка»;   }   else if(randomTrue(verAll)){     topoColor=red;     evCase=»Отказ»;    }    else topoColor=green; Разыграть поломку/отказ по заданным вероятностям во время топоразведки
burstEvent if(randomTrue(verCrash)){    burstColor=red;    evCaseburst=»Поломка»;   }   else if(randomTrue(verAll)){     burstColor=red;     evCaseburst=»Отказ»;    }    else burstColor=green; Разыграть поломку/отказ по заданным вероятностям во время взрывных работ

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

  1. желтый — работы ведутся
  2. красный – произошла поломка/отказ
  3. зеленый – работа успешно завершена

Если прямоугольник окрасился в красный, то при щелчке на него произойдёт переход  в область интерфейса, где пользователь указывает увеличение плановой стоимости и времени всвязи с поломкой/отказом. Для перехода туда и отображения варианта решения возникшей проблемы используется код.

Код действия по нажатию на красный прямоугольник в области интерфейса для ТОПОРАЗВЕДКИ if(topoColor==red){   viewTopoSoldArea.navigateTo();   for(Sector s:sectors)    if(s.type.equals(choise) && s.problem.equals(evCase))      {       crashAmount++;       topoCaseText.setText(s.solid);        if(randomTrue(0.5))break;      }   }  
Код действия по нажатию на красный прямоугольник в области интерфейса для ВЗРЫВНЫХ РАБОТ if(burstColor==red){   viewBurstSoldArea.navigateTo();   for(Sector s:sectors)    if(s.type.equals(choise) && s.problem.equals(evCaseburst))      {       crashAmount++;       burstCaseText.setText(s.solid);       if(randomTrue(0.5))break;      }   }

По завершению всех работ считаются показатели

С помощью функции outputCalc , содержащей код

int procenToTime=0; for(Sector s:sectors){   if(s.type.equals(choise)) procenToTime = s.addtime;   break;  } totalCost=planCost+topoAddCost+burstAddCost; totalTime=masteringTime+procenToTime*masteringTime/100             +topoAddTime+procenToTime*topoAddTime/100+burstAddTime+procenToTime*burstAddTime/100; timeOverrun=masteringTime+procenToTime*masteringTime/100-totalTime;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *