一维半无限约束
找到的值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 =总和((x - 0.5) ^ 2);
第二,写一个文件mycon.m
计算了非线性等式和不等式约束以及半无限约束。
函数[c,测查,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 (x0, @myfun 2, @mycon);
经过八次迭代,解是
x
X = 0.6675 0.3012 0.4022
半无限约束在解处的函数值和最大值x
是
fval
fval = 0.0771
[c,测查,K1, K2] = mycon (x, NaN);%初始采样间隔马克斯(K1)
ans = -0.0077
马克斯(K2)
ans = -0.0812
给出了半无限约束的图。
这个图显示了两个约束中的峰值是如何位于约束边界上的。
里面的情节命令mycon.m
降低计算速度。去掉这条线可以提高速度。