作业帮 > 综合 > 作业

用matlab编程求解矩阵的最大值问题,有约束条件.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 10:13:03
用matlab编程求解矩阵的最大值问题,有约束条件.
X=[xij](i=1,2,3,4;j=1,2,3.,10);
A=[8.4,9.3,8.4, 8.1,8.4,9.4,9.5,8.4,8.4,9;8.4,8.4,8.1, 8.7,9,8.7 ,8.4,8.8, 8.4, 8.1;9.1,8.4,8.4,9,8.3,8.5,8.3   ,8.7,8.4,8.2;8.7,8.9,9.5,8.4,9.4,8.4,8.4,8.2,9.3,9.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,问题规模较大,实在不容乐观.

现在,最当务之急的是,楼主看看第三个约束条件是不是有问题,把条件确认了我再想想办法.

尽管没能完全解决问题,上面这些也是花了不少时间思考的,如果觉得有帮助,希望能采纳(我如果想出更好的办法,会到另一个提问去回答).
再问: 多谢热心网友,这个我在走投无路的时候用C++来求解了,肯定没有matlab和lingo容易,尝试过用lingo做,会简单一点,但是过程很繁琐,很想知道用matlab的做法,十分好奇,第三个约束条件没错的,这是一个0——1线性规划问题,前面一个系数是0或者1,关键是后面相加是否