约束静电非线性优化,基于问题
考虑在导电体中放置20个电子的静电学问题。电子将以一种使它们的总势能最小化的方式排列自己,受限于躺在体内。所有的电子都在物体的边界上。电子是不可区分的,所以这个问题没有唯一的最小值(在一个解中排列电子会给出另一个有效的解)。这个例子的灵感来自Dolan, Moré和Munson[1]。
本例的目标约束函数和非线性约束函数均为金宝app优化变量和表达式的支持操作.因此,解决使用自动分化来计算梯度。看到优化工具箱中的自动区分.如果没有自动微分,本例将在到达MaxFunctionEvaluations宽容。有关使用符号数学工具箱™的基于求解器的等效示例,请参见计算梯度和黑森使用符号数学工具箱.
几何问题
本例涉及由下列不等式定义的导电体。每个电子都有坐标
,
这些约束形成了一个看起来像球体上的金字塔的身体。要查看正文,输入以下代码。
[X,Y] = meshgrid(-1:.01:1);Z1 = -abs(X) -abs(Y);Z2 = -1 -根号(1 - x ^2 - y ^2);Z2 = real(Z2);W1 = z1;W2 = z2;W1(Z1 < Z2) = nan;%仅在Z1 > Z2处绘图点W2(Z1 < Z2) = nan;%仅在Z1 > Z2处绘图点手=数字;%图形句柄,供以后使用集(gcf,“颜色”,' w ')%白色背景冲浪(X, Y, W1,“线型”,“没有”);持有在冲浪(X, Y W2,“线型”,“没有”);视图(-44年,18)
在人物的上下表面之间有轻微的间隙。此间隙是用于创建图形的一般绘图例程的工件。该例程擦除一个表面上与另一个表面接触的任何矩形补丁。
定义问题变量
这个问题有20个电子。约束条件给出了每一个的边界
而且
值从-1到1,而
取值范围为-2到0。定义问题的变量。
N = 20;X = optimvar(“x”N下界的, 1“UpperBound”1);Y = optimvar(“y”N下界的, 1“UpperBound”1);Z = optimvar(“z”N下界的2,“UpperBound”, 0);Elecprob =优化问题;
定义约束
这个问题有两种类型的约束。第一个是球面约束,是一个简单的多项式不等式,分别适用于每个电子。定义这个球面约束。
elecprob.Constraints.spherec = (x ^ 2 + y ^ 2 + (z + 1)。^ 2)< = 1;
上面的constraint命令创建了一个包含10个约束的向量。使用查看约束向量显示.
显示(elecprob.Constraints.spherec)
((x ^ 2 + y ^ 2) + (z + 1)。^ 2)< = arg_RHS地点:最长= 1;Arg1 = arg2(1,20));arg_RHS = arg1(:);
问题中的第二种约束是线性的。你可以用不同的方式来表示线性约束。例如,您可以使用腹肌函数表示绝对值约束。要以这种方式表示约束,请编写一个MATLAB函数并将其转换为使用的表达式fcn2optimexpr.看到将非线性函数转化为优化表达式.对于只使用可微函数的较好的方法,将绝对值约束写成四个线性不等式。每个约束命令返回一个包含20个约束的向量。
elecprob.Constraints。Plane1 = z <= -x-y;elecprob.Constraints。Plane2 = z <= -x+y;elecprob.Constraints。Plane3 = z <= x-y;elecprob.Constraints。Plane4 = z <= x+y;
定义目标函数
目标函数是系统的势能,它是每对电子对距离的倒数的和:
将目标函数定义为优化表达式。为了获得良好的性能,将目标函数写成向量化的形式。看到创造有效的优化问题.
能量= optimexpr(1);为ii = 1:(N-1) jj = (ii+1):N;Tempe = (x(ii) - x(jj))。²+ (y(ii) - y(jj))^2 + (z(ii) - z(jj)).^2;能量=能量+和(tempe.^(-1/2));结束elecprob。目标=能量;
运行优化
从电子随机分布在半径为1/2,中心为[0,0,-1]的球体上开始优化。
rng默认的%用于再现性x0 = randn(N,3);为ii=1:N x0(ii,:) = x0(ii,:)/norm(x0(ii,:))/2;X0 (ii,3) = X0 (ii,3) - 1;结束init。x=x0(:,1); init.y = x0(:,2); init.z = x0(:,3);
打电话解决问题解决.
[sol,fval,exitflag,output] = solve(elecprob,init)
使用fmincon解决问题。找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
索尔=带字段的结构:X: [20x1 double] y: [20x1 double] z: [20x1 double]
Fval = 163.0099
exitflag = OptimalSolution
输出=带字段的结构:迭代:94 funcCount: 150 constrviolation: 0步长:2.8395e-05算法:'内部点' firstorderopt: 8.1308e-06 cgiterations: 0消息:'局部最小值发现满足约束....bestviable: [1x1 struct] objectivederivative: "reverse-AD" constraintderivative: "closed-form" solver: 'fmincon'
查看解决方案
把解画成导电体上的点。
图(手)plot3 (sol.x、sol.y sol.z,“r”。,“MarkerSize”, 25)从
电子在约束边界上分布得相当均匀。许多电子在边缘和金字塔点上。
参考
[1]多兰,伊丽莎白·D,豪尔赫·j·Moré,托德·s·芒森。使用COPS 3.0的基准优化软件。阿贡国家实验室技术报告ANL/MCS-TM-273, 2004年2月。
相关的话题
考虑在导电体中放置20个电子的静电学问题。电子将以一种使它们的总势能最小化的方式排列自己,受限于躺在体内。所有的电子都在物体的边界上。电子是不可区分的,所以这个问题没有唯一的最小值(在一个解中排列电子会给出另一个有效的解)。这个例子的灵感来自Dolan, Moré和Munson[1]。 本例的目标约束函数和非线性约束函数均为 本例涉及由下列不等式定义的导电体。每个电子都有坐标
这些约束形成了一个看起来像球体上的金字塔的身体。要查看正文,输入以下代码。 在人物的上下表面之间有轻微的间隙。此间隙是用于创建图形的一般绘图例程的工件。该例程擦除一个表面上与另一个表面接触的任何矩形补丁。 这个问题有20个电子。约束条件给出了每一个的边界 这个问题有两种类型的约束。第一个是球面约束,是一个简单的多项式不等式,分别适用于每个电子。定义这个球面约束。 上面的constraint命令创建了一个包含10个约束的向量。使用查看约束向量 问题中的第二种约束是线性的。你可以用不同的方式来表示线性约束。例如,您可以使用 目标函数是系统的势能,它是每对电子对距离的倒数的和:
将目标函数定义为优化表达式。为了获得良好的性能,将目标函数写成向量化的形式。看到 从电子随机分布在半径为1/2,中心为[0,0,-1]的球体上开始优化。 打电话解决问题 把解画成导电体上的点。 电子在约束边界上分布得相当均匀。许多电子在边缘和金字塔点上。 [1]多兰,伊丽莎白·D,豪尔赫·j·Moré,托德·s·芒森。使用COPS 3.0的基准优化软件。阿贡国家实验室技术报告ANL/MCS-TM-273, 2004年2月。几何问题
[X,Y] = meshgrid(-1:.01:1);Z1 = -abs(X) -abs(Y);Z2 = -1 -根号(1 - x ^2 - y ^2);Z2 = real(Z2);W1 = z1;W2 = z2;W1(Z1 < Z2) = nan;
定义问题变量
N = 20;X = optimvar(
定义约束
elecprob.Constraints.spherec = (x ^ 2 + y ^ 2 + (z + 1)。^ 2)< = 1;
显示(elecprob.Constraints.spherec)
((x ^ 2 + y ^ 2) + (z + 1)。^ 2)< = arg_RHS地点:最长= 1;Arg1 = arg2(1,20));arg_RHS = arg1(:);
elecprob.Constraints。Plane1 = z <= -x-y;elecprob.Constraints。Plane2 = z <= -x+y;elecprob.Constraints。Plane3 = z <= x-y;elecprob.Constraints。Plane4 = z <= x+y;
定义目标函数
能量= optimexpr(1);
运行优化
rng
[sol,fval,exitflag,output] = solve(elecprob,init)
使用fmincon解决问题。找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
索尔=
Fval = 163.0099
exitflag = OptimalSolution
输出=
查看解决方案
图(手)plot3 (sol.x、sol.y sol.z,
参考
相关的话题