Linear programing, objective function. variable depending on the sign of another variable
I think it's cleaner to define two variables that represent the positive and negative parts of Si. Call them Si1 (= positive part) and Si2 (= negative part). 

Si1 - Si2 = Si
Si1, Si2 &gt;= 0




Probably you will also need constraints that say that if Si &lt; 0 then Si1 must equal 0, and if Si &gt; 0 then Si2 must equal 0. Introduce an additional binary variable y that equals 1 if Si &gt; 0, equals 0 if Si &lt; 0, and could equal either if Si = 0:

-M * (1 - y) &lt;= Si
 M * y &gt;= Si


where M is a large constant.
Then require Si1 = 0 if y = 0 and Si2 = 0 if y = 1:

Si1 &lt;= M * y
Si2 &lt;= M * (1 - y)


Then set your objective function to minimize 100 * Si1 + 200 * Si2. 



Note: If both Si1 and Si2 have positive coefficients in the objective function, and the objective is a minimization, then you do not need the stuff after the divider line. The two constraints before the line are sufficient, because we will always want to set Si1 and Si2 as small as possible, which means setting one of them to 0.