考虑在一个导电体中放置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 -根号(1 - x ^2 - y ^2)Z2 =实际(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 =最长的(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;
定义目标函数
能量= optimexpr (1);
运行优化
rng
[溶胶,fval exitflag、输出]=解决(elecprob init)
使用fmincon解决问题。找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
索尔=
fval = 163.0099
exitflag = OptimalSolution
输出=
查看解决方案
图(手)plot3 (sol.x、sol.y sol.z,
参考
相关的话题