【发布时间】:2019-07-16 01:02:08
【问题描述】:
一个优化问题由一个应该最小化的目标函数、10 个决策变量(从x(1) 到x(10))和一些约束组成。
在目标函数中计算了一些附加变量,即
Variable1=5*x(5)+x(1)*10-25
Variable2=x(1)=5*x(2)+50*x(10)
等等
问题是我想将以上两个作为决策变量函数的计算变量(Variable1 和Variable2)放入约束函数中。例如:
Variable1>=100
Variable2<50
为此,我试图将这些条件放入约束函数中:
function [c,ceq] = constraints(x)
c = [-Variable1+100;
Variable2-50;];
ceq = [];
我知道这些约束是线性的,但是不可能把它们当作线性约束=>A*X<b,因为线性约束只能包含决策变量。
在这种形式中,fmincon 算法不考虑上述条件。我怎样才能添加这些约束?
【问题讨论】:
-
是什么阻止您将
Variable1=5*x(5)+x(1)*10-25和Variable2=x(1)=5*x(2)+50*x(10)放入constraints.m函数中?除此之外,看起来您可以将变量 1 和变量 2 写为A*x其中A=[1,0,0,0,5,0,0,0,0,0;1,5,0,0,0,0,0,0,0,50]。 -
如果你的两个变量可以用
x的函数表示,你可以简单地写完整的表达式,不是吗?类似:c = [-(5*x(5)+x(1)*10-25) + 100;... -
不幸的是,这是不可能的。我应该解决的问题由 5000 个决策变量组成,并考虑了许多热力学关系。不可能将所有这些变量都表示为决策变量的函数...
标签: matlab optimization constraints