首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fmincon中目标函数和约束函数的单次计算

fmincon中目标函数和约束函数的单次计算
EN

Stack Overflow用户
提问于 2017-01-06 18:16:01
回答 1查看 375关注 0票数 0

在我的程序中,我需要在优化程序中求解一个边值问题,它也有非线性约束。用fmincon求解问题,需要用BVP的解来求目标函数和非线性约束函数。

目前,我正在求解目标函数和约束函数中的BVP。在对目标函数中的BVP进行一次评价后,是否有一种更有效的方法,通过对约束函数的求解来减少另一次BVP的评价。任何想法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-06 18:26:14

使用额外的输入创建一个函数,用于区分这两个调用。这基本上是目标函数和约束函数的包装器,将所有必要的中间输出保存在persistent变量中:

代码语言:javascript
复制
function varargout = my_obj_con_function(..., option)

    persistent C, Ceq; % ... or any other data you might need

    switch (option)

        case 'obj'

            % objective function 
            [varargout{1}, data] = objfun(...); % 'data' is an example

            % constraint function 
            [C, Ceq] = confcn(data, ...);

        case 'con'

            % You've just computed this -- just return it
            varargout{1} = C;
            varargout{2} = Ceq;
            return 

    end

end

像这样使用:

代码语言:javascript
复制
[...] = fmincon(@(x) my_obj_con_function(x, ..., 'obj'), ...
                x0,...
                Lb, Ub, ...
                A, b,...
                Aeq, beq, ...
                @(x) my_obj_con_function(x, ..., 'con'), ...);

这明确地假定fmincon总是在调用目标函数之后调用约束函数,决策变量的值完全相同。现在我不确定这是否能得到保证--当情况并非如此的时候,你可能会想要建立一些保护和机制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41511820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档