我怎么知道是否还有更多解决方案?

How do I know if there are any more solutions?

我用线性规划完成了爱因斯坦的谜语练习。我在 Gusek 中实现了 this solutions 如何判断是否有不止一种解决方案?

爱因斯坦的谜语:

有 5 栋房子,有五种不同的颜色。 每个房子里住着一个不同国籍的人。 这五位主人喝某种饮料,抽某种牌子的雪茄,养某种宠物。 没有主人拥有相同的宠物,抽相同品牌的雪茄或喝相同的饮料。

约束:

英国人住在红房子里

瑞典人养狗当宠物

丹麦人喝茶

绿房子在白房子的左边

绿屋主人喝咖啡

抽Pall Mall的人养鸟

黄家的主人抽Dunhill

住在中间房子的男人喝牛奶

挪威人住第一套房子

抽混合烟的男人住在养猫的旁边

养马的人住在抽登喜路烟的人旁边

抽BlueMaster的老板喝啤酒

德国抽王子

挪威人住在蓝房子旁边

抽混合烟的人有喝水的邻居

我能说出哪些约束是多余的吗?

感谢您的帮助

您的 decisions/solution 将采用二进制或整数变量的形式。

如果它们是二进制的,添加一个如下所示的新约束: (Y 是所有为 1 的二进制文件,`Y 是所有为 0 的二进制文件。)

总和(Y) + 总和(i-Y) != |Y|+|Y|

不断重复这个直到你得到一个不可行的模型。这也可以扩展到整数情况。

至于冗余,你必须手动尝试删除它们,看看解决方案是否改变。但是,就冗余而言,您可能会遇到约束 A 和 B 冗余或约束 C 冗余的情况。您可能有多组潜在的冗余约束,具体取决于您消除的约束。