class SimulationParameters
用来设置仿真过程的网络设备信息等参数
设置配置包的路径
/**
* The path to the configuration file.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationAbstract#setCustomFilePath(String path, Files file)
*/
public static String simulationParametersFile = "PureEdgeSim/settings/simulation_parameters.properties";
应用的设置文件路径
/**
* The path to the applications characteristics file.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationAbstract#setCustomFilePath(String,
* Files)
*/
public static String applicationFile = "PureEdgeSim/settings/applications.xml";
边缘计算中心配置路径
/**
* The path to the edge data centers characteristics file.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationAbstract#setCustomFilePath(String,
* Files)
*/
public static String edgeDataCentersFile = "PureEdgeSim/settings/edge_datacenters.xml";
边缘设备的配置路径
/**
* The path to the edge devices characteristics file.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationAbstract#setCustomFilePath(String,
* Files)
*/
public static String edgeDevicesFile = "PureEdgeSim/settings/edge_devices.xml";
云计算中心的配置路径
/**
* The path to the cloud characteristics file.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationAbstract#setCustomFilePath(String,
* Files)
*/
public static String cloudDataCentersFile = "PureEdgeSim/settings/cloud.xml";
输出文件路径
/**
* The output folder path.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationAbstract#setCustomOutputFolder(String)
*/
public static String outputFolder = "PureEdgeSim/output/";
仿真是否是并行执行
默认为false
/**
* If true simulations will be launched in parallel
*
* @see com.mechalikh.pureedgesim.simulationmanager.Simulation#launchSimulation()
*/
public static boolean parallelism_enabled = false;
存储仿真的时间
/**
* Simualtion time in seconds.
*
* @see com.mechalikh.pureedgesim.simulationmanager.DefaultSimulationManager#startInternal()
*/
public static double simulationDuration;
每次迭代暂停的时长(秒)
/**
* Pause between iterations (in seconds)
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimulationThread#pause(SimLog
* simLog)
*/
public static int pauseLength;
更新的频率(设备的位置等事件)(秒)
/**
* Update interval (Mobility and other events) (in seconds)
*
*/
public static double updateInterval;
是否实时绘制图表
/**
* If true, real-time charts will be displayed
*
* @see com.mechalikh.pureedgesim.simulationvisualizer.SimulationVisualizer#updateCharts()
*/
public static boolean displayRealTimeCharts;
仿真结束,实时图表是否关闭
/**
* If true, real-time charts are automatically closed when simulation finishes
*
* @see com.mechalikh.pureedgesim.simulationmanager.DefaultSimulationManager#processEvent(com.mechalikh.pureedgesim.simulationengine.Event)
*/
public static boolean autoCloseRealTimeCharts;
图表更新频率
/**
* Charts refresh interval in seconds
*
* @see com.mechalikh.pureedgesim.simulationvisualizer.SimulationVisualizer#updateCharts()
*/
public static double chartsUpdateInterval;
是否保存图片
/**
* If true, charts are automatically generated at the end of the simulation and
* saved in bitmap format in the {@link SimulationParameters#outputFolder}
*
* @see com.mechalikh.pureedgesim.simulationvisualizer.SimulationVisualizer#updateCharts()
*/
public static boolean saveCharts;
仿真图像的长
/**
* The length of simulation map in meters.
*
* @see com.mechalikh.pureedgesim.locationmanager.MobilityModel
* @see com.mechalikh.pureedgesim.locationmanager.DefaultMobilityModel
*/
public static int simulationMapLength;
仿真图像的宽
/**
* The width of simulation map in meters.
*
* @see com.mechalikh.pureedgesim.locationmanager.MobilityModel
* @see com.mechalikh.pureedgesim.locationmanager.DefaultMobilityModel
*/
public static int simulationMapWidth;
边缘数据中心的数量
/**
* The number of edge data centers.
*
* @see com.mechalikh.pureedgesim.scenariomanager.DatacentersParser#typeSpecificChecking(org.w3c.dom.Document)
*/
public static int numberOfEdgeDataCenters;
云数据中心的数量
/**
* The number of cloud data centers.
*
* @see com.mechalikh.pureedgesim.scenariomanager.DatacentersParser#typeSpecificChecking(org.w3c.dom.Document)
*/
public static int numberOfCloudDataCenters;
边缘设备的最少数量
/**
* The minimum number of edge devices.
*
* @see com.mechalikh.pureedgesim.simulationmanager.Simulation#loadScenarios()
*/
public static int minNumberOfEdgeDevices;
边缘设备的最大数量
/**
* The maximum number of edge devices.
*
* @see com.mechalikh.pureedgesim.simulationmanager.Simulation#loadScenarios()
*/
public static int maxNumberOfEdgeDevices;
边缘设备的增长速度
/**
* The incremental step of edge devices
*
* @see com.mechalikh.pureedgesim.simulationmanager.Simulation#loadScenarios()
*/
public static int edgeDevicesIncrementationStepSize;
计算节点的种类
/**
* The types of computing nodes.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.ComputingNodesGenerator#generateDatacentersAndDevices()
* @see com.mechalikh.pureedgesim.datacentersmanager.ComputingNode#setType(TYPES)
*/
public enum TYPES {
CLOUD, EDGE_DATACENTER, EDGE_DEVICE, NULL
}
是否记开启日志
/**
* Whether deep logging is enabled or not.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimLog#deepLog(String)
*/
public static boolean deepLoggingEnabled;
是否存储日志
/**
* Whether to save the log or not.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimLog#saveLog()
*/
public static boolean saveLog;
是否清除之前的日志和仿真结果
/**
* If true, it delete previous logs and simulation results.
*
* @see com.mechalikh.pureedgesim.simulationmanager.SimLog#cleanOutputFolder()
*/
public static boolean cleanOutputFolder;
Wan广域网的带宽
/**
* The WAN (core+data center network) bandwidth in bits per second.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setBandwidth(double)
*/
public static double wanBandwidthBitsPerSecond;
WAN广域网的延迟
/**
* The WAN (core+data center network) latency in seconds.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setLatency(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkWanUp
* @see com.mechalikh.pureedgesim.network.NetworkLinkWanDown
*/
public static double wanLatency;
Wan广域网的每比特的功率消耗
/**
* The WAN (core+data center network) energy consumption in watthour per bit.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkWanUp
* @see com.mechalikh.pureedgesim.network.NetworkLinkWanDown
*/
public static double wanWattHourPerBit;
使用广域网WAN向云数据中心传输数据时是否共享网络
是否共享带宽
/**
* If true, all data sent to /received from the cloud will be transmitted
* through the same WAN network (i.e. share the same bandwidth).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setBandwidth(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkWanUp
* @see com.mechalikh.pureedgesim.network.NetworkLinkWanDown
*/
public static boolean useOneSharedWanLink;
MAN网络是指边缘数据中心之间的网络连接
MAN网络每秒传输的比特数
/**
* The MAN (the links between edge data centers) bandwidth in bits per second.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setBandwidth(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkMan
*/
public static double manBandwidthBitsPerSecond;
MAN网络的延迟
/**
* The MAN (the links between edge data centers) latency in seconds.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setLatency(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkMan
*/
public static double manLatency;
MAN网络的能量消耗
/**
* The MAN (the links between edge data centers) energy consumption in watthour
* per bit.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkMan
*/
public static double manWattHourPerBit;
WIFI带宽
/**
* The WiFI bandwidth in bits per second.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setBandwidth(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifi
*/
public static double wifiBandwidthBitsPerSecond;
设备传输数据时的能量消耗
/**
* The energy consumed by the device when transmitting data (in watthour per bit).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifi
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifiDeviceToDevice
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifiUp
*/
public static double wifiDeviceTransmissionWattHourPerBit;
设备接收数据时的能量消耗
/**
* The energy consumed by the device when receiving data (in watthour per bit).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifi
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifiDeviceToDevice
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifiDown
*/
public static double wifiDeviceReceptionWattHourPerBit;
发送数据时AP传输节点的能量消耗
/**
* The energy consumed by the WiFi access point when transmitting data in watthour per bit.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifi
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifiDown
*/
public static double wifiAccessPointTransmissionWattHourPerBit;
接收数据时AP传输节点的能量消耗
/**
* The energy consumed by the WiFi access point when receiving data in watthour per bit.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifi
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifiUp
*/
public static double wifiAccessPointReceptionWattHourPerBit;
WIFI延迟
/**
* The WiFi latency in seconds.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setLatency(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkWifi
*/
public static double wifiLatency;
/**
* The Ethernet bandwidth in bits per second.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setBandwidth(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkEthernet
*/
public static double ethernetBandwidthBitsPerSecond;
以太网能量消耗
/**
* The Ethernet energy consumption in watthour per bit.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkEthernet
*/
public static double ethernetWattHourPerBit;
以太网延迟
/**
* The Ethernet latency in seconds.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setLatency(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkEthernet
*/
public static double ethernetLatency;
蜂窝网络的带宽
/**
* The mobile communication/ cellular network (e.g. 3G, 4G, 5G) bandwidth in
* bits per second.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setBandwidth(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkCellular
*/
public static double cellularBandwidthBitsPerSecond;
蜂窝网络的发送能耗
/**
* The energy consumed by an edge device when transmitting data using a cellular connection (e.g. 3G,
* 4G, 5G) (in watthour per bit).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkCellularUp
*/
public static double cellularDeviceTransmissionWattHourPerBit;
蜂窝网络的接受能耗
/**
* The energy consumed by an edge device when receiving data using a cellular connection (e.g. 3G,
* 4G, 5G) (in watthour per bit).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkCellularUp
*/
public static double cellularDeviceReceptionWattHourPerBit;
蜂窝基站的上传能耗
/**
* The mobile base station uplink network (e.g. 3G, 4G, 5G) energy consumption
* (in watthour per bit).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkCellularUp
*/
public static double cellularBaseStationWattHourPerBitUpLink;
蜂窝基站的下载能耗
/**
* The mobile base station downlink network (e.g. 3G, 4G, 5G) energy consumption
* (in watthour per bit).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.energy.EnergyModelNetworkLink#getEnergyPerBit()
* @see com.mechalikh.pureedgesim.network.NetworkLink#getEnergyModel()
* @see com.mechalikh.pureedgesim.network.NetworkLinkCellularDown
*/
public static double cellularBaseStationWattHourPerBitDownLink;
蜂窝网络的传输延迟
/**
* The mobile communication/ cellular (e.g. 3G, 4G, 5G) network latency in
* seconds.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.DefaultTopologyCreator#generateTopologyGraph()
* @see com.mechalikh.pureedgesim.network.NetworkLink#setLatency(double)
* @see com.mechalikh.pureedgesim.network.NetworkLinkCellular
*/
public static double cellularLatency;
WIFI传播范围(当使用设备对设备的连接)
/**
* The WiFi range of edge devices when using a device to device connection( in
* meters).
*
* @see com.mechalikh.pureedgesim.locationmanager.MobilityModel#distanceTo(com.mechalikh.pureedgesim.datacentersmanager.ComputingNode)
*/
public static int edgeDevicesRange;
边缘计算中心的覆盖范围(边缘计算设备可以在一跳的范围之内直连)
/**
* The edge data centers coverage area (in meters) in which edge devices can
* connect with them directly (one hop).
*
* @see com.mechalikh.pureedgesim.locationmanager.MobilityModel#distanceTo(com.mechalikh.pureedgesim.datacentersmanager.ComputingNode)
*/
public static int edgeDataCentersRange;
网络模型的刷新间隔
/**
* The network model update interval.
*
* @see com.mechalikh.pureedgesim.network.NetworkLink#startInternal()
*/
public static double networkUpdateInterval;
是否使用更加真实的仿真 (如果使用,会增加仿真时间)
/**
* If true, the network model will be more realistic and gives more accurate
* results, but will increase simulation duration.
*
* @see com.mechalikh.pureedgesim.network.NetworkLink#updateTransfer(TransferProgress
* transfer)
*/
public static boolean realisticNetworkModel;
激活编排器功能
/**
* If true, the tasks will be sent for another computing node (i.e. the
* orchestrator) in order to make offlaoding decision, before being sent to the
* destination (the node that actually executes the task).
*
* @see com.mechalikh.pureedgesim.datacentersmanager.ComputingNode#getOrchestrator()
* @see examples.Example7
*/
public static boolean enableOrchestrators;
编排器的部署位置
云数据中心,边缘数据中心,边缘设备,自定义策略
/**
* Where the orchestrator(s) are deployed, e.g. on cloud data centers, edge data
* centers, edge device, or custom strategy.
*
* @see com.mechalikh.pureedgesim.datacentersmanager.ComputingNode#getOrchestrator()
* @see examples.Example7
*/
public static String deployOrchestrators;
编排器使用的算法
/**
* The algorithm that will be used in the simulation to orchestrate the tasks.
*
* @see com.mechalikh.pureedgesim.taskorchestrator.DefaultOrchestrator#findComputingNode(String[]
* architecture, Task task)
*/
public static String[] orchestrationAlgorithms;
架构的种类 (云,云和边缘,边缘,设备,全部)
/**
* The architecture/paradigms to use in the simulation
*
* @see com.mechalikh.pureedgesim.taskorchestrator.Orchestrator#orchestrate(Task)
*/
public static String[] orchestrationArchitectures;
在执行前是否需要注册
/**
* If enable, a container will be pulled from the registry before executing the
* task.
*
* @see examples.Example7
*/
public static boolean enableRegistry;
注册的形式 (云端注册,缓存注册)
/**
* Sets a custom strategy for downloading containers.
*
* @see examples.Example7
*/
public static String registryMode;
应用列表
/**
* The list of applications.
*
* @see com.mechalikh.pureedgesim.scenariomanager.ApplicationFileParser
* @see com.mechalikh.pureedgesim.taskgenerator.DefaultTaskGenerator#generate()
*/
public static List<Application> applicationList;
是否等待任务执行完成
/**
* After the end of the simulation time, some tasks may still have not executed yet,
* enabling this will force the simulation to wait for the execution of all tasks.
*/
public static boolean waitForAllTasksToFinish;
每次启动多少个任务
/**
* How many tasks are scheduled each time (used to avoid scheduling all tasks from the beginning of the simulation).
*/
public static int batchSize;
私有的构造函数
/**
* A private constructor to prevent this class from being instantiated.
*
*/
private SimulationParameters () {
throw new IllegalStateException("SimulationParameters class cannot be instantiated");
}