如何在Matlab中创建动态约束

时间:2018-10-27 04:48:56

标签: matlab optimization dynamic constraints

我正在尝试解决具有动态约束的优化问题。这基本上是在创建车辆轨迹。最后三行按每个步骤的状态说明多个约束。 我想使用for循环创建这三行。我怎样才能做到这一点? eval([ '...' num2str(i)]) = equation;不起作用。

代码如下:

%% MILP
% create opt.problem (max.)
prob = optimproblem('ObjectiveSense','maximize');

% creat variables
x = optimvar('x', sim_time_opt, 'lowerbound', 0);

% set objective function (last location)
prob.Objective = x(sim_time_opt,1);

% set constraints
% vmax
prob.Constraints.cons1 = ((x(1,1)-x0)/dt <= vmax);
prob.Constraints.cons2 = ((x(2,1) - x(1,1)) / dt <= vmax);
prob.Constraints.cons3 = ((x(3,1) - x(2,1)) / dt <= vmax);

1 个答案:

答案 0 :(得分:0)

在MATLAB中,这是

name = 'cons1';
prob.Constraints.(name) = ((x(1,1)-x0)/dt <= vmax);

与此相同:

name

例如,可以使用sprintf创建变量name = sprintf('cons%d',index);

index

(当然eval是约束的编号,也许是循环索引。)

我不知道您想如何生成约束,但是您应该尝试避免使用5+6,因为它存在安全隐患,而且效率很低。