4. 多重建模-不同视角

本文探讨了多重建模在解决复杂问题时的优势,特别是在煮酒问题、衣带密诏问题和排列问题中。通过连通约束,可以整合不同视角的模型,简化约束表达,提高求解效率。文章详细介绍了如何利用双射函数、逆函数以及全局约束如inverse和alldifferent来构建和结合模型,并以针灸问题为例展示了如何在同一个视角下使用不同表示方法来优化模型。
摘要由CSDN通过智能技术生成

4. 多重建模-不同视角

4.1 连通约束-煮酒问题

  • 在以下情况下,函数f: DOM ➔ COD 是特殊的
    ​ |DOM| = |COD|
    ​ 函数f 是双射的

    某一视角会从一个特定的角度看待问题的决策
    一个双射函数有两个视角(通常的)函数
    array[DOM] of var COD: f;
    和它的逆函数
    array[COD] of var DOM: finv;

  • 问题的有些约束可能用函数或者它的逆函数更容易表达
    为什么不两个都用呢!?
    ​ 我们可以把两个模型结合
    ​ 通过使用连通约束,我们使两个函数一致
    ​ forall(w in WINE, f in FOOD) ( eat[w] = f <-> drink[f] = w );

    或者:

    使用inverse来结合两个模型
    此连通可以使用以下全局约束来描述
    inverse(eat, drink)
    或inverse(drink, eat)
    注意到inverse已经使alldifferent约束变得冗余,我们可以将之去掉

  • 总结:

    1. 问题的多重视角导致了 多重模型
    2. 不同的视角可以表达不同的约束更自然也更简洁对求解器更好(通常越简洁越好&#x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值