Ağımdaki bağlantıları temsil etmek için özel bir kanal türü oluşturduğum OMNeT ++ içinde bir ağ modeli geliştiriyorum. Bu kanal türünün örneklerinin bir özelliği için rastgele bir parametre atamak istiyorum. Bununla birlikte, bağlı kapılar için rasgele sayı aynı olmalıdır.Rasgele seçilen, ancak bağlı OMNeT ++ kapıları için eşleşen parametreleri atayın mı?
Benim düğüm tanımı aşağıdaki kapıları tanıma sahip: Benim ağ yapılandırmasında
simple GridAgent
{
/* ... other paramters/definitions omitted ... */
gates:
inout agentConnections[];
}
, ben basit <-->
sözdizimi kullanarak düğümleri bağlamak, örneğin:
someSwitchyard.agentConnections++ <--> AgentConnectionChannel <--> someWindfarm.agentConnections++;
Şimdi, bu AgentConnectionChannel bir özelliğe sahiptir rastgele atamak istediğim empedansı olarak adlandırıldı. Bu empedansı özelliği A -> B ve B -> A için aynı olmalıdır. Ağ tanımına { impedance = default(unitform(1, 10)) }
eklemeyi ve **.agentConnections$o[*].channel.impedance = uniform(1, 10)
'u omnetpp.ini
içine eklemeye çalıştım. Her iki durumda, yine de, A -> B B daha atanan farklı bir değere sahiptir -> A
<-->
sözdizimi iki farklı bağlantıları bu nedenle iki çizimler oluşturmak için bir kestirme aslında, çünkü
OMNet++ mailing list belirtilen Bu olurken
rasgele sayı dağıtımından gerçekleşir.
Bağlantı özelliklerine rastgele bir parametre atayabilirim ve, bağlı iki kapının her iki yönü için aynı değere sahip midir? Bunu, omnetpp.ini
dosyasında yapmanın bir yolu var mı, yoksa Çalışmalarım için omnetpp.ini
oluşturmak için bir Perde, Ruby veya Python komut dosyası oluşturmam gerekiyor mu?
Seninkini emin değilim Her iki kanal da paralel olarak oluşturulduğunda çözüm (ancak OMNeT ++ 'nın bu şekilde optimize edilip edilmediğini de bilmiyorum). Temel olarak kullanarak [adlandırılmış yineleme değişkeni] (https://omnetpp.org/doc/omnetpp/manual/usman.html#sec343) kullanarak daha basit bir çalışma yapmanın mümkün olduğunu hayal edebiliyorum (ancak test etmedik). geçici bir ayar: '.myParameter = $ {par = tekdüze (1,10)}' ve sonra '.impendance = $ {$ par}' ya da alternatif olarak başka bir yerden parametre yüklemek gerçek kanal. –
@Rens van der Heijden: “OMNeT ++”, iki parçanın, kanalların vb. Paralel olarak oluşturulma imkanı olmadığı için tek bir iplik kullanır. Metinsel ikame nedeniyle geçici bir değişkenin kullanılması mümkün değildir. Örneğinizde bir sonuç olarak: '**. Empedans = $ {$ par}', '**. Empedans = uniform (1,10)' ile sonuçlanır, böylece yeni bir rasgele değer atanır. –
@JerzyD. Çok teşekkürler! Bu tam ihtiyacım olan şey. Ayrıca, "omnetpp.ini" nin neden doğrudan mümkün olmadığına ilişkin açıklama için de teşekkürler - her zaman "hack" kullanıp kullanmadığımı merak ederdim. – Technaton