Omnet++ Omnet++;:子模块嵌套太深

Omnet++ Omnet++;:子模块嵌套太深,omnet++,Omnet++,我有一个包含复合模块的网络。一个子模块应该是由参数numberOfBuildings定义的x次创建。即建筑物子模块 在.ned文件中,我将默认值设置为1,但在.ini文件中,该值随后被11覆盖 Network.ned network Network { utility: Utility { @display("p=71,117"); } energyDistrict: EnergyDistrict {

我有一个包含复合模块的网络。一个子模块应该是由参数numberOfBuildings定义的x次创建。即建筑物子模块

在.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
看起来能源区而不是建筑子模块是无限创建的


有人能帮我解决这个问题吗

这显然是一个无限递归。您有一个
网络
,其中包含一个子模块
energyDistrict
,但是
energyDistrict
的类型本身扩展了
网络
,因此它还包含一个子模块
energyDistrict
,等等


为什么
模块EnergyDistrict扩展网络

如果这回答了您的问题,请接受答案,以便其他用户将其视为已回答。