# Transition from Mathematica to SageMath... I need help with a minimize function with several constraints

Hi !

Due to the high cost of the Mathematica license, I would like to use SageMath. However, getting started is not easy and I would need help with my first program.

Here is the current Mathematica program:

S = 2000;Cp = 1;Ch = 0.1;Cs = 5;Subscript[U, max] = 16*8;Subscript[U, min] = 0;\[CapitalDelta]t = 30;H = 12;
demande = {9786, 15159, 12805, 12758, 13003, 6775, 8585, 9612, 10797, 7261, 14946, 7359};
Table[Subscript[d, k] = demande[[k]], {k, 1, H}];
S[k_] := S[k - 1] + U[k] \[CapitalDelta]t - Subscript[d, k];
FOprod[k_] := Ch \[CapitalDelta]t (Max[0, S[k - 1]] + (U[k] \[CapitalDelta]t)/2) - Cs Min[0, S[k]] + Cp U[k] \[CapitalDelta]t
rep = NMinimize[{\!$\*UnderoverscriptBox[$$\[Sum]$, $k = 1$, $H$]$FOprod[k]$$$, Table[Subscript[U, min] <= U[k] <= n Subscript[U, max] && U[k] \[Element] Integers, {k, 1, H}]}, Table[U[k], {k, 1, H}],  MaxIterations -> 2000]

*Result :* {323450., {U -> 260, U -> 505, U -> 427, U -> 425, U -> 433, U -> 226, U -> 286, U -> 321, U -> 360, U -> 242, U -> 498, U -> 245}}


With SageMath, it's hard (for me) to obtain the same program... Should I use the function sage.numerical.optimize.minimize_constrained?

Here is the beginning of the program but I think the last two instructions are already wrong.

k=var('k')
list1 = [False for j in range(6)]; list1=2000;
print list1
Cp = 1; Ch = 0.1; Cs = 5; Umax = 16*8; Umin = 0;  Deltat = 30;H = 12;
demande = [9786, 15159, 12805, 12758, 13003, 6775, 8585, 9612, 10797, 7261, 14946, 7359]; demande
S(k)=S[k-1] + U[k] * Deltat - demande[k]; 'It is not correct but...'
FOprod(k) = Ch Deltat (max[0, S[k - 1]] + (U[k] Deltat)/2) - Cs min[0, S[k]] + Cp U[k] Deltat 'It is not correct but...'
...


Best regards.

edit retag close merge delete

## Comments

1

Please describe in words what the program should do. (Not all sage users have an immediate understanding of the Mathematica syntax. And a guess of the specific problem to be solved.) Best, please isolate a similar minimal example, so that a solution for this minimal example would lead to one for the needed situation (by adding more variables and conditions).