主要内容

一维半无限约束

求的值x,减少

fx) = (x1- - - - - - 0.5)2+ (x2- - - - - - 0.5)2+ (x3.- - - - - - 0.5)2

在哪里

K 1 x w 1 w 1 x 1 因为 w 1 x 2 1 1000 w 1 50 2 w 1 x 3. x 3. 1 K 2 x w 2 w 2 x 2 因为 w 2 x 1 1 1000 w 2 50 2 w 2 x 3. x 3. 1

对于所有的值w1而且w2超过范围

1≤w1≤100,
1≤w2≤100。

请注意,半无限约束是一维的,即向量。因为约束条件必须是这个形式Kxw)≤0,则需要计算约束条件为

K 1 x w 1 w 1 x 1 因为 w 1 x 2 1 1000 w 1 50 2 w 1 x 3. x 3. 1 0 K 2 x w 2 w 2 x 2 因为 w 2 x 1 1 1000 w 2 50 2 w 2 x 3. x 3. 1 0.

首先,编写一个计算目标函数的文件。

函数F = myfun(x,s)目标函数F = sum((x-0.5).²);

其次,写一个文件mycon.m计算非线性不等式约束和半无限约束。

函数[c,ceq,K1,K2,s] = mycon(X,s)初始采样间隔%如果Isnan (s(1,1)), s = [0.2 0;0.2 0];结束%样本集W1 = 1:s(1,1):100;W2 = 1:s(2,1):100;半无限约束K1 = sin(w1*X(1)).*cos(w1*X(2)) - 1/1000*(w1-50)。^ 2 -...罪(w1 * X (3)) - X (3) 1;K2 = sin(w2*X(2)).*cos(w2*X(1)) - 1/1000*(w2-50)。^ 2 -...罪(w2 * X (3)) - X (3) 1;无有限非线性约束C = [];测查= [];绘制半无限约束的图形情节(w1, K1,“- - -”w2, K2,“:”)标题(“半无限约束”) drawnow

然后,调用一个优化例程。

X0 = [0.5;0.2;0.3);%开始猜测[x,fval] = fseminf(@myfun,x0,2,@mycon);

经过8次迭代,解决方案是

x
X = 0.6675 0.3012 0.4022

解处半无限约束的函数值和最大值x

fval
Fval = 0.0771
[c,ceq,K1,K2] = mycon(x,NaN);初始采样间隔%马克斯(K1)
Ans = -0.0077
马克斯(K2)
Ans = -0.0812

给出了半无限约束的图。

这两个约束条件都小于或等于零,并在一两个点处达到零

该图显示了两个约束的峰值是如何在约束边界上的。

里面的plot命令mycon.m降低计算速度。去掉这条线以提高速度。

另请参阅

相关的话题