整数变量(不限于0-1变量)与连续变量乘积的线性化处理

最近遇到整数变量与连续变量乘积的线性化处理问题,想着在网上找找处理方法,但是找到的都是0-1变量的处理。在受到0-1变量线性化处理技巧的启发后,我想出了一种整数变量线性化的通用处理方法,在此提出来供大家参考使用。


先用一个简单的数学规划问题来举例。x为整数变量,y为连续变量,目标函数中有非线性项xy。x所有可能的取值有{0,1,2,3,4},对于每一个x可能的取值赋予对应的一个0-1变量xi,当xi等于1,此时x取xi对应的整数值。例如,x2=1,那么x=3。由此可以得到x与xi的等式关系。由于所有的xi中只能有一个等于1,因此将所有xi相加,使其等于1。

f7770d9170d441509c43e59c03cb6663.jpg 
由上述可知,xy便可以写成xi与y乘积的表达式。此时出现了新的问题,xi与y的乘积又是非线性项,但是好在xi是0-1变量,因此引入zi对每一个xiy进行线性化。0-1变量线性化细节此处不再详述。

fa02de42523b4ec2aafec9d61c512955.jpg

将以上线性化过程产生的新约束条件加入原规划问题,整理后等到线性化后的规划问题,可以直接使用cplex、intlinprog等求解器求解。

9942ff1566b44c08837cb7757e98b12a.jpg

编程验证,结果是正确的。

f827270e40de4834bd57605973cbf5c0.png

总结一下,对于任意的一个整数变量与连续变量的乘积项,都可以通过上述方法进行线性化处理。该方法的核心思路是引入0-1变量xi,将整数变量转化为若干0-1变量,再对0-1变量与连续变量的乘积线性化处理。

22ce6314c7b24c49bf28c11a9ab4a2d9.jpg

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值