我使用python中的DOcplex提供了以下模型trans
解决方案:
# Solve command
solution = mdl.solve(log_output=True)
solution.display()
#printed solution
solution for: transp
objective: 73231116.000
q_Coupe 1_Smithton = 6000.000
q_Coupe 2_Smithton = 1000.000
q_Coupe 3_Bell Bay = 9000.000
q_Coupe 4_Smithton = 3000.000
q_Coupe 5_Smithton = 3000.000
q_Coupe 6_Bell Bay = 4000.000
q_Coupe 8_Hobart = 7000.000
q_Coupe 10_Hobart = 3000.000
CAP_Bell Bay = 8.552
CAP_Smithton = 8.552
CAP_Hobart = 6.579
X_Bell Bay = 1
X_Smithton = 1
X_Hobart = 1
在此:
I = list of forests
['Coupe 1', 'Coupe 2', 'Coupe 3', 'Coupe 4', 'Coupe 5', 'Coupe 6', 'Coupe 7', 'Coupe 8', 'Coupe 9', 'Coupe 10']
J = list of facilities
['Bell Bay', 'Surrey Hills', 'Smithton', 'Hobart']
arcs = [(i, j) for i in I for j in J]
[('Coupe 1', 'Bell Bay'), ('Coupe 1', 'Surrey Hills'), ('Coupe 1', 'Smithton'), ('Coupe 1', 'Hobart'), ('Coupe 2', 'Bell Bay'), ('Coupe 2', 'Surrey Hills'), ('Coupe 2', 'Smithton'), ('Coupe 2', 'Hobart'), ('Coupe 3', 'Bell Bay'), ('Coupe 3', 'Surrey Hills'), ('Coupe 3', 'Smithton'), ('Coupe 3', 'Hobart'), ('Coupe 4', 'Bell Bay'), ('Coupe 4', 'Surrey Hills'), ('Coupe 4', 'Smithton'), ('Coupe 4', 'Hobart'), ('Coupe 5', 'Bell Bay'), ('Coupe 5', 'Surrey Hills'), ('Coupe 5', 'Smithton'), ('Coupe 5', 'Hobart'), ('Coupe 6', 'Bell Bay'), ('Coupe 6', 'Surrey Hills'), ('Coupe 6', 'Smithton'), ('Coupe 6', 'Hobart'), ('Coupe 7', 'Bell Bay'), ('Coupe 7', 'Surrey Hills'), ('Coupe 7', 'Smithton'), ('Coupe 7', 'Hobart'), ('Coupe 8', 'Bell Bay'), ('Coupe 8', 'Surrey Hills'), ('Coupe 8', 'Smithton'), ('Coupe 8', 'Hobart'), ('Coupe 9', 'Bell Bay'), ('Coupe 9', 'Surrey Hills'), ('Coupe 9', 'Smithton'), ('Coupe 9', 'Hobart'), ('Coupe 10', 'Bell Bay'), ('Coupe 10', 'Surrey Hills'), ('Coupe 10', 'Smithton'), ('Coupe 10', 'Hobart')]
这些是模型中的变量:
q = mdl.continuous_var_dict(arcs, name='q')
CAP = mdl.continuous_var_dict(J, name='CAP')
X = mdl.binary_var_dict(CAP, name='X')
我希望我的解决方案的q
变量结果以J
列为I
行的矩阵数据框/表的形式导出到Excel。我想再加一行CAP
per J
的解。q
和CAP
的缺失值应使用0
填写
q Bell Bay Surrey Hills Smithton Hobart
Coupe 1 0.00 0.00 6000.00 0.00
Coupe 2 0.00 0.00 1000.00 0.00
Coupe 3 9000.00 0.00 0.00 0.00
Coupe 4 0.00 0.00 3000.00 0.00
Coupe 5 0.00 0.00 3000.00 0.00
Coupe 6 4000.00 0.00 0.00 0.00
Coupe 7 0.00 0.00 0.00 0.00
Coupe 8 0.00 0.00 0.00 7000.00
Coupe 9 0.00 0.00 0.00 0.00
Coupe 10 0.00 0.00 0.00 3000.00
CAP 8.552 0.00 8.552 6.579
最好使用熊猫
下面是一个小代码,它将变量矩阵(即2元组的dict)的解值转换为变量,再转换为数据帧。转换为pandas后,您就拥有了导出到Excel和其他格式所需的所有内容。 代码从矩阵键中提取行和列索引,生成 一个面向列的值字典,然后是一个数据帧
您可以依赖https://pypi.org/project/XlsxWriter/并对I和J中的所有元素进行循环
相关问题 更多 >
编程相关推荐