如何访问外部变量在其他的工作吗?(fmincon函数)

6视图(30天)
我有下面的代码找到函数的最小非线性约束。我用fmincon优化工具箱。
有趣= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;
磅= [0,0.2];
乌兰巴托= [0.5,0.8];
一个= [];
b = [];
Aeq = [];
说真的= [];
x0 = (1/4, 1/4);
nonlcon = @circlecon;
全球帕拉;
帕拉= 1/3;
x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)% * * * *
函数测查[c] = circlecon (x)
全球帕拉
c = (x (1) para) ^ 2 + (x (2) para) ^ 2 - (para) ^ 2;
测查= [];
结束
fmincon 是一个函数实现的优化工具箱。我通过的处理 circlecon fmincon 作为参数。 我的问题是,我怎么才能正确的价值“para”当我调用这个函数circlecon fmincon函数。
代码的细节在这里解释。
这个人应该至少能得到乐趣,具有线性约束:
磅< x <乌兰巴托
* x < b
Aeq * x =说真的
起始点是x0 = (1/4, 1/4)
circlecon定义的非线性约束函数,这是
然而,通过处理 nonlcon fmincon将函数 circlecon fmincon定义的另一个工作空间。所以对位是空的,因为它的价值不能得到的价值出发 circlecon 。这是个问题。

答案(1)

史蒂文的主
史蒂文的主 2023年2月27日
不要使用全局变量。 参数化 非线性约束函数。如果你的约束函数定义为:
函数测查[c] = circlecon (x, para)
您可以指定的非线性约束条件为:
帕拉= 1/3;
nonlcon = @ (x) circlecon (x, para);
1评论
HAISHUO
HAISHUO 2023年3月2日
太好了。我还没有测试过。但我相信这个函数处理就是我在寻找的。多谢。

登录置评。

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

下载188bet金宝搏


释放

R2022b

社区寻宝

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

开始狩猎!