请高手帮我看一下我的matlab程序错在哪里了?max(min{f1,f2,f3,f4,f5,f6,

发布时间:2021-02-20 10:44:08

请高手帮我看一下我的matlab程序错在哪里了?max(min{f1,f2,f3,f4,f5,f6,f7})求7个目标函数的最小值的最大化问题:f1 = 15 - x(1) - x(8);f2 = 15 - x(2) - x(9);f3 = 15 - x(3) - x(10);f4 = 15 - x(4) - x(11);f5 = 15 - x(5) - x(12);f6 = 15 - x(6)

网友回答

有两点疑问:
1、为了保证整数解且两两不等而引入的非线性等式约束,为什么不从1次方开始(当然,经测试,似乎并无影响)?
2、非线性等式约束的第4次项加入时,为什么认为“得到的解是错误的”?就因为“不但不满足整数要求,最小的最大值也不为-7”吗?
这种原因好像有点说不过去:
(1)要满足整数解的要求,7个变量应该有7个方程的约束,你刚加了两个方程不满足整数解是很正常的;
(2)怎么知道最小的最大值就一定为-7呢?(另,我这里试过,加入第4项约束时,最小最大值的确还是-7)
 
帮你改写了一下非线性约束条件:
function [C,ceq] = ghun(x)
C = [];     
ceq = zeros(14,1);
for i=1:7
 
   ceq(2*i-1) = sum(x(1:7).^(i+1)) - sum((1:7).^(i+1)); 
   ceq(2*i) = sum(x(8:14).^(i+1)) - sum((1:7).^(i+1));end 
求解得到的结果是:
x =
 
 Columns 1 through 11 
    7     4     1     5     6     2     3     2     3     5     6 
 Columns 12 through 14 
    7     4     1y =
 
   -6 
   -8 
   -9 
   -4 
   -2 
   -9 
  -11也就是说,最终优化的结果是-2(换用另外一种优化方法得到的结果相同).
以上问题属网友观点,不代表本站立场,仅供参考!