fmincon非线性不等式约束包括变量范围?

2视图(30天)
函数 测查[c] = nonlcon (x)
c (1)
上面是一个非线性不等式约束的名称和内容。
如果我想写一个非线性不等式约束c(1) =(复杂的函数(x) * n (n)在0和9之间,我如何写?
我在谷歌上搜索和阅读很多页,但我没有找到答案。
非常感谢!

答案(1)

albara
albara 2023年4月29日
在MATLAB中,您可以定义一个非线性不等式约束函数通过编写一个单独的文件。根据你给的信息,您可以编写一个约束函数如下:
  1. 创建一个新文件在MATLAB和名称,例如,nonlcon.m
  2. nonlcon.m文件,定义非线性不等式约束函数:
函数测查[c] = nonlcon (x)
% n的值,如果n是0和9之间的一个整数
n = 5;%(与所需的值可以取代这个)
%定义复杂x的函数(替换为实际的函数)
complicated_function x = x (1) ^ 2 + (2) ^ 2;%(这是一个例子,取代它)
%定义非线性不等式约束c (1)
c (1) = complicated_function * (n - 3);
%没有非线性等式约束
测查= [];
结束
3 -取代的例子 complicated_function 与你的实际功能和设置的值 n 根据需要。
4 -保存文件。
现在你可以使用这个 nonlcon.m 文件中的非线性约束函数优化问题。例如,如果您正在使用 fmincon ,您可以通过 @nonlcon 非线性约束函数:
%定义你的目标函数
有趣= @ (x) x (1) ^ 2 + (2) ^ 2;
%定义初始猜测,下界,上界,等等。
x0 = [1;1);
磅= [];
乌兰巴托= [];
一个= [];
b = [];
Aeq = [];
说真的= [];
%与nonlcon fmincon非线性约束函数的调用
[x, fval] = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,@nonlcon);
这应该解决你给定的非线性不等式约束优化问题。记得要替换的例子 complicated_function n 用适当的表情和值是否适合您的特定问题。
重要:可能会有一些错误在这个回答专家可以告诉是否有任何错误
9日评论
Torsten
Torsten 2023年4月30日
编辑:Torsten 2023年4月30日
c(1) =(复杂的函数(x) * (n) < = 0
插入n = 0,得到(复杂的函数(x) *(3) < = 0,因此(x)的复杂的函数> = 0
插入n = 9,得到(复杂的函数(x) * 6 < = 0,因此(复杂函数(x) < = 0
因此只能满足你的条件如果(复杂的函数(x) = 0,这你应该设置为一个平等的条件
量表(1)=(复杂x的函数)。

登录置评。

类别

找到更多的在开始使用优化工具箱帮助中心文件交换

社区寻宝

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

开始狩猎!