我需要使用AMPL制作成本的CPM模型。
我的.mod:
set TASKS;
set ARCS within {TASKS cross TASKS};
param duration{TASKS} >= 0;
param cost{TASKS} >=0;
param description{TASKS} symbolic;
var
TASKS_ES{TASKS} >= 0; #Earliest Start
var
TASKS_EF{TASKS} >= 0; # Earliest Finish
var
TASKS_LS{TASKS} >= 0; # Latest Start
var
TASKS_LF{TASKS} >= 0; # Latest Finish
var
TASKS_SLACK{TASKS} >= 0; # Slacks
#Final time (global)
var TF >= 0;
minimize CPM: card(TASKS)*TF - sum {j in TASKS} TASKS_SLACK[j];
.. #constraints
我的.dat:
param : TASKS : duration cost description :=
T01 5 5 'A'
T02 1 1 'B'
T03 2 2 'C'
T04 3 3 'D'
T05 2 2 'E'
T06 3 3 'F'
T07 4 4 'G'
T08 2 2 'H'
T09 1 1 'I'
T10 1 1 'J'
;
set ARCS :=
T01 T02
T01 T03
T02 T03
T02 T05
T03 T04
T05 T07
T04 T07
T03 T06
T06 T07
T07 T08
;
完美的工作,但我需要添加这个约束来计算所有任务的成本(我可以最小化所有任务的持续时间,但我需要每个任务的最佳时间):
cost(duration_task(i,j))= k(i,j) - cost(i,j)* duration_task(i,j)
duration_task是使用所有约束最小化我的目标函数的时间。
这就像:
受ARCS成本{(i,j)影响}:max_cost +(min_cost - max-cost / max_time - min_time)*(time_task(i,j) - min_time)
示例:
需要一些帮助,谢谢。