ILP Minimum Dominating Set (MDS) için Python modelleme
Nov 12 2020
MDS problemini çözmek için bir kod yazıyorum , problem şu:\begin{align}\min&\quad\sum_{v\in V}y_v\\\text{s.t.}&\quad y_v+\sum_{(u,v)\in E}y_u\ge1\quad\forall v\in V\\&\quad y_v\in\{0,1\}\quad\forall v\in V.\end{align}
Sorunu aşağıdaki gibi modellemek için Python'da Pulp ve nx.network kullandım :
- Sorun
prob = pulp.LpProblem("MinimumDominatingSet", pulp.LpMinimize) - Değişkenler
y = pulp.LpVariable.dicts("y", g.nodes(), cat=pulp.LpBinary) - Amaç
for (v,u) in g.edges(): prob += pulp.lpSum(y) - Kısıtlama
for (v,u) in g.edges(): prob += y.get(v) + sum(y.get(u) for (v,u) in g.edges) >= 1
Çıkışı basit bir yıldız figürü ile test etmeye çalıştım. Maalesef çıktı doğru değil. Kısıtlamayı modellemeyle ilgili bir sorun olabileceğinden şüpheleniyorum.
Biri bana bu konuda rehberlik edebilir mi?
Yanıtlar
3 Kuifje Nov 12 2020 at 00:55
Hedefiniz şöyle olmalı prob+= pulp.lpSum(y)ve kısıtlamalar şöyle olmalıdır:
for v in g.nodes():
prob += y[v] + pulp.lpSum([y[u] for u in g.neighbors(v)]) >= 1
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'