集团约束FMINCON

2视图(30天)
托马索Belluzzo
托马索Belluzzo 2020年4月26日
编辑: 托马索Belluzzo2020年4月26日
嗨!我正在写一个模型,需要通过FMINCON减少6个变量: o, a、b、w,卡帕,γ 。的变量 选项 定义如下:
optimset (optimset (@fmincon),“诊断”,“关闭”,“显示”,“关闭”,“大规模”,“关闭”,“MaxSQPIter”,1000,“TolFun”1 e-6)
变量已经受制于以下上限/下限:
  • o, a、b、w之间的0;
  • 卡巴、伽马严格之间的积极的(2 * options.TolCon);
我需要确保几个约束是受人尊敬的:
  • o, a、b、w必须大约总和1;
  • kappa *γ必须约等于1;
如果我没有考虑过去的两个变量,我可能会使用 一个 b FMINCON参数 如下:
一个=[黑眼圈(3);(1、3)];
b = [(0 (3,1) + (2 * options.TolCon));(1 - (2 * options.TolCon)));
但这种方法的两个截然不同的约束(一个加法和乘法)是很奇怪的,我真的不知道如何设置 一个 b
似乎 nonlcon 参数可能是我在找什么,但我不清楚如何制定正确。
谢谢!

接受的答案

约翰D 'Errico
约翰D 'Errico 2020年4月26日
约等于不是一个等式约束。
但你可以把它写成两个不等式约束。所以如果你想kappa * gamm大约等于1,那么这意味着你想要的产品在一些给定的公差为1。那就是:
kappa * gamm > = 1 -托尔
kappa * gamm < = 1 +托尔
你可以交换的不平等方向第一个约束乘以1。
kappa * gamm < =(1 -托尔)
注意我使用gamm作为变量名,而不是伽马。因为有一个函数叫做伽马通常是非常有用的,我强烈建议不使用一个名为γ的变量。
1评论
托马索Belluzzo
托马索Belluzzo 2020年4月26日
编辑:托马索Belluzzo 2020年4月26日
谢谢你的回答。我可以请你们怎么实现这个观点的Matlab代码?
我想我必须编写一个nonlcon函数呢?
函数测查[c] = my_nonlcon (x,选项)
kappa = x (5);
gamm = x (6);
公斤= kappa * gamm;
c1 = kg - (1 - (2 * options.TolCon));
c2 =公斤- (1 + (2 * options.TolCon));
c = [c1;c2);
测查= [];
结束
A和b属一起制定如下:
A =[[黑眼圈(3)0 (3)];[1 (1、4)0 (1、2)];0 (2,6)];
b = [(0 (3,1) + (2 * options.TolCon));(1 - (2 * options.TolCon));0 (2,1)];
我说的对吗?

登录置评。

更多的答案(0)

类别

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

下载188bet金宝搏


释放

R2018b

社区寻宝

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

开始狩猎!