非线性约束向量优化使用优化工具箱

2视图(30天)
我试图复制一个非线性约束向量优化结果 Heuett /钱(2006) 使用 fmincon 解算器的 SQP 算法的优化工具箱。
是由一般的优化问题
和感兴趣的特定的目标函数,在这种情况下给出的
在哪里 J , J + , J - , Jext , delta_mu 都是向量,Jext_D是向量的元素 Jext ,年代和K ^ T矩阵提供的自然系统的问题。
我有编码的目标函数 heuett_simple.m :
函数f = heuett_simple (J_ext delta_mu)
f = J_ext(4) +点(delta_mu) / 2;
结束
自Jext_D J_ext将第四个元素的向量
和约束条件 heuett_constraints.m :
函数测查[c] = heuett_constraints (J J_plus J_minus、J_ext delta_mu)
模型= sbmlimport (“heuett_simple.xml”);
S = getstoichmatrix(模型);
S = (S);
K = [-0.7163, -0.3345;
-0.3205、-0.4347;
0.4710、-0.6349;
-0.3958、0.1001;
-0.0752、0.5348);
c = [];
量表(1)= S * J + J_ext;
量表(2)= (K) * delta_mu转置;
量表(3)=诊断接头(exp (delta_mu)) * J_plus - J_minus;
量表(4)= J - J_plus + J_minus;
结束
模型的规范,年代,K是特定的问题我在工作。年代是一个4 x5矩阵类型的翻倍。当我执行这个问题使用工具箱使用以下设置(暂时没有界限)
我收到的错误
指数超过矩阵维度。
任何想法导致我的问题是什么?

答案(2)

肖恩·德Wolski
肖恩·德Wolski 2014年9月16日
> > dbstop如果错误
然后运行代码。这将停止在直线上抛出错误,你可以看看索引诉矩阵的大小,看看发生了什么。
4评论
山姆
山姆 2014年9月16日
编辑:山姆 2014年9月16日
嗨,马特,
我使用dbstop,结果我意识到有问题我提供目标函数(没有J_ext工作区后运行的代码),因此我将尝试你的建议下面给未知数作为单一变量。

登录置评。


马特·J
马特·J 2014年9月16日
的一个错误是,你助长了未知的目标函数和约束多个输入参数,例如:
函数f = heuett_simple (J_ext delta_mu)
f = J_ext(4) +点(delta_mu) / 2;
结束
所有的未知数美联储必须作为一个变量,像在下面
函数f = heuett_simple(未知)
J_ext =未知数(1:N);
delta_mu =未知数(N + 1:结束);
f = J_ext(4) +点(delta_mu) / 2;
结束
同样的约束。
1评论
马特·J
马特·J 2014年9月16日
另一个错误是,你选择一个初始点(0,0)只有2组成的元素,当你显然已经大大超过两个未知数。

登录置评。

类别

找到更多的在Solver-Based优化问题设置帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!