根据
my previous question,我想使用二进制整数线性编程(所有变量都是二进制)来优化目标函数,如下所示:
Minimize f = (c1*x1) + (c2*x2) + MAX((c3*x3),(c4*x4)) + (c5*x5)
Subject to: some equality and inequality constraints
对于MAX运算符,我使用辅助变量x6并将x6> =(c3 * x3)和x6> =(c4 * x4)约束添加到问题中,因此问题变为:
Minimize f = (c1*x1) + (c2*x2) + x6 + (c5*x5), with added constraints.
我使用CPLEX API for MATLAB来优化目标函数.
因为所有变量都是二进制的,除了一个((x6)是连续的)并且系数具有双值,问题变成混合整数线性编程,所以我使用了cplexmilp函数和这个配置:
>变量类型:ctype =’BBBBBC'(B:二进制,C:连续)
>下限:lb = [0 0 0 0 0 0]
>上限:ub = [0 0 0 0 0 inf]
>功能调用:
[fval] = cplexmilp(f,Aineq,bineq,Aeq,beq,[],[],[],lb,ub,ctype)
但有时在结果中我看到x3和x4有连续值(0到1之间)和x3 x4 = 1.
所以我的问题是:
>任何人都可以告诉我x3和x4有什么问题吗?
>是否存在不使用辅助变量并