一维半无限约束
找到的值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 =罪(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
减缓了计算。删除这条线来提高速度。