【问题标题】:Optimization with infinite constraints无限约束优化
【发布时间】:2017-06-17 23:55:49
【问题描述】:

我需要表达这个条件:

a - b(a,x) < 0,         for any a such that     0 < a < Inf
% b(a,x) is a function depending on a and x, the vector to be optimized
% a is an additional variable, of length 1

我遇到了fseminffunction,这似乎正是我想要的。但是,它只考虑“a”的紧密间隔。对于精度为千分之一的 a 的任何正实值,我都需要满足此约束。

another post in StackoverflowMatlab documentation 中提到不可能覆盖整个正实数范围,必须猜测a 的哪些值是预期的。我想知道是否有另一种方法可以做到这一点,因为在我的情况下a 的可能值实际上取决于另一个变量s,并且取决于s 的值a 的这些值可能会有所不同到无穷大。

在此先感谢您,并致以最诚挚的问候。

实际上我需要实现的减法是这张图片中的上面那个:

也就是说,对于任何大于 0 的m_u 的值,该等式中左边的项减去右边的项必须小于 0。当迭代次数 (l) 趋于无穷大时,所以必须做m_u的值——当(l)=0时开始为0。也就是说,对于m_u的任何值,下一次迭代提供的值都应该大于它。

这个表达式中要优化的参数是lambdarho,而不是m_u

我能做什么?

非常感谢提前和BR。

【问题讨论】:

  • 如果是,则不需要将非线性方程来优化。已经没有意义了!
  • 我觉得这个问题现在是对的,谢谢cmets!
  • 我不这么认为!
  • 你期待什么输出? 使不等式有效是什么意思?你想找到使它有效的b吗?
  • @SardarUsama 我期待一个布尔值。这个减法对应于 fmincon 的非线性条件函数中的c 值。我只是不知道定义常量a 不是通过单个值,而是通过它的整个域。

标签: matlab math constraints conditional-statements


【解决方案1】:

首先,为非线性条件定义一个函数:

function [c,ceq] = nonLinear(x)
c = x - b(x);
ceq = [];

然后,在目标函数f(x)上应用fmincon喜欢以下内容:

fun = @(x)f(x);
nonlcon = @nonLinear;
A = [-1];  % x > 0
b = [0];
Aeq = [];
beq = [];
lb = [];
ub = [];
x0 = [0]; %initial point

[x,fval,exitflag,output] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon);

【讨论】:

  • 你好@OmG,谢谢你的回答。还有其他方法吗?实际上这个变量a不是要优化的,它是在非线性条件函数内部定义的。 BR!
  • 所以,如果不在优化中,这里就是常数!和优化无关!
  • 你是完全正确的——我的错。我现在正在更正邮件正文。
猜你喜欢
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多