gpt4 book ai didi

matlab - 使用 fmincon 时动态修复一些变量

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:10 25 4
gpt4 key购买 nike

我有一个 MINLP 目标函数,我想将一些变量值固定为常量,如下所述:

A = [1 1 1];
b = 30;
x1 = zeros(1,3);
y=1;
x = fmincon(@(x)objfun(x,y),x1,A,b);

function f = objfun(x,y)
x(y) = 1;
f = x(1)^2 + x(2)^2 + x(3)^2;
end

但是,变量x 的结果全为零。看来 x(1) 不能强制为 1。如何解决这个问题?

最佳答案

您应该使用不同的 fmincon 语法:

fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

然后,如果您只想限制其中一个值,则可以使用这些边界:

lb = [1 -Inf -Inf]; 
ub = [1 Inf Inf];

由于您还需要指定输入 Aeqbeq,请不要忘记您可以使用 [] 作为任何输入不想/不需要指定,如this example所示在文档中:

fun = @(x)1+x(1)./(1+x(2)) - 3*x(1).*x(2) + x(2).*(1+x(1));
lb = [0,0];
ub = [1,2];
A = [];
b = [];
Aeq = [];
beq = [];
x0 = [0.5,1];
[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

关于matlab - 使用 fmincon 时动态修复一些变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50116902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com