Omnet++:子模块嵌套太深
Omnet++: Submodule nesting too deep
我有一个包含复合模块的网络。一个子模块应该创建 x 次,由参数 numberOfBuildings 定义。即,建筑物子模块。
在 .ned 文件中,我将默认值设置为 1,但在 .ini 文件中,该值随后被 11 覆盖。
Network.ned
network Network
{
utility: Utility {
@display("p=71,117");
}
energyDistrict: EnergyDistrict {
@display("p=272,117");
}
supplier: Supplier {
@display("p=272,23");
}
connections allowunconnected:
utility.outElectricty --> energyDistrict.inCityElectrictyGrid;
utility.outGas --> energyDistrict.inCityGasGrid;
utility.outWater --> energyDistrict.inCityWaterGrid;
supplier.outFuelOil --> energyDistrict.inSupplierFuelOil;
}
module EnergyDistrict extends Network
{
//Here the parameter of the number of buildings is defined.
parameters:
int numberOfBuildings = default(1);
int numberDistributionBuildings = default(1);
gates:
input inCityElectrictyGrid;
input inCityGasGrid;
input inCityWaterGrid;
input inSupplierFuelOil;
output outCityElectricityGrid;
output outCityGasGrid;
output outWaterGrid;
output outSupplierFuelOil;
submodules:
electricalDistributionBoxDistrict: ElectricalDistributionBoxDistrict {
@display("p=119,192");
}
waterDistributionDistrict: WaterDistributionDistrict {
@display("p=311,192");
}
gasDistributionDistrict: GasDistributionDistrict {
@display("p=474,192");
}
fuelOilTransporter: FuelOilTransporter {
@display("p=618,192");
}
buildings[numberOfBuildings]: Buildings {
@display("p=272,273");
}
connections allowunconnected:
//The connection of electricity, gas and water city grid to the various buildings.
//Connection Electricity City Grid
energyDistrict.outCityElectricityGrid --> electricalDistributionBoxDistrict.inElectricityCityGridDistributionBox;
energyDistrict.outCityGasGrid --> gasDistributionDistrict.inGasCityGridDistributionBox;
energyDistrict.outWaterGrid --> waterDistributionDistrict.inWaterCityGridDistributionBox;
energyDistrict.outSupplierFuelOil --> fuelOilTransporter.inFuelOilSupplier;
for i=0..numberDistributionBuildings-1{
electricalDistributionBoxDistrict.outCityElectricityGridDistributionBox[i] --> buildings[i].inElectricityCityGridBuilding[i];
//Connection Gas City Grid
gasDistributionDistrict.outCityGasGridDistributionBox[i] --> buildings[i].inGasCityGridBuidling[i];
//Connection Water City Grid
waterDistributionDistrict.outCityWaterGridDistributionBox[i] --> buildings[i].inWaterCityGridBuilding[i];
//Connection to Supplier for Fuel Oil
fuelOilTransporter.outFuelOilTransporter[i] --> buildings[i].inSupplierFuelOilBuilding[i];
}
module Buildings extends EnergyDistrict
{
//The parameter of a building consists of the buildingID, which type of building it is, the number of accommodated units (living unit and business premise)
//and wether the building has installed a solar system on the roof.
parameters:
int buildingID = default(1);
string typeOfBuilding = default("Gas Heater");
int numberOfUnits = default(1);
bool installedSolarSystem = default(false);
.....
}
omnetpp.ini:
[Config EnergyDistrict]
Network.energyDistrict.numberOfBuildings = 11
如果我 运行 然后网络作为 Omnet++ 模拟我得到以下错误。
Error: Submodule nesting too deep (71) (potential infinite recursion?) -- in module (omnetpp::cModule)
Network.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict (id=550), during network setup
看起来是能源区而不是建筑子模块被无限创建了。
有人可以帮我解决这个问题吗?
这显然是一个无限递归。你有一个 Network
其中包含一个 energyDistrict
子模块,但是 EnergyDistrict
的类型本身扩展了 Network
所以它也包含一个 energyDistrict
子模块,等等...... .
为什么 module EnergyDistrict extends Network
???
我有一个包含复合模块的网络。一个子模块应该创建 x 次,由参数 numberOfBuildings 定义。即,建筑物子模块。
在 .ned 文件中,我将默认值设置为 1,但在 .ini 文件中,该值随后被 11 覆盖。
Network.ned
network Network
{
utility: Utility {
@display("p=71,117");
}
energyDistrict: EnergyDistrict {
@display("p=272,117");
}
supplier: Supplier {
@display("p=272,23");
}
connections allowunconnected:
utility.outElectricty --> energyDistrict.inCityElectrictyGrid;
utility.outGas --> energyDistrict.inCityGasGrid;
utility.outWater --> energyDistrict.inCityWaterGrid;
supplier.outFuelOil --> energyDistrict.inSupplierFuelOil;
}
module EnergyDistrict extends Network
{
//Here the parameter of the number of buildings is defined.
parameters:
int numberOfBuildings = default(1);
int numberDistributionBuildings = default(1);
gates:
input inCityElectrictyGrid;
input inCityGasGrid;
input inCityWaterGrid;
input inSupplierFuelOil;
output outCityElectricityGrid;
output outCityGasGrid;
output outWaterGrid;
output outSupplierFuelOil;
submodules:
electricalDistributionBoxDistrict: ElectricalDistributionBoxDistrict {
@display("p=119,192");
}
waterDistributionDistrict: WaterDistributionDistrict {
@display("p=311,192");
}
gasDistributionDistrict: GasDistributionDistrict {
@display("p=474,192");
}
fuelOilTransporter: FuelOilTransporter {
@display("p=618,192");
}
buildings[numberOfBuildings]: Buildings {
@display("p=272,273");
}
connections allowunconnected:
//The connection of electricity, gas and water city grid to the various buildings.
//Connection Electricity City Grid
energyDistrict.outCityElectricityGrid --> electricalDistributionBoxDistrict.inElectricityCityGridDistributionBox;
energyDistrict.outCityGasGrid --> gasDistributionDistrict.inGasCityGridDistributionBox;
energyDistrict.outWaterGrid --> waterDistributionDistrict.inWaterCityGridDistributionBox;
energyDistrict.outSupplierFuelOil --> fuelOilTransporter.inFuelOilSupplier;
for i=0..numberDistributionBuildings-1{
electricalDistributionBoxDistrict.outCityElectricityGridDistributionBox[i] --> buildings[i].inElectricityCityGridBuilding[i];
//Connection Gas City Grid
gasDistributionDistrict.outCityGasGridDistributionBox[i] --> buildings[i].inGasCityGridBuidling[i];
//Connection Water City Grid
waterDistributionDistrict.outCityWaterGridDistributionBox[i] --> buildings[i].inWaterCityGridBuilding[i];
//Connection to Supplier for Fuel Oil
fuelOilTransporter.outFuelOilTransporter[i] --> buildings[i].inSupplierFuelOilBuilding[i];
}
module Buildings extends EnergyDistrict
{
//The parameter of a building consists of the buildingID, which type of building it is, the number of accommodated units (living unit and business premise)
//and wether the building has installed a solar system on the roof.
parameters:
int buildingID = default(1);
string typeOfBuilding = default("Gas Heater");
int numberOfUnits = default(1);
bool installedSolarSystem = default(false);
.....
}
omnetpp.ini:
[Config EnergyDistrict]
Network.energyDistrict.numberOfBuildings = 11
如果我 运行 然后网络作为 Omnet++ 模拟我得到以下错误。
Error: Submodule nesting too deep (71) (potential infinite recursion?) -- in module (omnetpp::cModule)
Network.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict.energyDistrict (id=550), during network setup
看起来是能源区而不是建筑子模块被无限创建了。
有人可以帮我解决这个问题吗?
这显然是一个无限递归。你有一个 Network
其中包含一个 energyDistrict
子模块,但是 EnergyDistrict
的类型本身扩展了 Network
所以它也包含一个 energyDistrict
子模块,等等...... .
为什么 module EnergyDistrict extends Network
???