AMPL:约束优化未按照LP Solver

时间:2016-11-23 22:37:00

标签: optimization mathematical-optimization linear-programming ampl lpsolve

我正在尝试使用LP解算器和AMPL(.mod)作为语言来构建约束优化模型。

上下文是一个工厂,它接收多个订单,然后在生产过程中经过多个机器(操作)。

订单中的操作受每台机器的每日最大容量限制。

目标是每天接受尽可能多的订单,以最大限度地提高机器的容量。

我的代码如下所示:

  set orders;
  param machines;
  param Planning_period;

  var order_accepted{t in 1..Planning_period,o in orders} >= 0 binary;
  var order_operation_capacity_optimized > 0;

  maximize capacity: sum{t in 1..Planning_period, o in orders, m in 1..machines} order_operation_capacity_optimized[t,o,m];

  s.t. Available_capacity_per_day{t in 1..Planning_period, m in 1..machines}: sum{o in orders} order_operation_capacity_optimized[t,o,m] <= machine_capacity[m];

  s.t. Needed_capacity_per_operation{t in 1..Planning_period, o in orders, m in 1..machines}:order_operation_capacity_optimized[t,o,m] = capacities_reqd_per_order[o,m]*order_accepted[t,o];

  s.t. Operation_completed_1{t in 1..Planning_period, o in orders, m in 1..machines}: order_operation_capacity_optimized[t,o,m] >= capacities_reqd_per_order[o,m];

  s.t. Operation_completed_2{t in 1..Planning_period, o in orders, m in 1..machines}: order_operation_capacity_optimized[t,o,m] <= capacities_reqd_per_order[o,m]*operation_completed[t,o,m];

 s.t. Precedence_restriction{t in 1..Planning_period, o in orders, m in 2..machines}: sum{tt in 1..t-1} order_operation_capacity_optimized[t,o,m-1] + order_operation_capacity_optimized[t,o,m-1] >= capacities_reqd_per_order[o,m-1]*operation_completed[t,o,m];

我的数据如下:

data;
set orders := order_1 order_2 order_3;
param machines := 4;
param Planning_period := 3;

param machine_capacity:= 1 10
                          2 20
                          3 25
                          4 15;
param capacities_reqd_per_order:     1         2     3   4 :=
     order_1                         7         6            4           3  
     order_2                         4         1            3           2
     order_3                         2         1            5           2;

代码运行时没有错误,但没有预期的结果。

结果输出为:

enter image description here

如上所示,该模型在整个计划期间复制time_1的结果。 我希望它在time_1处理order_1和order_3后,在time_2中接受订单2。

如何更正此复制?

对于这篇长篇文章感到抱歉,尽量给予尽可能多的清晰度。

如果有人可以指导我的话,我愿意在R中编写代码。

  • 编辑:

我添加了约束来对每个订单的操作施加优先级限制。

0 个答案:

没有答案