专栏
标签
fmincon如何输出迭代过程
一般问题
发布于 2025-08-08 18:45:24
查看 12过去324天

在MATLAB里使用fmincon进行优化时,使用语句:

options = optimoptions(..,PlotFcn="optimplotfval");

即可输出优化的迭代过程,但MWORKS里不支持。

现在我想输出迭代过程,应该怎么操作。谢谢

using TyGlobalOptimization

F = 1000 # N
L = 1.5 # m
rau = 7800 # kg/m^3
sigmay = 250 # MPa
E = 210000 # MPa

fun = x -> x[1]*x[2]L/10^6rau
lb = [50.0; 1.0]
ub = [150.0; 150.0]

function make_cons_ueq(F, L, sigmay, E)
return x -> begin
c = [6FL10^3/(x[1]x[2]^2)-0.8sigmay; F(L1000)^3/(3E*x[1]*x[2]^3/12) - 2]
ceq = Float64[]
return c, ceq
end
end

options = optimoptions(:fmincon)
nonlcon = make_cons_ueq(F, L, sigmay, E)
x, fval, = fmincon(fun, [50.0; 1.0], [],[],[],[], lb, ub, nonlcon, options)

println("优化结果:x=", x)
println("目标函数值:f(x)=", fval)

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算

全部回答 2

发布于 2025-08-11 08:48:28

您好,Syslab中提供了对应函数,您可以根据用户数手册修改您的代码,若不符合您的要求,可以上传相关的示例截图,我们结合起来分析一下。

发布于 2025-08-18 08:45:04

您好,如要通过绘图显示优化过程,需要使用 optimset 设置选项,并且只能使用 fminbnd、fminsearch 和 fzero 进行求解。
可参考以下形式修改原代码。

options = optimset(PlotFcn=optimplotfval,StepTolerance=1e-7,PlotFcnSetup=PlotSetupDefault())
nonlcon = make_cons_ueq(F, L, sigmay, E)
x,fval = fminsearch(fun,[50.0; 1.0],options)
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天