Dear,

I want to do a cycle for. I have two boundary values and I want to consider values between these boundaries. Then for these considered values I want to solve the Min_Total_Costs and have the values of Total Costs for the considered values. How can I write this cycle for?

How can define set, ect?

For now I wrote this code

for e| (epsilon_e(e))>epsilonl and (epsilon_e(e))

CO2_ec:=epsilon_e(e);

solve Min_Total_Costs;

Total_Costs_e(e):=Total_Costs;

endfor;

with e the index of a set ep and epsilon_e(e) an integer variable.

But it seems that it is not working.

Can you help me?

Thanks.

# writing for loop

If you have two boundary integer values { P_Lower = 1, P_Upper = 10 }, you could define a set:

and you could use this set to loop in:

I dind't understand the relation between your integer variable and this CYCLE, but you can add a constraint (variable = cycle) or you can try to use the variable attribute "range" instead.

Hope it helps!

**code:**

S_Cycles

SubsetOf: Integers

Index: CYCLE

Definition: { (P_Lower+1) .. (P_Upper-1) }

and you could use this set to loop in:

**code:**

for CYCLE do

solve Min_Total_Costs;

P_TotalCost(CYCLE) := Min_Total_Costs.Objective;

endfor;

I dind't understand the relation between your integer variable and this CYCLE, but you can add a constraint (variable = cycle) or you can try to use the variable attribute "range" instead.

Hope it helps!

Dear @mateusarakawa ,

thanks for your response.

Can you explain better this:

I dind't understand the relation between your integer variable and this CYCLE, but you can add a constraint (variable = cycle) or you can try to use the variable attribute "range" instead.

Best

GL

thanks for your response.

Can you explain better this:

I dind't understand the relation between your integer variable and this CYCLE, but you can add a constraint (variable = cycle) or you can try to use the variable attribute "range" instead.

Best

GL

Hi, @graleo ! I didn't understand the purpose of the loop.

For instance, for each iteration what should change within your mathematical model? A variable value?

For instance, for each iteration what should change within your mathematical model? A variable value?

Hi @mateusarakawa ,

I want to change the value of cycle so this value is used to Min Total Cost.

I want to have and plot the values of Total Costs.

How can I do?

Best

GL

I want to change the value of cycle so this value is used to Min Total Cost.

I want to have and plot the values of Total Costs.

How can I do?

Best

GL

Hi @mateusarakawa

Is it necessary to write something in the MainTermination and PreMainTermination section?

Thanks

GL

Is it necessary to write something in the MainTermination and PreMainTermination section?

Thanks

GL

Looks like you want to vary the value of CO2_ec between the two boundary values and solve the math model. The number of cycles in this loop depends on the difference between the boundary values and by how much you want to increment in each step. Using a while loop will give you more flexibility here. What you will need to do is create a set a below

**code:**

S_Cycles

Index: CYCLE

Parameter: ep_Cycle

Declare parameters - epsilon, increment, p_TotalCost(CYCLE)

Now write your procedure.

**code:**

empty s_Cycles;

epsilon := boundary_low;

!initializing epsilon at the lower boundary value

while epsilon <= boundary_high do

SetElementAdd(

Setname : S_Cycles ,

Elempar : ep_Cycle ,

Newname : FormatString("Cycle-%n", loopcount));

!Using predeclared function SetElementAdd to create cycles as we go. This removes need to calculate number of cycles based on difference and increment

CO2_ec := epsilon;

solve Min_Total_Costs;

P_TotalCost(ep_Cycle) := Min_Total_Costs.Objective;

!you can also use P_TotalCost(ep_Cycle) := Total_Costs;

epsilon += increment;

!increasing the epsilon value

endwhile;

You do not need to write anything in MainTermination or PreMainTermination.

Hope this helps.

dear @mohansx ,

thanks for your response. I solved it also with the cycle for

for e do

epsilon_e(e):=epsilonlow+e*(epsilonhigh-epsilonlow)/10;

solve Min_Total_Costs;

Total_Costs_e(e):=Total_Costs;

endfor;

where e is a set (integer number from 1 to 10). What do you think?

In your code what is the meaning of

Best

thanks for your response. I solved it also with the cycle for

for e do

epsilon_e(e):=epsilonlow+e*(epsilonhigh-epsilonlow)/10;

solve Min_Total_Costs;

Total_Costs_e(e):=Total_Costs;

endfor;

where e is a set (integer number from 1 to 10). What do you think?

In your code what is the meaning of

**code:**

SetElementAdd(

Setname : S_Cycles ,

Elempar : ep_Cycle ,

Newname : FormatString("Cycle-%n", loopcount));

Best

Using SetElementAdd, I am dynamically creating the elements in the set S_Cycles. In your approach, you decided that you will have 10 cycles (as e is a set from 1 to 10). In my approach, instead of deciding on the 10 cycles, I decided on how much should epsilon be increased in each iteration, and by using SetElementAdd, I am creating those elements as I go.

### Reply

## Sign up

Already have an account? Login

**Please use your business or academic e-mail address to register**

## Login to the community

No account yet? Create an account

Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.