我怎么设置fmincon整数条件?

21日视图(30天)
米哈伊尔·Konovalov
米哈伊尔·Konovalov 2020年5月12日
评论道: 约翰D 'Errico 2020年5月12日
我需要找到一个最适条件的函数,寻找解决方案,只属于整数的集合。金宝搏官方网站
这是我的功能:
有趣= @ (x) (- (x (1) -100) * (12 * (2) + 8 * x (3) + 10 * x (4) + 6 * -2050 x (1)))
出发点和条件:
x0 = (100 0 150 25);
= [1 2 1 2
1 4 2 0
1 1 2 3
1 0 0 0
6 -12 -10 8);
b = [300
400年
600年
-300年
-2050);
磅= [0 0 0 0];
乌兰巴托= [];
Aeq = [];
说真的= [];
nonlcon = @ceq;
所以实际的问题是关于最后一行,它包含一个函数与非线性整数条件。我设置是这样的:
函数测查测查[c] = (x)
c = [];
测查=国防部(x(1), 1) +国防部(x(2),(1) +国防部(x(3), 1) +国防部(x (4), (1);
结束
插件的根源和1的总和应等于0,,因为改装是负的,只能如果所有插件都是零,因此,我的解决方案是整数。
但它不工作!我得到这个答案:
索尔= 1×4
199.6679 0.0000 100.1811 5.0517
问题是我不滥用国防部函数。我可以输入:
国防部(sol(1), 1) +国防部(sol(2), 1) +国防部(sol(3), 1) +国防部(索尔(4),1)
并获得:
ans = 0.9007
这显然违反了我的条件。所以有什么问题?为什么Matlab忽略这个条件,我怎么设置它正确吗?

答案(1)

约翰D 'Errico
约翰D 'Errico 2020年5月12日
使用fmincon你做不到这一点。时期。fmincon不允许这类情况。使用不同的优化器能正常工作这样的约束。目前,唯一的工具MATLAB将GA,从全球优化工具箱。
6个评论
约翰D 'Errico
约翰D 'Errico 2020年5月12日
然后你应该能够使用GA。然而,您不希望使用一个非线性约束的形式。非线性约束是一个糟糕的选择,当有更好的选择。和遗传算法直接设施迫使未知数只有整数值。使用,GA将更有效,如果你正确使用它。
关键是,如果你允许GA搜索在连续空间,然后需要整数解,这使得搜索空间相对大,当你可以告诉GA搜索限制为整数的解决方案。金宝搏官方网站

登录置评。

类别

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

标签

下载188bet金宝搏


释放

R2020a

社区寻宝

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

开始狩猎!