微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

列出兼容性矩阵中的组合

如何解决列出兼容性矩阵中的组合

我有一个对称矩阵形状的表格,它告诉我哪些组件是兼容的。这是一个例子;

Components | A | B | C | D | E | F | G |
-----------+---+---+---+---+---+---+---+
A          |   |   | 1 | 1 | 1 | 1 |   |   
-----------+---+---+---+---+---+---+---+
B          |   |   |   |   | 1 |   | 1 | 
-----------+---+---+---+---+---+---+---+
C          | 1 |   |   |   |   | 1 |   | 
-----------+---+---+---+---+---+---+---+
D          | 1 |   |   |   |   | 1 | 1 | 
-----------+---+---+---+---+---+---+---+
E          | 1 | 1 |   |   |   |   | 1 | 
-----------+---+---+---+---+---+---+---+ 
F          | 1 |   | 1 | 1 |   |   | 1 | 
-----------+---+---+---+---+---+---+---+
G          |   | 1 |   | 1 | 1 | 1 |   | 
-----------+---+---+---+---+---+---+---+

其中 1 表示兼容,空白表示不兼容。在实际的表中有更多的组件。目前,真正的表格在 Excel 电子表格中,但为了方便起见,可以轻松转换为 csv 或文本。 我需要做的是创建一个可能的组合列表。我知道有 itertools 之类的东西,但我只需要它来创建兼容列表并忽略不兼容的列表。为此,我在运行 pyomo 时使用了一个 dat 文件

set NODES := A B C D E F G;
param: ARCS:=
A
B
C
...
A C
A D
B E
...
A C F
BGE
...

我需要列出所有内容才能兼容。所以ACF可以在一起,因为它们都互相兼容,但ADG不能在一起,因为G和A不兼容。

长期计划: 最终,我计划使用 Pyomo 找到组件的最佳组合,以最大限度地减少与每个组件相关的资源。因此,在 dat 文件中,每个组合最终都会有额外的 cost

解决方法

import numpy as np
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

df = pd.read_excel(r"/path/to/file.xlsx",sheet_name="Sheet4",index_col=0,usecols = "A:H")
df.edge=nx.from_pandas_adjacency(df)
print(list(nx.enumerate_all_cliques(nx.Graph(df.edge))))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。