求助:关于一个约束条件求值得matlab实现问题

2024-11-24 03:36:12
推荐回答(1个)
回答1:

抱歉,我没有能力帮你解决这个问题,但可以谈几点看法,供参考(看到楼主有另外一个高悬赏的提问question/577326380.html,那个留给更有能力解决问题的人回答吧):1、在另一个提问里,有人建议用bintprog,那是不可行的,因该函数仅适用于线性约束的情况,而你的问题当中包含非线性约束。2、分析一下约束条件:X是一个4x10的矩阵,由最后一个条件可知,其元素只能是0或1,其它各约束条件的含义分析如下:(1)每行10个元素必须6个为1,4个为0。(2)求列元素乘积的式子只能有两种结果:0或1,当且仅当该列元素全为1时结果为1,所以第2个约束条件的含义就是10列当中有4列元素全为1。(3)这个约束条件似乎是多余的,是不是搞错了?如前所述,求列乘积的式子只有0和1两种可能:如果该列元素全为1,则列乘积为1,那么不等式的左边结果为0,不等式成立;如果改列元素不全为1,列乘积为0,则列求和的结果不会超过3,不等式也成立。3、提供一点思路:(1)用非整数规划的算法,加约束条件xij*(xij-1)=0(共40个),但可能存在两个问题:a、容易陷入局部最优;b、怎样找到初始可行解;(2)考虑其他方法,例如遗传算法,好像有这方面的研究;(3)试试其它规划软件,据说LINGO求解整数规划的能力不错但我没试过。其它比较著名的还有AMPL和NAG等,你可以自己查阅相关信息。(4)总的说起来,0-1整数规划属于臭名昭著的NP问题(卡普的二十一个NP-完全问题),最坏条件下,可能遍历全部2^n个组合,就这个问题而言,2^40≈10^12,问题规模较大,实在不容乐观。现在,最当务之急的是,楼主看看第三个约束条件是不是有问题,把条件确认了我再想想法。尽管没能完全解决问题,上面这些也是花了不少时间思考的,如果觉得有帮助,希望能采纳(我如果想出更好的法,会到另一个提问去回答)。