首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过比较两个变量返回二进制值?

如何通过比较两个变量返回二进制值?
EN

Stack Overflow用户
提问于 2016-02-22 01:30:53
回答 1查看 89关注 0票数 1

我目前学习运筹学。我要求将该模型表示为LP模型。

目标函数是

代码语言:javascript
复制
y = ( ai * C1i + bi * C2i)
        ,where ai = max(0, xi - Ti) ; bi = max(0, Ti - xi)

这是一个调度问题。xi是作业i的计划时间的决策变量,Ti是作业i的最佳拟合时间,每单位时间的提前或延迟将受到惩罚成本的影响。C1i和C2i是每单位的惩罚成本。

如果作业i在作业i的最佳时间Ti之前开始,则惩罚成本将为

代码语言:javascript
复制
 bi * C2i.

如果作业i在作业i的最佳时间Ti之后开始,则惩罚将是

代码语言:javascript
复制
ai * C1i.

在我的公式中,我发现在Lingo或Cplex中使用max(,)函数很困难。实际上,程序中没有max(,)函数。如果任务在Ti之前开始,则ai = xi - Ti将为负。bi = Ti - xi将为正。我想不出一种方法来转换“如果是负的,那么值就会变成0”。

可以用下面的函数来表示目标吗?

代码语言:javascript
复制
 y = ( ai * C1i*yi + bi * C2i*(1-yi))

如果为Ti - xi >= 0 (在作业i的最佳时间之前开始),则为yi = 1,否则为yi =0

但是,我如何在LP模型中表达上述if-then-语句呢?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-02-22 06:04:47

这个问题有点难解析,但我认为你想要的是这样的:

实际上,这是在duplicate question here中建议的。(对不起:该问题已被删除)。

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

https://stackoverflow.com/questions/35539420

复制
相关文章

相似问题

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