请高手帮我看一下我的matlab程序错在哪里了?max(min{f1,f2,f3,f4,f5,f6,f7})
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 00:52:33
请高手帮我看一下我的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) - x(13);f7 = 15 - x(7) - x(14);
用fminmax,转化为:
F1 = x(1) + x(8) - 15...F7 = x(7) + x(14) -15;
线性约束条件为
x(1) + x(2) + x(3) + x(4) + x(5) + x(6) + x(7) = 28;x(8) + x(9) + x(10) + x(11) + x(12) + x(13) + x(14) = 28;
1=
求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) - x(13);f7 = 15 - x(7) - x(14);
用fminmax,转化为:
F1 = x(1) + x(8) - 15...F7 = x(7) + x(14) -15;
线性约束条件为
x(1) + x(2) + x(3) + x(4) + x(5) + x(6) + x(7) = 28;x(8) + x(9) + x(10) + x(11) + x(12) + x(13) + x(14) = 28;
1=
有两点疑问:
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 1
y =
-6
-8
-9
-4
-2
-9
-11
也就是说,最终优化的结果是-2(换用另外一种优化方法得到的结果相同).
再问: 你好!谢谢你关于此问题的解答, (1)关于一次方的疑问:如你所知,fminmax分为线性约束和非线性约束,一次方应归为线性的,因此我在设置Aeq和beq的时候就已经给出; (2)如你前面得到的最大最小值是为-7,而且当且仅当7个目标函数的值都为-7时成立,因此变动任何一个参数都会可能使得其中的一个目标函数的值变大。你得到的最终-2的结论有待商榷,或者是我有些地方理解错了。 请指正!
再答: 1、我之前没注意到你的线性等式约束是这个含义。其实线性可以看成是非线性的一种特殊情况,也可以放在非线性约束条件中(当然,就算法而言,把线性约束条件当成非线性约束条件处理可能会导致计算量增加,但对于本例而言,感受不到有什么影响)。 2、最优值-2的确是有问题的。我觉得原因是初值选择不当导致的,fminimax并非全局优化的算法,很容易陷入局部最优,尤其是整数约束条件导致其可行解范围不连续,应该更容易陷入局部极值点。我尝试使用初值 x0 = [1:7 7:-1:1]; 得到的最优解为-7,但这是否真的是最优解我也不敢妄下结论,只是偶然试到的。如果想有更大机会得到全局最优解,有可能要借助进化算法之类的全局优化方法才行。
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 1
y =
-6
-8
-9
-4
-2
-9
-11
也就是说,最终优化的结果是-2(换用另外一种优化方法得到的结果相同).
再问: 你好!谢谢你关于此问题的解答, (1)关于一次方的疑问:如你所知,fminmax分为线性约束和非线性约束,一次方应归为线性的,因此我在设置Aeq和beq的时候就已经给出; (2)如你前面得到的最大最小值是为-7,而且当且仅当7个目标函数的值都为-7时成立,因此变动任何一个参数都会可能使得其中的一个目标函数的值变大。你得到的最终-2的结论有待商榷,或者是我有些地方理解错了。 请指正!
再答: 1、我之前没注意到你的线性等式约束是这个含义。其实线性可以看成是非线性的一种特殊情况,也可以放在非线性约束条件中(当然,就算法而言,把线性约束条件当成非线性约束条件处理可能会导致计算量增加,但对于本例而言,感受不到有什么影响)。 2、最优值-2的确是有问题的。我觉得原因是初值选择不当导致的,fminimax并非全局优化的算法,很容易陷入局部最优,尤其是整数约束条件导致其可行解范围不连续,应该更容易陷入局部极值点。我尝试使用初值 x0 = [1:7 7:-1:1]; 得到的最优解为-7,但这是否真的是最优解我也不敢妄下结论,只是偶然试到的。如果想有更大机会得到全局最优解,有可能要借助进化算法之类的全局优化方法才行。
请高手帮我看一下我的matlab程序错在哪里了?max(min{f1,f2,f3,f4,f5,f6,f7})
F1,F2,F3,F4,F5,F6,F7,F8,F9在按键精灵中的代码是什么
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12的功能
键盘上的F1 ,F2 ,F3 ,F4 ,F5 ,F6 ,F7 ,F8 ,F9 ,F10 ,F11 ,F12 分别有什么用
键盘上的F1.F2.F3.F4.F5.F6.F7.F8.F9.F10.F11.F12分别实干什么?
windou7笔记本是THINKPAD e 425的最上面(F1.F2.F3.F4.F5.F6.F7.F8.F9.F10
键盘上f1 f2 f3 f4 f5 f6 f7 f8 f9是干什么的?怎样用键盘复制粘贴文字?
在AI 软件里面F1\F2\F3\F4\F5\F6\F7\F8\F9\F10\F11\F12键是什么分别是什么效果?按了
请高手帮我看一下我的matlab程序错在哪里了?min (1000-x(1)^2-2*x(2)^2-x(3)^2-x(1
以下函数调用语句中含有( )个实参.Sub1(f1,(f2,f3),f4,(f5,f6,f7)) A)6 B)4 C)3
请问天龙八部里的F1.F2.F3.F4.F5.
预付费电表的F1,F2,F3,F4,F5,