使用基于优化解决”或约束”问题,显示“Solver-Based优化问题设置”的章

3视图(30天)
如何解决同样的问题 具体问题具体分析优化
这个示例的形式 https://ww2.mathworks.cn/help/releases/R2022b/optim/ug/or-instead-of-and-constraints.html 显示与Solver-Based优化,如何如何解决同样的问题 具体问题具体分析优化
  • 假设你的可行域的问题是l型地区:x在矩形1≤x(1)≤1,0≤x(2)≤1x在矩形0≤x(1)≤1,1≤x(2)≤1。
  • 代码用于创建图
%写的x和y坐标图,顺时针从(0,0)
x = [0, 1, 1, 1, - 1, 0, 0);
y = (0, 0, 1, 1, 1, 1, 0];
情节(x, y)
xlim ([-1.2 - 1.2])
ylim ([-1.2 - 1.2])
平等的
  • 代表一个矩形作为非线性约束,而不是绑定约束,构造一个函数,在矩形是负的一个x(1)≤b,cx(2)≤d:
函数cout = rectconstr (x, a, b, c, d)
% -当x是在矩形[a, b] (c, d)
%第一次检查,b, c, d是在正确的顺序
如果(b < =) | | (d c < =)
错误(“给一个矩形< b, c < d ')
结束
cout = max ([(x (1) - b) (x (2) - d) (ax) (1)), (cx (2))));
  • 处方后使用非线性约束函数的最小值,为l型地区,非线性约束函数是:
函数测查[c] = rectconstrfcn (x)
测查= [];%没有等式约束
F (1) = rectconstr (x 1 1 0 1);%一个矩形
F (2) = rectconstr (x, 0, 1, 1, 1);%的另一个矩形
c = min (F);%或约束
  • 假设你的目标函数
有趣= @ (x) exp (x (1)) * (4 * x (1) ^ 2 + 2 * x (2) ^ 2 + 4 * x (1) * (2) + 2 * x (2) + 1);
  • 最小化有趣的在l型地区:
选择= optimoptions (@fmincon,“算法”,“内点”,“显示”,“关闭”);
x0 =(闲置,。6);%任意猜
[xsol, fval eflag] = fmincon(有趣,x0, []、[] [], [], [], [], @rectconstrfcn,选择)
  • xsol = 0.4998 - -0.9996
  • fval = 2.4650 e-07
  • eflag = 1
  • 显然,解决方案xsol在l型地区。出口标志1,这表明xsol是一个局部最小值。
4评论
金庸
金庸 2023年3月2日
clc,清晰
概率= optimproblem
x = optimvar (“x”,2)
x0.x = [-0.5, 0.6]
有趣= exp (x (1)) * (4 * x (1) ^ 2 + 2 * x (2) ^ 2 + 4 * x (1) * (2) + 2 * x (2) + 1);
prob.Objective =乐趣
cons1 = fcn2optimexpr (@optimer, x)
prob.Constraints = cons1
选择= optimoptions (“fmincon”,“算法”,“内点”,“显示”,“关闭”);
[xsol, fval eflag] =解决(x0,概率“选项”选择)
嵌套函数
函数反对= optim (x)
函数c = rectconstrfcn (x)
测查% = [];%没有等式约束
F (1) = rectconstr (x 1 1 0 1);%一个矩形
F (2) = rectconstr (x, 0, 1, 1, 1);%的另一个矩形
c = min (F);%或约束
结束
函数cout = rectconstr (x, a, b, c, d)
% -当x是在矩形[a, b] (c, d)
%第一次检查,b, c, d是在正确的顺序
如果(b < =) | | (d c < =)
错误(“给一个矩形< b, c < d ')
结束
cout = max ([(x (1) - b) (x (2) - d) (ax) (1)), (cx (2))));
结束
结束
输出参数“骗”(也不可能)赋值在执行《无题> optim”功能。
错误:optim.problemdef.fcn2optimexpr
错误optim.problemdef.fcn2optimexpr
错误fcn2optimexpr
原因:
函数评估失败而试图确定输出尺寸。函数可能包含一个错误,或不可能被定义的
automatically-chosen点。指定输出大小没有评价函数,使用“OutputSize”。

登录置评。

接受的答案

Torsten
Torsten 2023年3月2日
编辑:Torsten 2023年3月2日
clc,清晰
概率= optimproblem;
x = optimvar (“x”2);
x0.x = [-0.5, 0.6];
有趣= exp (x (1)) * (4 * x (1) ^ 2 + 2 * x (2) ^ 2 + 4 * x (1) * (2) + 2 * x (2) + 1);
prob.Objective =乐趣;
cons1 = fcn2optimexpr (@optimer x);
prob.Constraints = cons1 < = 0;
选择= optimoptions (“fmincon”,“算法”,“内点”,“显示”,“关闭”);
[xsol, fval eflag] =解决(x0,概率“选项”选择)
xsol =结构体字段:
x(2×1双):
fval = 2.4649 e-07
eflag =
OptimalSolution
xsol.x
ans = 2×1
0.4998 - -0.9996
嵌套函数
函数反对= optim (x)
反对= rectconstrfcn (x);
函数c = rectconstrfcn (x)
测查% = [];%没有等式约束
F (1) = rectconstr (x 1 1 0 1);%一个矩形
F (2) = rectconstr (x, 0, 1, 1, 1);%的另一个矩形
c = min (F);%或约束
结束
函数cout = rectconstr (x, a, b, c, d)
% -当x是在矩形[a, b] (c, d)
%第一次检查,b, c, d是在正确的顺序
如果(b < =) | | (d c < =)
错误(“给一个矩形< b, c < d ')
结束
cout = max ([(x (1) - b) (x (2) - d) (ax) (1)), (cx (2))));
结束
结束

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!