实现调用另一个函数的fmincon

时间:2013-04-02 19:17:59

标签: matlab optimization minimize

现在,我有一个模拟变压器工厂的代码(我们称之为TP1),它给出两个输出'x'和'y'给定两个物理尺寸'a'和'b'在一系列变换比。

配置该工厂有几种不同的方法,因此在工厂模型中是简单的选择标准,选择一个设置而不是其他设置,以便输入和输出都最大化。 (所以我没有先验知道'a'和'b'将通过什么方程来产生'x'或'y')

还有另一个变压器(TP2)只为一个物理尺寸'c'产生输出'x2'和'y2'

以下是我要做的优化:

目标:给定已建立的TP2,设计TP1使其在给定的变换比范围内最小化a + b而x> = x2,并且y> = y2。

我迷失了如何实现fmincon(或任何其他优化方法)来完成这项任务,特别是因为我的模型TP1是基于数字的。 (在商业解决之前,我不知道config1或2对于某些转换比率是否更好)我提前感谢您的建议。

1 个答案:

答案 0 :(得分:1)

fmincon是正确的工具:

  • 您的未知是2元素向量[a; b]
  • 您需要为X0
  • 提供起点[a; b]
  • 您的费用函数FUN只是一个返回a+b
  • 的函数
  • 您有两个非线性约束,需要为NONLCON
  • 编写函数

您的NONLCON功能应该:

  • 接受2元素向量[a; b]作为输入
  • 评估您的模型,TP1
  • 返回C(第一个返回值)一个2元素向量[x-x2;的y Y2]
  • 为第二个返回值Ceq
  • 返回空

您可能还想为[a; b]向量指定上限和下限。