Omnet++ Omnet++;:子模块嵌套太深
我有一个包含复合模块的网络。一个子模块应该是由参数numberOfBuildings定义的x次创建。即建筑物子模块 在.ned文件中,我将默认值设置为1,但在.ini文件中,该值随后被11覆盖 Network.nedOmnet++ Omnet++;:子模块嵌套太深,omnet++,Omnet++,我有一个包含复合模块的网络。一个子模块应该是由参数numberOfBuildings定义的x次创建。即建筑物子模块 在.ned文件中,我将默认值设置为1,但在.ini文件中,该值随后被11覆盖 Network.ned network Network { utility: Utility { @display("p=71,117"); } energyDistrict: EnergyDistrict {
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
看起来能源区而不是建筑子模块是无限创建的
有人能帮我解决这个问题吗 这显然是一个无限递归。您有一个
网络
,其中包含一个子模块energyDistrict
,但是energyDistrict
的类型本身扩展了网络
,因此它还包含一个子模块energyDistrict
,等等
为什么
模块EnergyDistrict扩展网络
?如果这回答了您的问题,请接受答案,以便其他用户将其视为已回答。