考虑在一个导电体中放置20个电子的静电问题。电子将以一种使它们的总势能最小化的方式排列自己,受限于躺在身体内部。所有的电子至少都在物体的边界上。电子是不可区分的,所以这个问题没有唯一的最小值(在一个解中排列电子可以得到另一个有效解)。这个例子的灵感来自于Dolan, Moré和Munson[1]。 此示例的目标和非线性约束函数是全部的 这个例子涉及一个由下列不等式定义的导电体。对于每个有坐标的电子
这些约束形成了球体上的金字塔。要查看主体,请输入以下代码。 图的上表面和下表面之间有一个轻微的间隙。这个间隙是用于创建图形的一般绘图程序的人工产物。该程序擦除一个表面上与另一个表面接触的任何矩形补丁。 这个问题有二十个电子。这些约束给出了每个约束的边界 问题有两种类型的约束。首先是球形约束,是每个电子单独的多项式不等式。定义此球形约束。 上述constraint命令创建一个包含10个约束的向量。使用。查看约束向量 问题中的第二种约束是线性的。你可以用不同的方式来表达线性约束。例如,你可以使用 目标函数是系统的潜在能量,这是每个电子对它们距离的倒数的总和:
将目标函数定义为优化表达式。为了良好的性能,以矢量化方式写下目标函数。看 开始优化时,电子随机分布在半径为1/2、以[0,0,-1]为中心的球体上。 通过打电话来解决问题 在导电体上以点表示解。 电子在约束边界上相当均匀地分布。许多电子在边缘和金字塔点上。 [1] Dolan, Elizabeth D., Jorge J. Moré和Todd S. Munson。cops3.0基准优化软件。阿贡国家实验室技术报告ANL/MCS-TM-273, 2004年2月。几何问题
[x,y] = meshgrid(-1:.01:1);z1 = -abs(x) - abs(y);Z2 = -1 - SQRT(1 - X. ^ 2 - Y. ^ 2);z2 =真实(z2);w1 = z1;w2 = z2;W1(Z1
定义问题变量
n = 20;x = Optimvar(
定义约束
elecprob.Constraints.spherec = (x ^ 2 + y ^ 2 + (z + 1)。^ 2)< = 1;
show(elecprob.constraints.spherec)
((x ^ 2 + y ^ 2) + (z + 1)。^ 2)< = arg_RHS地点:最长= 1;__arg1 =最长的(20));arg_RHS = __arg1 (:);
elecprob.Constraints。平面1 = z <= -x-y;elecprob.Constraints。Plane2 = z <= -x+y;elecprob.Constraints。Plane3 = z <= x-y;elecprob.Constraints。Plane4 = z <= x+y;
定义目标函数
Energy = Optimexpr(1);
运行优化
RNG.
[溶胶,fval exitflag、输出]=解决(elecprob init)
使用fmincon解决问题。找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
sol =
fval = 163.0099
exitflag = OptimalSolution
输出=
查看解决方案
图(手)plot3(sol.x,sol.y,sol.z,
参考
相关话题