【问题标题】:Maximizing a function in MatlabMatlab中的函数最大化
【发布时间】:2017-06-04 23:28:24
【问题描述】:

我在 matlab 中有一个名为 function UFamily = CalcUFamily(hh,hw) 的函数。该函数的值由 hh 和 hw(家庭中夫妻的工作时间)决定。我想获得最大化函数UFamily 的hh 和hw。

我该如何进行?我无法让fmincon 工作。

感谢您的帮助! :)

【问题讨论】:

  • 您需要添加您尝试使用fmincon 的代码,并且几乎肯定需要添加有关CalcUFamily 的更多信息(如果不是代码)
  • h = [1000 1000]; % start value lb = [0 0]; % lower bound of h ub = [3500 3500]; % upper bound of h Uoptimal = fmincon(@(h1, h2) -U(h1, h2), h, [], [], [], [], lb, ub); CalcUFamily 是一个很长的代码,但它是根据家庭中女性和男性的工作时间。
  • 请将代码添加到您可以编辑的问题中,这样的 cmets 中的代码不可读
  • 请不要重复您的问题。这是你能做的最糟糕的事情之一。当您有后续问题时,至少提供一个指向您之前的问题的链接,并明确说明不同之处。

标签: matlab maximize


【解决方案1】:

最小化 fmincon 的函数应使用 'h' (1x2) 作为其输入,而您的函数 CalcUFamily 需要两个输入,hh 和 hw。您可以执行以下操作:

myFun = @(h) -CalcUFamily(h(1), h(2)); % function to minimize with one input
Uoptimal = fmincon(myFun, [1000 1000], [], [], [], [], lb, ub);

【讨论】:

  • 谢谢!这是否适用于男性和女性分别进行 1 小时到 3500 小时的测试?
  • 我无法回答这个问题,因为这与您如何评估它有关,即您的 CalcUFamily 函数如何计算分数。
  • 我得到:Error in Berakningsmodeller (line 6) Uoptimal = fmincon(myFun, [1000 1000], [], [], [], [], lb, ub); Caused by: Failure in initial user-supplied objective function evaluation. FMINCON cannot continue. 你需要我的其他函数中的整个代码吗?很长,如果需要我可以发布。
  • 不需要整个代码,但您需要确保您的 CalcUFamily 函数接收两个数字(hh,hw)作为输入,并给出单个数字的输出。
  • 好的,我明天再试试!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
相关资源
最近更新 更多