我怎么知道是否还有其他解决方案?

时间:2021-05-20 20:48:57

标签: linear-programming

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

爱因斯坦的谜语:

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

约束:

英国人住在红房子

瑞典人养狗作为宠物

丹麦人喝茶

温室在白宫的左边

温室主人喝咖啡

抽Pall Mall的人养鸟

黄房子的主人抽Dunhill的烟

住在中心屋的男人喝牛奶

挪威人住在第一间房子

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

养马的人住在抽Dunhill的人旁边

抽BlueMaster的老板喝啤酒

德国人抽王子烟

挪威人住在蓝房子旁边

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的决定/解决方案将采用二进制或整数变量的形式。

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

sum(Y) + sum(i-Y) != |Y|+|Y|

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

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