我怎么知道是否还有更多解决方案?
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 冗余的情况。您可能有多组潜在的冗余约束,具体取决于您消除的约束。
我用线性规划完成了爱因斯坦的谜语练习。我在 Gusek 中实现了 this solutions 。 如何判断是否有不止一种解决方案?
爱因斯坦的谜语:
有 5 栋房子,有五种不同的颜色。 每个房子里住着一个不同国籍的人。 这五位主人喝某种饮料,抽某种牌子的雪茄,养某种宠物。 没有主人拥有相同的宠物,抽相同品牌的雪茄或喝相同的饮料。
约束:
英国人住在红房子里
瑞典人养狗当宠物
丹麦人喝茶
绿房子在白房子的左边
绿屋主人喝咖啡
抽Pall Mall的人养鸟
黄家的主人抽Dunhill
住在中间房子的男人喝牛奶
挪威人住第一套房子
抽混合烟的男人住在养猫的旁边
养马的人住在抽登喜路烟的人旁边
抽BlueMaster的老板喝啤酒
德国抽王子
挪威人住在蓝房子旁边
抽混合烟的人有喝水的邻居
我能说出哪些约束是多余的吗?
感谢您的帮助
您的 decisions/solution 将采用二进制或整数变量的形式。
如果它们是二进制的,添加一个如下所示的新约束: (Y 是所有为 1 的二进制文件,`Y 是所有为 0 的二进制文件。)
总和(Y) + 总和(i-Y) != |Y|+|
Y|
不断重复这个直到你得到一个不可行的模型。这也可以扩展到整数情况。
至于冗余,你必须手动尝试删除它们,看看解决方案是否改变。但是,就冗余而言,您可能会遇到约束 A 和 B 冗余或约束 C 冗余的情况。您可能有多组潜在的冗余约束,具体取决于您消除的约束。