主要内容

一维半无限约束

找到的值x,减少

f(x)= (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 ,

所有的值w1w2在范围内

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

注意,半无限约束是一维的,也就是说,向量。因为约束必须在表单中K(x,w)≤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 =总和((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 =罪(w1 * X (1))。* cos (w1 * X (2)) - 1/1000 * (w1-50)。^ 2 -罪(w1 * X (3)) - X (3) 1;K2 =罪(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减缓了计算。删除这条线来提高速度。

另请参阅

相关的话题