Hi David,

you should read the documentation on FD.plus, FD.sum etc. There are some type problems in your script. FD.plus expects that each of its 3 arguments is a FD variable. You are passing two lists (this is what the error message is about) and one atom (septima_1) to it. Note that variable names start with Uppercase. 'septima_1' is an atom (i.e. a non-integer value).

The easy way to fix this is using what I told you last time: replace

>       {FD.plus SumaVariables7_1 SumaVariables7_2 septima_1}
>       septima_1 =<: 1

with

  {FD.sum {Append SumaVariables7_1 SumaVariables7_2} '=<:' 1}

Your script can also be fixed like this:

for E in 1..1 do
   SumaVariables7_1=for M in 1..Salas collect:Collect do
                          for  W in 1..5  do
                             {Collect X.M.W.1}
                          end
                       end
   SumaVariables7_2=for M in 1..Salas collect:Collect do
                  for  W in 1..5  do
                     {Collect X.M.W.4}
                  end
               end
   Septima_1={FD.decl} %% a variable
in
   {FD.sum {Append SumaVariables7_1 SumaVariables7_2} '=:' Septima_1}
   Septima_1 =<: 1
end

Summing SumaVariables7_1 and SumaVariables7_2 is not possible directly, because each of these is a list of values, not a value (this is why we use FD.sum). Another way of summing these is expressing the sum of SumaVariables7_1 and the sum of SumaVariables7_2 (say, X and Y), and then summing X and Y using FD.plus:
  {FD.sum SumaVariables7_1 '=:' X}
  {FD.sum SumaVariables7_2 '=:' Y}
  {FD.plus X Y Septima_1}

See my previous answer for details.

And maybe the best would be not having lists of values in SumaVariables7_1 and SumaVariables7_2, but rather the respective sums (as the variable names indicate):

for E in 1..1 do
   SumaVariables7_1={FD.sum
                       for M in 1..Salas collect:Collect do
                          for  W in 1..5  do
                             {Collect X.M.W.1}
                          end
                       end
                     '=:'
                    }
   SumaVariables7_2={FD.sum
                     for M in 1..Salas collect:Collect do
                         for  W in 1..5  do
                            {Collect X.M.W.4}
                         end
                     end
                     '=:'
                    }
in
   {FD.plus SumaVariables7_1 SumaVariables7_2} =<: 1
%% or (equivalently):
   {FD.sum [SumaVariables7_1 SumaVariables7_2] '=<:' 1}
end

Cheers,
Filip

David López wrote:
Filip Konvicka wrote:
Hi David,

SumaVariables7_1 is a list, not a tuple (lists look like [1 2 3], tuples
look like 1#2#3). You can concatenate two lists using Append - for example

thanks Filip, buyt i realy do is sum this two list.

attach pdf with the constraint is enclosed.

it wanted to be able to add those two lists for all the period that is
reflected in the set of ordered pairs


I hope thank you very much that you understand to me,


i try with this script:

 %septima restriccion: No deben existir mas de un bloque entre asignaturas w
   for E in 1..1 do
      SumaVariables7_1=for M in 1..Salas collect:Collect do
                          for  W in 1..5  do
                             {Collect X.M.W.1}
                          end
                       end
      SumaVariables7_2=for M in 1..Salas collect:Collect do
                          for  W in 1..5  do
                             {Collect X.M.W.4}
                          end
                       end
   in
      {FD.plus SumaVariables7_1 SumaVariables7_2 septima_1}
      septima_1 =<: 1
   end

but raise this message:

%*************************** type error *************************
%**
%** Expected type: finite domain integer in {0,...,134 217 726}
%** At argument:   1
%** In statement:  {FDP.plus
_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|,,,|,,,
_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|_{0#1}|,,,|,,,
septima_1}
%**
%** Call Stack:
%** procedure 'ForProc' in file
"/home/deibyd/documentos/tesis/mozart-oz/tutorial/memoria_salas.oz",
line 321, column 3, PC = 137180160

thanks for the patience and the answer




_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to