package kursvar7;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Currency;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Locale;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Random;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.Stack;
import java.util.Timer;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
import java.awt.Color;
import java.awt.Font;
import com.anylogic.engine.connectivity.ResultSet;
import com.anylogic.engine.connectivity.Statement;
import com.anylogic.engine.elements.*;
import com.anylogic.engine.markup.Network;
import com.anylogic.engine.Position;
import com.anylogic.engine.markup.PedFlowStatistics;
import com.anylogic.engine.markup.DensityMap;


import static java.lang.Math.*;
import static com.anylogic.engine.UtilitiesArray.*;
import static com.anylogic.engine.UtilitiesCollection.*;
import static com.anylogic.engine.presentation.UtilitiesColor.*;
import static com.anylogic.engine.HyperArray.*;

import com.anylogic.engine.*;
import com.anylogic.engine.analysis.*;
import com.anylogic.engine.connectivity.*;
import com.anylogic.engine.database.*;
import com.anylogic.engine.gis.*;
import com.anylogic.engine.markup.*;
import com.anylogic.engine.routing.*;
import com.anylogic.engine.presentation.*;
import com.anylogic.engine.gui.*;

import com.anylogic.libraries.modules.markup_descriptors.*;
import com.anylogic.libraries.processmodeling.*;

import java.awt.geom.Arc2D;

public class Main extends Agent
{
  // Параметры
  // Простые переменные

  public 
boolean 
 isMainChannelActive;
  public 
int 
 ЧислоОтказовКанала;
  public 
int 
 ЧислоПрерванныхСообщений;
  public 
double 
 ЧастотаОтказовКанала;
  @AnyLogicInternalCodegenAPI
  private static Map<String, IElementDescriptor> elementDesciptors_xjal = createElementDescriptors( Main.class );
  
  @AnyLogicInternalCodegenAPI
  @Override
  public Map<String, IElementDescriptor> getElementDesciptors() {
    return elementDesciptors_xjal;
  }
  @AnyLogicCustomProposalPriority(type = AnyLogicCustomProposalPriority.Type.STATIC_ELEMENT)
  public static final Scale scale = new Scale( 10.0 );

  @Override
  public Scale getScale() {
    return scale;
  }




  /** Internal constant, shouldn't be accessed by user */
  @AnyLogicInternalCodegenAPI
  protected static final int _STATECHART_COUNT_xjal = 0;


  // Вложенные объекты

  public com.anylogic.libraries.processmodeling.Source<
Agent 
> source;
  public com.anylogic.libraries.processmodeling.Queue<
Agent 
> Накопитель;
  public com.anylogic.libraries.processmodeling.ResourcePool<
Agent 
> resourcePoolОснКанал;
  public com.anylogic.libraries.processmodeling.Delay<
Agent 
> delayОснКанал;
  public com.anylogic.libraries.processmodeling.Release<
Agent 
> releaseОснКанал;
  public com.anylogic.libraries.processmodeling.SelectOutput<
Agent 
> selectOutput;
  public com.anylogic.libraries.processmodeling.Delay<
Agent 
> delayСменаНаРезерв;
  public com.anylogic.libraries.processmodeling.Seize<
Agent 
> РезервныйКанал;
  public com.anylogic.libraries.processmodeling.Delay<
Agent 
> delayРезервныйКанал;
  public com.anylogic.libraries.processmodeling.Sink<
Agent 
> sink;
  public com.anylogic.libraries.processmodeling.Release<
Agent 
> releaseРезКанал;
  public com.anylogic.libraries.processmodeling.Sink<
Agent 
> sink1;
  public com.anylogic.libraries.processmodeling.Source<
Agent 
> ГенерацияПоломок;
  public com.anylogic.libraries.processmodeling.Delay<
Agent 
> delayПочинкаОснКанала;
  public com.anylogic.libraries.processmodeling.Sink<
Agent 
> sink2;
  public com.anylogic.libraries.processmodeling.Seize<
Agent 
> ОсновнойКанал;
  public com.anylogic.libraries.processmodeling.ResourcePool<
Agent 
> resourcePoolРезКанал;

  public String getNameOf( Agent ao ) {
    if ( ao == source ) return "source";
    if ( ao == Накопитель ) return "Накопитель";
    if ( ao == resourcePoolОснКанал ) return "resourcePoolОснКанал";
    if ( ao == delayОснКанал ) return "delayОснКанал";
    if ( ao == releaseОснКанал ) return "releaseОснКанал";
    if ( ao == selectOutput ) return "selectOutput";
    if ( ao == delayСменаНаРезерв ) return "delayСменаНаРезерв";
    if ( ao == РезервныйКанал ) return "РезервныйКанал";
    if ( ao == delayРезервныйКанал ) return "delayРезервныйКанал";
    if ( ao == sink ) return "sink";
    if ( ao == releaseРезКанал ) return "releaseРезКанал";
    if ( ao == sink1 ) return "sink1";
    if ( ao == ГенерацияПоломок ) return "ГенерацияПоломок";
    if ( ao == delayПочинкаОснКанала ) return "delayПочинкаОснКанала";
    if ( ao == sink2 ) return "sink2";
    if ( ao == ОсновнойКанал ) return "ОсновнойКанал";
    if ( ao == resourcePoolРезКанал ) return "resourcePoolРезКанал";
    return super.getNameOf( ao );
  }

  public AgentAnimationSettings getAnimationSettingsOf( Agent ao ) {
    return super.getAnimationSettingsOf( ao );
  }


  public String getNameOf( AgentList<?> aolist ) {
    return super.getNameOf( aolist );
  }
  
  public AgentAnimationSettings getAnimationSettingsOf( AgentList<?> aolist ) {
    return super.getAnimationSettingsOf( aolist );
  }


  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Source<Agent> instantiate_source_xjal() {
    com.anylogic.libraries.processmodeling.Source<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Source<Agent>( getEngine(), this, null ) {
      @Override
      public double interarrivalTime(  ) {
        return _source_interarrivalTime_xjal( this );
      }

      @AnyLogicInternalCodegenAPI
      public TimeUnits getUnitsForCodeOf_interarrivalTime() {
        return SECOND;
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_source_xjal( final com.anylogic.libraries.processmodeling.Source<Agent> self, TableInput _t ) {
    self.arrivalType = 
self.INTERARRIVAL_TIME 
;
    self.rate = self._rate_DefaultValue_xjal();
    self.firstArrivalMode = self._firstArrivalMode_DefaultValue_xjal();
    self.firstArrivalTime = self._firstArrivalTime_DefaultValue_xjal();
    self.rateSchedule = self._rateSchedule_DefaultValue_xjal();
    self.modifyRate = self._modifyRate_DefaultValue_xjal();
    self.arrivalSchedule = self._arrivalSchedule_DefaultValue_xjal();
    self.setAgentParametersFromDB = self._setAgentParametersFromDB_DefaultValue_xjal();
    self.databaseTable = self._databaseTable_DefaultValue_xjal();
    self.multipleEntitiesPerArrival = self._multipleEntitiesPerArrival_DefaultValue_xjal();
    self.limitArrivals = self._limitArrivals_DefaultValue_xjal();
    self.maxArrivals = self._maxArrivals_DefaultValue_xjal();
    self.locationType = self._locationType_DefaultValue_xjal();
    self.locationXYZInNetwork = self._locationXYZInNetwork_DefaultValue_xjal();
    self.enableCustomStartTime = self._enableCustomStartTime_DefaultValue_xjal();
    self.startTime = self._startTime_DefaultValue_xjal();
    self.addToCustomPopulation = self._addToCustomPopulation_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.discardHangingEntities = self._discardHangingEntities_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_source_xjal( com.anylogic.libraries.processmodeling.Source<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Queue<Agent> instantiate_Накопитель_xjal() {
    com.anylogic.libraries.processmodeling.Queue<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Queue<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_Накопитель_xjal( final com.anylogic.libraries.processmodeling.Queue<Agent> self, TableInput _t ) {
    self.capacity = self._capacity_DefaultValue_xjal();
    self.maximumCapacity = 
true 
;
    self.entityLocation = self._entityLocation_DefaultValue_xjal();
    self.queuing = self._queuing_DefaultValue_xjal();
    self.enableTimeout = self._enableTimeout_DefaultValue_xjal();
    self.enablePreemption = self._enablePreemption_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_Накопитель_xjal( com.anylogic.libraries.processmodeling.Queue<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.ResourcePool<Agent> instantiate_resourcePoolОснКанал_xjal() {
    com.anylogic.libraries.processmodeling.ResourcePool<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.ResourcePool<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_resourcePoolОснКанал_xjal( final com.anylogic.libraries.processmodeling.ResourcePool<Agent> self, TableInput _t ) {
    self.type = self._type_DefaultValue_xjal();
    self.capacityDefinitionType = self._capacityDefinitionType_DefaultValue_xjal();
    self.capacity = self._capacity_DefaultValue_xjal();
    self.capacityBasedOnAttractors = self._capacityBasedOnAttractors_DefaultValue_xjal();
    self.capacitySchedule = self._capacitySchedule_DefaultValue_xjal();
    self.capacityScheduleOnOff = self._capacityScheduleOnOff_DefaultValue_xjal();
    self.shiftGroupSchedules = self._shiftGroupSchedules_DefaultValue_xjal();
    self.shiftGroupSizes = self._shiftGroupSizes_DefaultValue_xjal();
    self.shiftGroupsPlan = self._shiftGroupsPlan_DefaultValue_xjal();
    self.destroyExcessUnits = self._destroyExcessUnits_DefaultValue_xjal();
    self.speed = self._speed_DefaultValue_xjal();
    self.homeNodes = self._homeNodes_DefaultValue_xjal();
    self.showDefaultAnimationStatic = self._showDefaultAnimationStatic_DefaultValue_xjal();
    self.downtimeSource = self._downtimeSource_DefaultValue_xjal();
    self.downtimeList = self._downtimeList_DefaultValue_xjal();
    self.enableMaintenance = self._enableMaintenance_DefaultValue_xjal();
    self.maintenanceType = self._maintenanceType_DefaultValue_xjal();
    self.enableFailuresRepairs = self._enableFailuresRepairs_DefaultValue_xjal();
    self.countBusyOnlyTimeToFailure = self._countBusyOnlyTimeToFailure_DefaultValue_xjal();
    self.repairType = self._repairType_DefaultValue_xjal();
    self.enableBreaks = self._enableBreaks_DefaultValue_xjal();
    self.breaksSchedule = self._breaksSchedule_DefaultValue_xjal();
    self.enableCustomTasks = self._enableCustomTasks_DefaultValue_xjal();
    self.customTasks = self._customTasks_DefaultValue_xjal();
    self.customizeRequestChoice = self._customizeRequestChoice_DefaultValue_xjal();
    self.addToCustomPopulation = self._addToCustomPopulation_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_resourcePoolОснКанал_xjal( com.anylogic.libraries.processmodeling.ResourcePool<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Delay<Agent> instantiate_delayОснКанал_xjal() {
    com.anylogic.libraries.processmodeling.Delay<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Delay<Agent>( getEngine(), this, null ) {
      @Override
      public double delayTime( Agent agent ) {
        return _delayОснКанал_delayTime_xjal( this, agent );
      }

      @AnyLogicInternalCodegenAPI
      public TimeUnits getUnitsForCodeOf_delayTime() {
        return SECOND;
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_delayОснКанал_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
    self.type = self._type_DefaultValue_xjal();
    self.capacity = self._capacity_DefaultValue_xjal();
    self.maximumCapacity = self._maximumCapacity_DefaultValue_xjal();
    self.entityLocation = self._entityLocation_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_delayОснКанал_xjal( com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Release<Agent> instantiate_releaseОснКанал_xjal() {
    com.anylogic.libraries.processmodeling.Release<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Release<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_releaseОснКанал_xjal( final com.anylogic.libraries.processmodeling.Release<Agent> self, TableInput _t ) {
    self.releaseMode = self._releaseMode_DefaultValue_xjal();
    self.seizeBlocks = self._seizeBlocks_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_releaseОснКанал_xjal( com.anylogic.libraries.processmodeling.Release<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.SelectOutput<Agent> instantiate_selectOutput_xjal() {
    com.anylogic.libraries.processmodeling.SelectOutput<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.SelectOutput<Agent>( getEngine(), this, null ) {
      @Override
      public boolean condition( Agent agent ) {
        return _selectOutput_condition_xjal( this, agent );
      }
      @Override
      public void onExitFalse( Agent agent ) {
        _selectOutput_onExitFalse_xjal( this, agent );
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_selectOutput_xjal( final com.anylogic.libraries.processmodeling.SelectOutput<Agent> self, TableInput _t ) {
    self.conditionIsProbabilistic = 
false 
;
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_selectOutput_xjal( com.anylogic.libraries.processmodeling.SelectOutput<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Delay<Agent> instantiate_delayСменаНаРезерв_xjal() {
    com.anylogic.libraries.processmodeling.Delay<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Delay<Agent>( getEngine(), this, null ) {
      @Override
      public double delayTime( Agent agent ) {
        return _delayСменаНаРезерв_delayTime_xjal( this, agent );
      }

      @AnyLogicInternalCodegenAPI
      public TimeUnits getUnitsForCodeOf_delayTime() {
        return SECOND;
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_delayСменаНаРезерв_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
    self.type = self._type_DefaultValue_xjal();
    self.capacity = self._capacity_DefaultValue_xjal();
    self.maximumCapacity = 
true 
;
    self.entityLocation = self._entityLocation_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_delayСменаНаРезерв_xjal( com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Seize<Agent> instantiate_РезервныйКанал_xjal() {
    com.anylogic.libraries.processmodeling.Seize<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Seize<Agent>( getEngine(), this, null ) {
      @Override
      public com.anylogic.libraries.processmodeling.ResourcePool[][] resourceSets( Agent agent ) {
        return _РезервныйКанал_resourceSets_xjal( this, agent );
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_РезервныйКанал_xjal( final com.anylogic.libraries.processmodeling.Seize<Agent> self, TableInput _t ) {
    self.seizeFromOnePool = self._seizeFromOnePool_DefaultValue_xjal();
    self.seizePolicy = self._seizePolicy_DefaultValue_xjal();
    self.capacity = 
1 
;
    self.maximumCapacity = self._maximumCapacity_DefaultValue_xjal();
    self.destinationType = self._destinationType_DefaultValue_xjal();
    self.entityLocationQueue = self._entityLocationQueue_DefaultValue_xjal();
    self.terminatedTaskProcessing = self._terminatedTaskProcessing_DefaultValue_xjal();
    self.suspendResumeEntities = self._suspendResumeEntities_DefaultValue_xjal();
    self.customizeResourceChoice = self._customizeResourceChoice_DefaultValue_xjal();
    self.taskStartBlocksAreConnected = self._taskStartBlocksAreConnected_DefaultValue_xjal();
    self.taskStartBlocks = self._taskStartBlocks_DefaultValue_xjal();
    self.enableTimeout = self._enableTimeout_DefaultValue_xjal();
    self.enablePreemption = self._enablePreemption_DefaultValue_xjal();
    self.canceledUnitsBehavior = self._canceledUnitsBehavior_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_РезервныйКанал_xjal( com.anylogic.libraries.processmodeling.Seize<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Delay<Agent> instantiate_delayРезервныйКанал_xjal() {
    com.anylogic.libraries.processmodeling.Delay<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Delay<Agent>( getEngine(), this, null ) {
      @Override
      public double delayTime( Agent agent ) {
        return _delayРезервныйКанал_delayTime_xjal( this, agent );
      }

      @AnyLogicInternalCodegenAPI
      public TimeUnits getUnitsForCodeOf_delayTime() {
        return SECOND;
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_delayРезервныйКанал_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
    self.type = self._type_DefaultValue_xjal();
    self.capacity = self._capacity_DefaultValue_xjal();
    self.maximumCapacity = self._maximumCapacity_DefaultValue_xjal();
    self.entityLocation = self._entityLocation_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_delayРезервныйКанал_xjal( com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Sink<Agent> instantiate_sink_xjal() {
    com.anylogic.libraries.processmodeling.Sink<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Sink<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_sink_xjal( final com.anylogic.libraries.processmodeling.Sink<Agent> self, TableInput _t ) {
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_sink_xjal( com.anylogic.libraries.processmodeling.Sink<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Release<Agent> instantiate_releaseРезКанал_xjal() {
    com.anylogic.libraries.processmodeling.Release<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Release<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_releaseРезКанал_xjal( final com.anylogic.libraries.processmodeling.Release<Agent> self, TableInput _t ) {
    self.releaseMode = self._releaseMode_DefaultValue_xjal();
    self.seizeBlocks = self._seizeBlocks_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_releaseРезКанал_xjal( com.anylogic.libraries.processmodeling.Release<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Sink<Agent> instantiate_sink1_xjal() {
    com.anylogic.libraries.processmodeling.Sink<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Sink<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_sink1_xjal( final com.anylogic.libraries.processmodeling.Sink<Agent> self, TableInput _t ) {
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_sink1_xjal( com.anylogic.libraries.processmodeling.Sink<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Source<Agent> instantiate_ГенерацияПоломок_xjal() {
    com.anylogic.libraries.processmodeling.Source<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Source<Agent>( getEngine(), this, null ) {
      @Override
      public double interarrivalTime(  ) {
        return _ГенерацияПоломок_interarrivalTime_xjal( this );
      }

      @AnyLogicInternalCodegenAPI
      public TimeUnits getUnitsForCodeOf_interarrivalTime() {
        return SECOND;
      }
      @Override
      public void onExit( Agent agent ) {
        _ГенерацияПоломок_onExit_xjal( this, agent );
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_ГенерацияПоломок_xjal( final com.anylogic.libraries.processmodeling.Source<Agent> self, TableInput _t ) {
    self.arrivalType = 
self.INTERARRIVAL_TIME 
;
    self.rate = self._rate_DefaultValue_xjal();
    self.firstArrivalMode = self._firstArrivalMode_DefaultValue_xjal();
    self.firstArrivalTime = self._firstArrivalTime_DefaultValue_xjal();
    self.rateSchedule = self._rateSchedule_DefaultValue_xjal();
    self.modifyRate = self._modifyRate_DefaultValue_xjal();
    self.arrivalSchedule = self._arrivalSchedule_DefaultValue_xjal();
    self.setAgentParametersFromDB = self._setAgentParametersFromDB_DefaultValue_xjal();
    self.databaseTable = self._databaseTable_DefaultValue_xjal();
    self.multipleEntitiesPerArrival = self._multipleEntitiesPerArrival_DefaultValue_xjal();
    self.limitArrivals = self._limitArrivals_DefaultValue_xjal();
    self.maxArrivals = self._maxArrivals_DefaultValue_xjal();
    self.locationType = self._locationType_DefaultValue_xjal();
    self.locationXYZInNetwork = self._locationXYZInNetwork_DefaultValue_xjal();
    self.enableCustomStartTime = self._enableCustomStartTime_DefaultValue_xjal();
    self.startTime = self._startTime_DefaultValue_xjal();
    self.addToCustomPopulation = self._addToCustomPopulation_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.discardHangingEntities = self._discardHangingEntities_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_ГенерацияПоломок_xjal( com.anylogic.libraries.processmodeling.Source<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Delay<Agent> instantiate_delayПочинкаОснКанала_xjal() {
    com.anylogic.libraries.processmodeling.Delay<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Delay<Agent>( getEngine(), this, null ) {
      @Override
      public double delayTime( Agent agent ) {
        return _delayПочинкаОснКанала_delayTime_xjal( this, agent );
      }

      @AnyLogicInternalCodegenAPI
      public TimeUnits getUnitsForCodeOf_delayTime() {
        return SECOND;
      }
      @Override
      public void onEnter( Agent agent, double delayTime ) {
        _delayПочинкаОснКанала_onEnter_xjal( this, agent, delayTime );
      }
      @Override
      public void onExit( Agent agent ) {
        _delayПочинкаОснКанала_onExit_xjal( this, agent );
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_delayПочинкаОснКанала_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
    self.type = self._type_DefaultValue_xjal();
    self.capacity = self._capacity_DefaultValue_xjal();
    self.maximumCapacity = 
true 
;
    self.entityLocation = self._entityLocation_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_delayПочинкаОснКанала_xjal( com.anylogic.libraries.processmodeling.Delay<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Sink<Agent> instantiate_sink2_xjal() {
    com.anylogic.libraries.processmodeling.Sink<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Sink<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_sink2_xjal( final com.anylogic.libraries.processmodeling.Sink<Agent> self, TableInput _t ) {
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_sink2_xjal( com.anylogic.libraries.processmodeling.Sink<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.Seize<Agent> instantiate_ОсновнойКанал_xjal() {
    com.anylogic.libraries.processmodeling.Seize<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.Seize<Agent>( getEngine(), this, null ) {
      @Override
      public com.anylogic.libraries.processmodeling.ResourcePool[][] resourceSets( Agent agent ) {
        return _ОсновнойКанал_resourceSets_xjal( this, agent );
      }
	};
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_ОсновнойКанал_xjal( final com.anylogic.libraries.processmodeling.Seize<Agent> self, TableInput _t ) {
    self.seizeFromOnePool = self._seizeFromOnePool_DefaultValue_xjal();
    self.seizePolicy = self._seizePolicy_DefaultValue_xjal();
    self.capacity = 
1 
;
    self.maximumCapacity = self._maximumCapacity_DefaultValue_xjal();
    self.destinationType = self._destinationType_DefaultValue_xjal();
    self.entityLocationQueue = self._entityLocationQueue_DefaultValue_xjal();
    self.terminatedTaskProcessing = self._terminatedTaskProcessing_DefaultValue_xjal();
    self.suspendResumeEntities = self._suspendResumeEntities_DefaultValue_xjal();
    self.customizeResourceChoice = self._customizeResourceChoice_DefaultValue_xjal();
    self.taskStartBlocksAreConnected = self._taskStartBlocksAreConnected_DefaultValue_xjal();
    self.taskStartBlocks = self._taskStartBlocks_DefaultValue_xjal();
    self.enableTimeout = self._enableTimeout_DefaultValue_xjal();
    self.enablePreemption = self._enablePreemption_DefaultValue_xjal();
    self.canceledUnitsBehavior = self._canceledUnitsBehavior_DefaultValue_xjal();
    self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
    self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_ОсновнойКанал_xjal( com.anylogic.libraries.processmodeling.Seize<Agent> self, TableInput _t ) {
  }
  /**
   * Создает экземпляр вложенного объекта<br>
   * <i>Пользователь не должен вызывать этот метод</i>
   */
  protected com.anylogic.libraries.processmodeling.ResourcePool<Agent> instantiate_resourcePoolРезКанал_xjal() {
    com.anylogic.libraries.processmodeling.ResourcePool<Agent> _result_xjal = new com.anylogic.libraries.processmodeling.ResourcePool<Agent>( getEngine(), this, null );
    
    return _result_xjal;
  }

  /**
   * Инициализация параметров экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  private void setupParameters_resourcePoolРезКанал_xjal( final com.anylogic.libraries.processmodeling.ResourcePool<Agent> self, TableInput _t ) {
    self.type = self._type_DefaultValue_xjal();
    self.capacityDefinitionType = self._capacityDefinitionType_DefaultValue_xjal();
    self.capacity = self._capacity_DefaultValue_xjal();
    self.capacityBasedOnAttractors = self._capacityBasedOnAttractors_DefaultValue_xjal();
    self.capacitySchedule = self._capacitySchedule_DefaultValue_xjal();
    self.capacityScheduleOnOff = self._capacityScheduleOnOff_DefaultValue_xjal();
    self.shiftGroupSchedules = self._shiftGroupSchedules_DefaultValue_xjal();
    self.shiftGroupSizes = self._shiftGroupSizes_DefaultValue_xjal();
    self.shiftGroupsPlan = self._shiftGroupsPlan_DefaultValue_xjal();
    self.destroyExcessUnits = self._destroyExcessUnits_DefaultValue_xjal();
    self.speed = self._speed_DefaultValue_xjal();
    self.homeNodes = self._homeNodes_DefaultValue_xjal();
    self.showDefaultAnimationStatic = self._showDefaultAnimationStatic_DefaultValue_xjal();
    self.downtimeSource = self._downtimeSource_DefaultValue_xjal();
    self.downtimeList = self._downtimeList_DefaultValue_xjal();
    self.enableMaintenance = self._enableMaintenance_DefaultValue_xjal();
    self.maintenanceType = self._maintenanceType_DefaultValue_xjal();
    self.enableFailuresRepairs = self._enableFailuresRepairs_DefaultValue_xjal();
    self.countBusyOnlyTimeToFailure = self._countBusyOnlyTimeToFailure_DefaultValue_xjal();
    self.repairType = self._repairType_DefaultValue_xjal();
    self.enableBreaks = self._enableBreaks_DefaultValue_xjal();
    self.breaksSchedule = self._breaksSchedule_DefaultValue_xjal();
    self.enableCustomTasks = self._enableCustomTasks_DefaultValue_xjal();
    self.customTasks = self._customTasks_DefaultValue_xjal();
    self.customizeRequestChoice = self._customizeRequestChoice_DefaultValue_xjal();
    self.addToCustomPopulation = self._addToCustomPopulation_DefaultValue_xjal();
    self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
  }

  /**
   * Инициализация экземпляра вложенного объекта<br>
   * Пользователь не должен вызывать этот метод
   */
  @AnyLogicInternalCodegenAPI
  private void doBeforeCreate_resourcePoolРезКанал_xjal( com.anylogic.libraries.processmodeling.ResourcePool<Agent> self, TableInput _t ) {
  }

  private double _source_interarrivalTime_xjal( final com.anylogic.libraries.processmodeling.Source<Agent> self ) {
    double _value;
    _value = 
triangular( 5, 9, 13) 
;
    return _value;
  }
  private double _delayОснКанал_delayTime_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, Agent agent ) {
    double _value;
    _value = 
triangular( 4, 7, 10 ) 
;
    return _value;
  }
  private boolean _selectOutput_condition_xjal( final com.anylogic.libraries.processmodeling.SelectOutput<Agent> self, Agent agent ) {
    boolean _value;
    _value = 
isMainChannelActive
 
;
    return _value;
  }
  private void _selectOutput_onExitFalse_xjal( final com.anylogic.libraries.processmodeling.SelectOutput<Agent> self, Agent agent ) {
    
ЧислоПрерванныхСообщений++; 
;
  }
  private double _delayСменаНаРезерв_delayTime_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, Agent agent ) {
    double _value;
    _value = 
2 
;
    return _value;
  }
  private com.anylogic.libraries.processmodeling.ResourcePool[][] _РезервныйКанал_resourceSets_xjal( final com.anylogic.libraries.processmodeling.Seize<Agent> self, Agent agent ) {
    com.anylogic.libraries.processmodeling.ResourcePool[][] _value;
    _value = new com.anylogic.libraries.processmodeling.ResourcePool[][]
{ 
  { resourcePoolРезКанал }
} 
;
    return _value;
  }
  private double _delayРезервныйКанал_delayTime_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, Agent agent ) {
    double _value;
    _value = 
triangular( 4, 7, 10 ) 
;
    return _value;
  }
  private double _ГенерацияПоломок_interarrivalTime_xjal( final com.anylogic.libraries.processmodeling.Source<Agent> self ) {
    double _value;
    _value = 
triangular( 165, 200, 235 ) 
;
    return _value;
  }
  private void _ГенерацияПоломок_onExit_xjal( final com.anylogic.libraries.processmodeling.Source<Agent> self, Agent agent ) {
    
ЧислоОтказовКанала++; 
;
  }
  private double _delayПочинкаОснКанала_delayTime_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, Agent agent ) {
    double _value;
    _value = 
triangular( 16, 23, 30 ) 
;
    return _value;
  }
  private void _delayПочинкаОснКанала_onEnter_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, Agent agent, double delayTime ) {
    
isMainChannelActive = false; 
;
  }
  private void _delayПочинкаОснКанала_onExit_xjal( final com.anylogic.libraries.processmodeling.Delay<Agent> self, Agent agent ) {
    
isMainChannelActive = true; 
;
  }
  private com.anylogic.libraries.processmodeling.ResourcePool[][] _ОсновнойКанал_resourceSets_xjal( final com.anylogic.libraries.processmodeling.Seize<Agent> self, Agent agent ) {
    com.anylogic.libraries.processmodeling.ResourcePool[][] _value;
    _value = new com.anylogic.libraries.processmodeling.ResourcePool[][]
{ 
  { resourcePoolОснКанал }
} 
;
    return _value;
  }
  // Функции

  void function(  ) { 

ЧислоОтказовКанала/3600 
  }
private double _datasetUpdateTime_xjal() {
	return time();
}
  // Области
  public ViewArea _origin_VA = new ViewArea( this, "[Нач. координат]", 0, 0, 1000.0, 600.0 );
  @Override
  @AnyLogicInternalCodegenAPI
  public int getViewAreas(Map<String, ViewArea> _output) {
    if ( _output != null ) {
      _output.put( "_origin_VA", this._origin_VA );
    }
    return 1 + super.getViewAreas( _output );
  }
  /** Internal constant, shouldn't be accessed by user */
  @AnyLogicInternalCodegenAPI
  protected static final int _SHAPE_NEXT_ID_xjal = 1;

  @AnyLogicInternalCodegenAPI
  public boolean isPublicPresentationDefined() {
    return false;
  }

  @AnyLogicInternalCodegenAPI
  public boolean isEmbeddedAgentPresentationVisible( Agent _a ) {
    return super.isEmbeddedAgentPresentationVisible( _a );
  }
  @AnyLogicInternalCodegenAPI
  private void _initialize_level_xjal() {
	  level.addAll();
  }

  protected com.anylogic.engine.markup.Level level;

  private com.anylogic.engine.markup.Level[] _getLevels_xjal;

  @Override
  public com.anylogic.engine.markup.Level[] getLevels() {
    return _getLevels_xjal;
  }

  @AnyLogicInternalCodegenAPI
  private void _createPersistentElementsBP0_xjal() {
  }

  @AnyLogicInternalCodegenAPI
  private void _createPersistentElementsAP0_xjal() {
  }

  @AnyLogicInternalCodegenAPI
  private void _createPersistentElementsBS0_xjal() {
  }


  // Статическая инициализация элементов, у которых разрешено программное управление
  private void instantiatePersistentElements_xjal() {
    level = new com.anylogic.engine.markup.Level(this, "level", SHAPE_DRAW_2D3D, 0.0, true, true);  			
	_getLevels_xjal = new com.anylogic.engine.markup.Level[] { 
      level };
    _createPersistentElementsBP0_xjal();
  }
  protected ShapeTopLevelPresentationGroup presentation;
  protected ShapeModelElementsGroup icon; 

  @Override
  @AnyLogicInternalCodegenAPI
  public ShapeTopLevelPresentationGroup getPresentationShape() {
    return presentation;
  }

  @Override
  @AnyLogicInternalCodegenAPI
  public ShapeModelElementsGroup getModelElementsShape() {
    return icon;
  }

	


  /**
   * Конструктор
   */
  public Main( Engine engine, Agent owner, AgentList<? extends Main> ownerPopulation ) {
    super( engine, owner, ownerPopulation );
    instantiateBaseStructureThis_xjal();
  }

  @AnyLogicInternalCodegenAPI
  public void onOwnerChanged_xjal() {
    super.onOwnerChanged_xjal();
    setupReferences_xjal();
  }

  @AnyLogicInternalCodegenAPI
  public void instantiateBaseStructure_xjal() {
    super.instantiateBaseStructure_xjal();
    instantiateBaseStructureThis_xjal();
  }
  
  @AnyLogicInternalCodegenAPI
  private void instantiateBaseStructureThis_xjal() {
    source = instantiate_source_xjal();
    Накопитель = instantiate_Накопитель_xjal();
    resourcePoolОснКанал = instantiate_resourcePoolОснКанал_xjal();
    delayОснКанал = instantiate_delayОснКанал_xjal();
    releaseОснКанал = instantiate_releaseОснКанал_xjal();
    selectOutput = instantiate_selectOutput_xjal();
    delayСменаНаРезерв = instantiate_delayСменаНаРезерв_xjal();
    РезервныйКанал = instantiate_РезервныйКанал_xjal();
    delayРезервныйКанал = instantiate_delayРезервныйКанал_xjal();
    sink = instantiate_sink_xjal();
    releaseРезКанал = instantiate_releaseРезКанал_xjal();
    sink1 = instantiate_sink1_xjal();
    ГенерацияПоломок = instantiate_ГенерацияПоломок_xjal();
    delayПочинкаОснКанала = instantiate_delayПочинкаОснКанала_xjal();
    sink2 = instantiate_sink2_xjal();
    ОсновнойКанал = instantiate_ОсновнойКанал_xjal();
    resourcePoolРезКанал = instantiate_resourcePoolРезКанал_xjal();
	instantiatePersistentElements_xjal();
    setupReferences_xjal();
  }
  
  @AnyLogicInternalCodegenAPI
  private void setupReferences_xjal() {
  }
  
  /**
   * Simple constructor. Please add created agent to some population by calling goToPopulation() function.
   */
  public Main() {
  }
  
  /**
   * Создание экземпляров вложенных объектов
   */
  @AnyLogicInternalCodegenAPI
  private void instantiatePopulations_xjal() {
  }

  @Override
  @AnyLogicInternalCodegenAPI
  public void doCreate() {
    super.doCreate();
    // Создание экземпляров вложенных объектов
    instantiatePopulations_xjal();
    // Присвоение начальных значений простым переменным
    setupPlainVariables_Main_xjal();
    // Динамическая инициализация элементов, у которых разрешено программное управление
    _createPersistentElementsAP0_xjal();
	_initialize_level_xjal();
    level.initialize();
    presentation = new ShapeTopLevelPresentationGroup( Main.this, true, 0, 0, 0, 0 , level );
    // Создание экземпляров вложенных объектов
    instantiatePopulations_xjal();
    icon = new ShapeModelElementsGroup( Main.this, getElementProperty( "kursvar7.Main.icon", IElementDescriptor.MODEL_ELEMENT_DESCRIPTORS )  );
    icon.setIconOffsets( 0.0, 0.0 );
    // Инициализация агентных сред
    {
      double _x_xjal = 
500 
;
      double _y_xjal = 
500 
;
      double _z_xjal = 
0 
;
      setupSpace( _x_xjal, _y_xjal, _z_xjal );
    }
    disableSteps();
    setNetworkUserDefined();
    setLayoutType( LAYOUT_USER_DEFINED );
    // Создание нереплицированных вложенных объектов
    setupParameters_source_xjal( source, null );
    doBeforeCreate_source_xjal( source, null );
    source.createAsEmbedded();
    setupParameters_Накопитель_xjal( Накопитель, null );
    doBeforeCreate_Накопитель_xjal( Накопитель, null );
    Накопитель.createAsEmbedded();
    setupParameters_resourcePoolОснКанал_xjal( resourcePoolОснКанал, null );
    doBeforeCreate_resourcePoolОснКанал_xjal( resourcePoolОснКанал, null );
    resourcePoolОснКанал.createAsEmbedded();
    setupParameters_delayОснКанал_xjal( delayОснКанал, null );
    doBeforeCreate_delayОснКанал_xjal( delayОснКанал, null );
    delayОснКанал.createAsEmbedded();
    setupParameters_releaseОснКанал_xjal( releaseОснКанал, null );
    doBeforeCreate_releaseОснКанал_xjal( releaseОснКанал, null );
    releaseОснКанал.createAsEmbedded();
    setupParameters_selectOutput_xjal( selectOutput, null );
    doBeforeCreate_selectOutput_xjal( selectOutput, null );
    selectOutput.createAsEmbedded();
    setupParameters_delayСменаНаРезерв_xjal( delayСменаНаРезерв, null );
    doBeforeCreate_delayСменаНаРезерв_xjal( delayСменаНаРезерв, null );
    delayСменаНаРезерв.createAsEmbedded();
    setupParameters_РезервныйКанал_xjal( РезервныйКанал, null );
    doBeforeCreate_РезервныйКанал_xjal( РезервныйКанал, null );
    РезервныйКанал.createAsEmbedded();
    setupParameters_delayРезервныйКанал_xjal( delayРезервныйКанал, null );
    doBeforeCreate_delayРезервныйКанал_xjal( delayРезервныйКанал, null );
    delayРезервныйКанал.createAsEmbedded();
    setupParameters_sink_xjal( sink, null );
    doBeforeCreate_sink_xjal( sink, null );
    sink.createAsEmbedded();
    setupParameters_releaseРезКанал_xjal( releaseРезКанал, null );
    doBeforeCreate_releaseРезКанал_xjal( releaseРезКанал, null );
    releaseРезКанал.createAsEmbedded();
    setupParameters_sink1_xjal( sink1, null );
    doBeforeCreate_sink1_xjal( sink1, null );
    sink1.createAsEmbedded();
    setupParameters_ГенерацияПоломок_xjal( ГенерацияПоломок, null );
    doBeforeCreate_ГенерацияПоломок_xjal( ГенерацияПоломок, null );
    ГенерацияПоломок.createAsEmbedded();
    setupParameters_delayПочинкаОснКанала_xjal( delayПочинкаОснКанала, null );
    doBeforeCreate_delayПочинкаОснКанала_xjal( delayПочинкаОснКанала, null );
    delayПочинкаОснКанала.createAsEmbedded();
    setupParameters_sink2_xjal( sink2, null );
    doBeforeCreate_sink2_xjal( sink2, null );
    sink2.createAsEmbedded();
    setupParameters_ОсновнойКанал_xjal( ОсновнойКанал, null );
    doBeforeCreate_ОсновнойКанал_xjal( ОсновнойКанал, null );
    ОсновнойКанал.createAsEmbedded();
    setupParameters_resourcePoolРезКанал_xjal( resourcePoolРезКанал, null );
    doBeforeCreate_resourcePoolРезКанал_xjal( resourcePoolРезКанал, null );
    resourcePoolРезКанал.createAsEmbedded();
	 // Соединители с нереплицированными объектами
    Накопитель.in.connect( source.out ); // connector
    delayСменаНаРезерв.in.connect( selectOutput.outF ); // connector4
    Накопитель.out.connect( selectOutput.in ); // connector1
    РезервныйКанал.in.connect( delayСменаНаРезерв.out ); // connector6
    sink1.in.connect( releaseРезКанал.out ); // connector10
    releaseРезКанал.in.connect( delayРезервныйКанал.out ); // connector9
    delayРезервныйКанал.in.connect( РезервныйКанал.out ); // connector7
    sink.in.connect( releaseОснКанал.out ); // connector8
    releaseОснКанал.in.connect( delayОснКанал.out ); // connector3
    delayПочинкаОснКанала.in.connect( ГенерацияПоломок.out ); // connector11
    sink2.in.connect( delayПочинкаОснКанала.out ); // connector12
    ОсновнойКанал.in.connect( selectOutput.outT ); // connector5
    ОсновнойКанал.out.connect( delayОснКанал.in ); // connector2
    // Создание реплицированных вложенных объектов
    setupInitialConditions_xjal( Main.class );
    // Динамическая инициализация элементов, у которых разрешено программное управление
    _createPersistentElementsBS0_xjal();
  }

  @Override
  @AnyLogicInternalCodegenAPI
  public void doStart() {
    super.doStart();
    source.startAsEmbedded();
    Накопитель.startAsEmbedded();
    resourcePoolОснКанал.startAsEmbedded();
    delayОснКанал.startAsEmbedded();
    releaseОснКанал.startAsEmbedded();
    selectOutput.startAsEmbedded();
    delayСменаНаРезерв.startAsEmbedded();
    РезервныйКанал.startAsEmbedded();
    delayРезервныйКанал.startAsEmbedded();
    sink.startAsEmbedded();
    releaseРезКанал.startAsEmbedded();
    sink1.startAsEmbedded();
    ГенерацияПоломок.startAsEmbedded();
    delayПочинкаОснКанала.startAsEmbedded();
    sink2.startAsEmbedded();
    ОсновнойКанал.startAsEmbedded();
    resourcePoolРезКанал.startAsEmbedded();
  }
 

  /**
   * Присвоение начальных значений простым переменным<br>
   * <em>This method isn't designed to be called by user and may be removed in future releases.</em>
   */
  @AnyLogicInternalCodegenAPI
  public void setupPlainVariables_xjal() {
    setupPlainVariables_Main_xjal();
  }

  /**
   * Присвоение начальных значений простым переменным<br>
   * <em>This method isn't designed to be called by user and may be removed in future releases.</em>
   */
  @AnyLogicInternalCodegenAPI
  private void setupPlainVariables_Main_xjal() {
    isMainChannelActive = 
true 
;
    ЧислоОтказовКанала = 
0 
;
    ЧислоПрерванныхСообщений = 
0 
;
    ЧастотаОтказовКанала = 
function() 
;
  }

  // API пользователя -----------------------------------------------------
  @AnyLogicInternalCodegenAPI
  public static LinkToAgentAnimationSettings _connections_commonAnimationSettings_xjal = new LinkToAgentAnimationSettingsImpl( false, black, 1.0, LINE_STYLE_SOLID, ARROW_NONE, 0.0 );

  public LinkToAgentCollection<Agent, Agent> connections = new LinkToAgentStandardImpl<Agent, Agent>(this, _connections_commonAnimationSettings_xjal);
  @Override
  public LinkToAgentCollection<? extends Agent, ? extends Agent> getLinkToAgentStandard_xjal() {
    return connections;
  }


  @AnyLogicInternalCodegenAPI
  public void drawLinksToAgents(boolean _underAgents_xjal, LinkToAgentAnimator _animator_xjal) {
    super.drawLinksToAgents(_underAgents_xjal, _animator_xjal);
    if ( _underAgents_xjal ) {
      _animator_xjal.drawLink( this, connections, true, true );
    }
  }

  public List<Object> getEmbeddedObjects() {
    List<Object> list = super.getEmbeddedObjects();
    if (list == null) {
      list = new LinkedList<>();
    }
    list.add( source );
    list.add( Накопитель );
    list.add( resourcePoolОснКанал );
    list.add( delayОснКанал );
    list.add( releaseОснКанал );
    list.add( selectOutput );
    list.add( delayСменаНаРезерв );
    list.add( РезервныйКанал );
    list.add( delayРезервныйКанал );
    list.add( sink );
    list.add( releaseРезКанал );
    list.add( sink1 );
    list.add( ГенерацияПоломок );
    list.add( delayПочинкаОснКанала );
    list.add( sink2 );
    list.add( ОсновнойКанал );
    list.add( resourcePoolРезКанал );
    return list;
  }

  public AgentList<? extends Main> getPopulation() {
    return (AgentList<? extends Main>) super.getPopulation();
  }

  public List<? extends Main> agentsInRange( double distance ) {
    return (List<? extends Main>) super.agentsInRange( distance );
  }

  @AnyLogicInternalCodegenAPI
  public void onDestroy() {
    source.onDestroy();
    Накопитель.onDestroy();
    resourcePoolОснКанал.onDestroy();
    delayОснКанал.onDestroy();
    releaseОснКанал.onDestroy();
    selectOutput.onDestroy();
    delayСменаНаРезерв.onDestroy();
    РезервныйКанал.onDestroy();
    delayРезервныйКанал.onDestroy();
    sink.onDestroy();
    releaseРезКанал.onDestroy();
    sink1.onDestroy();
    ГенерацияПоломок.onDestroy();
    delayПочинкаОснКанала.onDestroy();
    sink2.onDestroy();
    ОсновнойКанал.onDestroy();
    resourcePoolРезКанал.onDestroy();
    super.onDestroy();
  }

  @AnyLogicInternalCodegenAPI
  @Override
  public void doFinish() {
    super.doFinish();
    source.doFinish();
    Накопитель.doFinish();
    resourcePoolОснКанал.doFinish();
    delayОснКанал.doFinish();
    releaseОснКанал.doFinish();
    selectOutput.doFinish();
    delayСменаНаРезерв.doFinish();
    РезервныйКанал.doFinish();
    delayРезервныйКанал.doFinish();
    sink.doFinish();
    releaseРезКанал.doFinish();
    sink1.doFinish();
    ГенерацияПоломок.doFinish();
    delayПочинкаОснКанала.doFinish();
    sink2.doFinish();
    ОсновнойКанал.doFinish();
    resourcePoolРезКанал.doFinish();
  }


}


исправь


Описание: function cannot be resolved to a variable. Местоположение: KursVar7/Main/ЧастотаОтказовКанала - Переменная