最小F (S_1、S_2): 1.25 S_1 ^ 2 + 0.4 S_2 ^ 2分钟ʄ(S_1、S_2、S_3): S_1 ^ 2 + 0.35 S_2 ^ 2 2 S_1 ^ 2 + 0.6 S_2 ^ 2≤5100000 5 S_1 ^ 2 + 3 S_2 ^ 2≤14250000
46个视图(30天)
显示旧的评论
答案(1)
Torsten
约3小时前
编辑:Torsten
约3小时前
我猜你想最大化,最小化目标函数。最小化的结果显然是在这两种情况下s_1 = s_2 = 0。
%定义上层目标函数
upperLevelObj = @ (s) 1.25 * s (1) ^ 2 + 0.4 * s (2) ^ 2;
%定义目标函数的较低水平
lowerLevelObj = @ (s)(1) ^ 2 + 0.35 *年代(2)^ 2;
%定义上层约束函数
upperLevelConstr = @ (s)协议([2 * s (1) ^ 2 + 0.6 * s (2) ^ 2 - 5100000;
5 * s (1) ^ 2 + 3 * s (2) ^ 2 - 14250000], []);
%建立上层的优化问题
目标= upperLevelObj;
x0 = [0;0);%初始猜测(s_1、s_2)
Aineq = [];
bineq = [];
Aeq = [];
说真的= [];
磅= (0,0);
乌兰巴托= (Inf;正);
nonlcon = upperLevelConstr;
选择= optimoptions (“fmincon”,“显示”,“关闭”,“TolX”1 e-16“TolFun”1 e-16);
%解决上层的问题
[sUpperOptimal, upperOptimalCost] = fmincon(目标,x0, Aineq、bineq Aeq,说真的,磅,乌兰巴托,nonlcon,选项);
%建立低水平的优化问题
目标= lowerLevelObj;
x0 = sUpperOptimal;%使用上层最优解作为初始猜测
Aineq = [];
bineq = [];
Aeq = [];
说真的= [];
磅= (0,0);
乌兰巴托= (Inf;正);
nonlcon = upperLevelConstr;
选择= optimoptions (“fmincon”,“显示”,“关闭”,“TolX”1 e-16“TolFun”1 e-16);
%解决低层次的问题
[sLowerOptimal, lowerOptimalCost] = fmincon(目标,x0, Aineq、bineq Aeq,说真的,磅,乌兰巴托,nonlcon,选项);
%显示最优值和成本
disp (“上层优化解决方案:);
disp ([“s_1 = 'num2str (sUpperOptimal (1))));
disp ([“s_2 = 'num2str (sUpperOptimal (2))));
disp ([“上层优化成本:”num2str (upperOptimalCost)]);
disp (“低水平”最优解:);
disp ([“s_1 = 'num2str (sLowerOptimal (1))));
disp ([“s_2 = 'num2str (sLowerOptimal (2))));
disp ([的低水平最优成本:num2str (lowerOptimalCost)]);