静电约束非线性优化使用优化变量
考虑把20的静电学问题电子在导电体。电子会安排自己的方式最大限度地减少总势能,躺在身体的约束。所有的电子都在身体的边界在最低。电子是没有区别的,所以这个问题没有唯一的最小(交换电子在一个解决方案给另一个有效的解决方案)。这个例子的灵感来源于多兰,更多的,老李[1]。
当你使用优化变量(具体问题具体分析的方法),这个例子的目的和非线性约束函数万博1manbetx支持操作优化变量和表达式。因此,解决使用自动分化来计算梯度。看到自动微分优化工具箱。没有自动分化,这个例子停止早期到达MaxFunctionEvaluations宽容。对于一个等效solver-based示例使用符号数学工具箱™,明白了计算梯度和麻布使用符号数学工具箱。
几何问题
这个例子包括导电体定义为以下的不平等。为每个电子坐标
,
这些约束形成的身体,看起来就像一个金字塔一个球体。查看身体,输入以下代码。
(X, Y) = meshgrid (1: .01:1);Z1 = abs (X) - abs (Y);Z2 = 1 -√(1 - X。^ 2 - y ^ 2);Z2 =实际(Z2);W1 = Z1;W2 = Z2;W1 (Z1 < Z2) =南;在Z1 > Z2 %只有情节点W2 (Z1 < Z2) =南;在Z1 > Z2 %只有情节点手=图;%处理图,供以后使用集(gcf,“颜色”,' w ')%白色背景冲浪(X, Y, W1,“线型”,“没有”);持有在冲浪(X, Y W2,“线型”,“没有”);视图(-44年,18)
轻微的上下表面之间存在差距。这种差距是一个工件的绘图程序用于创建人物。常规消除任何矩形贴片表面接触到另一个表面上。
定义问题的变量
有二十个电子问题。给边界的约束
和
值从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 = optimproblem;
定义约束
这个问题有两种类型的约束。第一,球面约束,分别为每个电子是一个简单的多项式不等式。定义这个球面约束。
elecprob.Constraints。spherec = (x。y ^ 2 +。^ 2 + (z + 1) ^ 2) < = 1;
前面的约束命令创建一个向量的N约束。使用视图约束向量显示。
显示(elecprob.Constraints.spherec)
((x。^ 2 + y ^ 2) + (z + 1)。^ 2) < = arg_RHS地点:最长= 1;__arg1 =最长的(20));arg_RHS = __arg1 (:);
第二种类型的约束问题是线性的。你可以用不同的方式表达的线性约束。例如,您可以使用腹肌函数代表一个绝对值约束。表达这样的约束,编写一个MATLAB函数并将它转换成一个表达式使用fcn2optimexpr。看到将非线性函数优化表达式。为一种可取的方法,只使用可微函数,编写绝对值作为四个线性不等式约束。每个约束命令返回一个向量的N约束。
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);为2 = 1:(N - 1) jj = (2 + 1): N;坦佩= x (x (2) - (jj))。^ 2 + (y (ii) - y (jj))。^ 2 + (z (ii) - z (jj)) ^ 2;能源= +总和(。^ (1/2));结束elecprob。目标=能量;
运行优化
开始与电子分布的随机优化球面半径的1/2集中在[0,0,1]。
rng默认的%的再现性x0 = randn (N, 3);为2 = 1:N x0 (ii):) = x0 (ii):) /规范(x0 (ii):)) / 2;x0 (2, 3) = x0 (ii, 3) - 1;结束init。x=x0(:,1); init.y = x0(:,2); init.z = x0(:,3);
通过调用解决问题解决。
[溶胶,fval exitflag、输出]=解决(elecprob init)
使用fmincon解决问题。局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
索尔=结构体字段:x: [20 x1双]y: [20 x1双]z: [20 x1双]
fval = 163.0099
exitflag = OptimalSolution
输出=结构体字段:迭代:94 funcCount: 150 constrviolation: 0 stepsize: 2.8395 e-05算法:“内点”firstorderopt: 8.1308 e-06 cgiterations: 0消息:“局部最小值发现满足约束....“bestfeasible: [1 x1 struct] objectivederivative:“reverse-AD”constraintderivative:“封闭”解算器:“fmincon”
查看解决方案
情节点的解决方案进行的身体。
图(手)plot3 (sol.x、sol.y sol.z,“r”。,“MarkerSize”,25)从
电子分布相当均匀的约束边界。许多电子边缘和金字塔。
参考
[1]多兰,伊丽莎白D。,Jorge J. Moré, and Todd S. Munson. “Benchmarking Optimization Software with COPS 3.0.” Argonne National Laboratory Technical Report ANL/MCS-TM-273, February 2004.
相关的话题
考虑把20的静电学问题电子在导电体。电子会安排自己的方式最大限度地减少总势能,躺在身体的约束。所有的电子都在身体的边界在最低。电子是没有区别的,所以这个问题没有唯一的最小(交换电子在一个解决方案给另一个有效的解决方案)。这个例子的灵感来源于多兰,更多的,老李[1]。 当你使用优化变量(具体问题具体分析的方法),这个例子的目的和非线性约束函数 这个例子包括导电体定义为以下的不平等。为每个电子坐标
这些约束形成的身体,看起来就像一个金字塔一个球体。查看身体,输入以下代码。 轻微的上下表面之间存在差距。这种差距是一个工件的绘图程序用于创建人物。常规消除任何矩形贴片表面接触到另一个表面上。 有二十个电子问题。给边界的约束 这个问题有两种类型的约束。第一,球面约束,分别为每个电子是一个简单的多项式不等式。定义这个球面约束。 前面的约束命令创建一个向量的 第二种类型的约束问题是线性的。你可以用不同的方式表达的线性约束。例如,您可以使用 目标函数是系统的势能,这是一个每个电子对求和的逆距离:
定义作为优化目标函数表达式。良好的性能,矢量化的方式写出目标函数。看到 开始与电子分布的随机优化球面半径的1/2集中在[0,0,1]。 通过调用解决问题 情节点的解决方案进行的身体。 电子分布相当均匀的约束边界。许多电子边缘和金字塔。 [1]多兰,伊丽莎白D。,Jorge J. Moré, and Todd S. Munson. “Benchmarking Optimization Software with COPS 3.0.” Argonne National Laboratory Technical Report ANL/MCS-TM-273, February 2004.几何问题
(X, Y) = meshgrid (1: .01:1);Z1 = abs (X) - abs (Y);Z2 = 1 -√(1 - X。^ 2 - y ^ 2);Z2 =实际(Z2);W1 = Z1;W2 = Z2;W1 (Z1 < Z2) =南;
定义问题的变量
N = 20;x = optimvar (
定义约束
elecprob.Constraints。spherec = (x。y ^ 2 +。^ 2 + (z + 1) ^ 2) < = 1;
显示(elecprob.Constraints.spherec)
((x。^ 2 + y ^ 2) + (z + 1)。^ 2) < = arg_RHS地点:最长= 1;__arg1 =最长的(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
[溶胶,fval exitflag、输出]=解决(elecprob init)
使用fmincon解决问题。局部最小值发现,满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
索尔=
fval = 163.0099
exitflag = OptimalSolution
输出=
查看解决方案
图(手)plot3 (sol.x、sol.y sol.z,
参考
相关的话题