一维半无限约束
求的值x,减少
f(x) = (x1- - - - - - 0.5)2+ (x2- - - - - - 0.5)2+ (x3.- - - - - - 0.5)2
在哪里
对于所有的值w1而且w2超过范围
1≤w1≤100,
1≤w2≤100。
请注意,半无限约束是一维的,即向量。因为约束条件必须是这个形式K我(x,w我)≤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
降低计算速度。去掉这条线以提高速度。