首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >s_j=max{ a_j,s_i+t_ij }能否表示为线性约束?

s_j=max{ a_j,s_i+t_ij }能否表示为线性约束?
EN

Stack Overflow用户
提问于 2013-10-26 20:30:32
回答 1查看 84关注 0票数 1

我的问题是,是否有将以下内容表示为线性约束的技巧?

S_j=max{ a_j,S_i+t_ij }

其中a_j和t_ij是常量

非常感谢你提前

EN

回答 1

Stack Overflow用户

发布于 2013-10-29 02:09:08

是的,您可以通过引入新的二进制变量y_j (0或1)和几个线性约束来实现这一点。

我们可以将您的约束重写为:

代码语言:javascript
复制
Sj = a      if a > Si + T
Sj = Si + T if a < Si + T


Sj = a y_j + (Si + T) (1 - yj)       .....(1)

假设如果a较大,y_j =0

如果a小于Si +T,则y_j =1

代码语言:javascript
复制
M y_j + a - (Si + T) > 0   ....(2) 
where M is a big number, much bigger than a or Si or T.

如果y_j为1,则满足上述约束,并且Sj将等于a。如果y_j为0,则a必须更大才能满足约束,并且Sj = Si + T

在您的公式中,只需包含(1)和(2),您将强制执行max约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19606723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档