Procedure: the modified WCSA for the parallel machine scheduling problem
Inputs:   𝑛 , π‘š , π‘Ž 𝑖 , 𝑑 𝑖 , 𝑏 𝑖 for 𝑖 = 1 ,…, 𝑛
Output: the near optimal scheme S_opt  and the associated total completion time TC
Begin
 let 𝑁 0 = { 𝐽 1 , 𝐽 2 , … , 𝐽 𝑛 }   be the sequence that sorts all the jobs by ascending order of their
 normal time π‘Ž 𝑖 ,
 set TC = infinity, and 𝑆 _ π‘œ 𝑝 𝑑 π‘˜ = Ξ¦   for π‘˜ = 1 , … , π‘š    % initialize the 𝑇 𝐢 and 𝑆 _ π‘œ 𝑝 𝑑
 set v a r = m a x { 2 , ⌈ 𝑛 / π‘š βŒ‰ }             % initialize the ranges of 𝑙 1 and 𝑙 2
for ( 𝑙 1 = 1 ;   𝑙 1 ≀ v a r ; 𝑙 1 ++)
    πœ” 1 = 0 . 4 + ( 0 . 7 5 βˆ’ 0 . 4 ) Γ— ( ( 𝑙 1 βˆ’ 1 ) / ( v a r βˆ’ 1 ) )
   for ( 𝑙 2 = 1 ; 𝑙 2 ≀ v a r ; 𝑙 2 ++)
     πœ” 2 = 0 . 2 + ( 0 . 5 βˆ’ 0 . 2 ) Γ— ( ( 𝑙 2 βˆ’ 1 ) / ( v a r βˆ’ 1 ) )
     πœ” 3 = 1 βˆ’ πœ” 1 βˆ’ πœ” 2
    set 𝑁 = 𝑁 0
    set 𝑆 = Ξ¦ for π‘˜ = 1 , … , π‘š          % initialize the scheme 𝑆
    set 𝐢 m a c ( π‘˜ ) = 0 , for π‘˜ = 1 , … , π‘š        % initialize the completion
                       time of all machines
    set 𝐢 j o b ( 𝑖 ) = 0 , for 𝑖 = 1 , … , 𝑛         % initialize the completion
                       time of all jobs
    for ( 𝑖 = 1 ;   𝑖 ≀ π‘š ;   𝑖 ++)
     select the machine β„Ž that has the least completion time in all machines
     select the job 𝐽 β„Ž that has the least normal time from 𝑁
      𝑆 β„Ž = 𝑆 β„Ž βˆͺ { 𝐽 β„Ž }
      𝐢 m a c ( β„Ž ) = 𝐢 m a c ( β„Ž ) + π‘Ž ( 𝐽 β„Ž )
      𝐢 j o b ( 𝐽 β„Ž ) = 𝐢 m a c ( β„Ž )
     delete job 𝐽 β„Ž from 𝑁
   end for
   for ( 𝑗 = π‘š + 1 ; 𝑗 ≀ 𝑛 ;    𝑗 ++)
    select the machine 𝑓 that has the least completion time in all machines
    if ( 𝐢 m a c ( 𝑓 ) > m a x { 𝑑 ( 𝐽 π‘Ÿ ) , ( 𝐽 π‘Ÿ ∈ 𝑁 ) }       % tardy jobs are sequenced in the
                      nondecreasing order of π‘Ž 𝑖 + 𝑏 𝑖
     select the job 𝐽 𝑓 with the smallest π‘Ž ( 𝐽 𝑓 ) + 𝑏 ( 𝐽 𝑓 ) from 𝑁
      𝑆 𝑓 = 𝑆 𝑓 βˆͺ { 𝐽 𝑓 }
      𝐢 m a c ( 𝑓 ) = 𝐢 m a c ( 𝑓 ) + π‘Ž ( 𝐽 𝑓 ) + 𝑏 ( 𝐽 𝑓 )
      𝐢 j o b ( 𝐽 𝑓 ) = 𝐢 m a c ( 𝑓 )
     delete job 𝐽 𝑓 from 𝑁
    else                 % arrange the jobs in a ascending
                       order of the weight of combination
     set 𝑁 ξ…ž = { 𝑑 ( 𝐽 π‘Ÿ ) β‰₯ 𝐢 m a c ( 𝑓 ) , ( 𝐽 π‘Ÿ ∈ 𝑁 ) }
     select job 𝐽 𝑓   with the smallest πœ” 1 Γ— π‘Ž ( 𝐽 𝑓 ) + πœ” 2 Γ— 𝑑 ( 𝐽 𝑓 ) βˆ’ πœ” 3 Γ— 𝑏 ( 𝐽 𝑓 )    f r o m    𝑁 ξ…ž
      𝑆 𝑓 = 𝑆 𝑓 βˆͺ { 𝐽 𝑓 }
      𝐢 m a c ( 𝑓 ) = 𝐢 m a c ( 𝑓 ) + π‘Ž ( 𝐽 𝑓 )
      𝐢 j o b ( 𝐽 𝑓 ) = 𝐢 m a c ( 𝑓 )
     delete job 𝐽 𝑓 from 𝑁
    end if
   end for
    𝑇 𝐢 _ t e m p = s u m { 𝐢 j o b ( 𝑖 ) = 0 ,  for   𝑖 = 1 , … , 𝑛 }
   if   𝑇 𝐢 _ t e m p < 𝑇 𝐢              % update the scheme 𝑆 _ π‘œ 𝑝 𝑑 and the
                       assisted completion time 𝑇 𝐢
     𝑇 𝐢 = 𝑇 𝐢 _ t e m p
     𝑆 _ π‘œ 𝑝 𝑑 = 𝑆
   end if
  end for
end for
End
Algorithm 1: Procedure of MWCSA.