%本程序是进退算法的程序。我们可以通过它确定一个合适的初始区间,
%之后再利用黄金分割法等其他一维搜索方法确定最优点。
function [a,b]=jtsf(alpha0) %alpha0是初始点
step=1%初始步长
a1=alpha0
a2=a1+step
f1=f(a1)
f2=f(a2)
if f1>f2
while 1 %始终循环,通过break可以结束循环灶枝型
step=2*step
a1=a2
a2=a2+step
f1=f2f2=f(a2)
if f1<f2
break
end
end
else
step=-step/4
while 1 %始终循环,通过break可以结束循环
a2=a1
a1=a1+step
f2=f1
f1=f(a1)
if f1>f2
break
end
end
end
a=a1
b=a2
function f=f(x)
f=4*x^2-4*x+7%函数
===================================
但是我并没有接着做,我还得在学习,你也可以根据这隐猜些在学习吧
这种带有亏前乱非线性约束的应该用fmincon求解。
function [c, ceq] = mycon(x)L = [100 1e3 1e3 10*ones(1,5)]'
U = [1e4 1e4 1e4 1e3*ones(1,5)]'
c = [25*(x(4)+x(6)) - 1e4
25*(-x(4)+x(5)+x(7)) - 1e4
-x(5)+x(8) - 100
销档 100*x(1)-x(1)*x(6)+833.33252*x(4) - 83333.333
x(2)*x(4)-x(2)*x(7)-1250*x(4)+1250*x(5)
悔陆 x(3)*x(5)-x(3)*x(8)-2500*x(5) + 1.25e6
x-U
L-x]
ceq = []
end
主程序调用:
f = @(x)sum(x(1:3))x = fmincon(f,(L+U)/2,[],[],[],[],[],[], @mycon, optimset('Display', 'off'))
f(x)
结果与标准答案一致
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)