【发布时间】:2011-03-01 06:20:37
【问题描述】:
我正在研究最大独立集问题的二次松弛 (p.22 here),发现 FindMaximum 对于我尝试的每个图都失败了,除非我以最优解作为起点。这些二次程序有 10-20 个变量,所以我希望它们是可解的。
- 有没有办法让 Mathematica 解决这样的二次规划?
- 是否有一些易于从 Mathematica 中调用的二次编程包?
这是一个失败的示例 FindMaximum,然后是在解决方案中初始化的 FindMaximum 工作
setupQuadratic[g_Graph] := (
Ag = AdjacencyMatrix[g];
A = IdentityMatrix[Length@VertexList@g] - Ag;
cons = And @@ Table[0 <= x[v] <= 1, {v, VertexList@g}];
vars = x /@ VertexList[g];
indSet = FindIndependentVertexSet@g;
xOpt = Array[Boole[MemberQ[indSet, #]] &, {Length@VertexList@g}];
);
g = GraphData[{"Cubic", {10, 11}}];
setupQuadratic[g];
FindMaximum[{vars.A.vars, cons}, vars]
FindMaximum[{vars.A.vars, cons}, Thread[{vars, xOpt}]]
这是我尝试过的其他图表
{"DodecahedralGraph", "FruchtGraph", "TruncatedPrismGraph", \
"TruncatedTetrahedralGraph", {"Cubic", {10, 2}}, {"Cubic", {10,
3}}, {"Cubic", {10, 4}}, {"Cubic", {10, 6}}, {"Cubic", {10,
7}}, {"Cubic", {10, 11}}, {"Cubic", {10, 12}}, {"Cubic", {12,
5}}, {"Cubic", {12, 6}}, {"Cubic", {12, 7}}, {"Cubic", {12,
9}}, {"Cubic", {12, 10}}}
【问题讨论】:
-
您链接的论文非常好。谢谢!
标签: wolfram-mathematica graph-theory mathematical-optimization