[gecode-users] Using AFC in Gecode 4

Kish Shen kisshen at cisco.com
Tue Jul 9 19:08:57 CEST 2013


Hi Christian,

Thanks for your help!

On 09/07/2013 14:59, Christian Schulte wrote:

> The afc() member function now requires a space argument, see:
> 	
> http://www.gecode.org/doc-latest/reference/classGecode_1_1IntVar-members.htm
> l

Thanks. I have added this, and it now compiles.

This probably reflects my unfamiliarity with C++, but I did look at the 
reference documentation for IntVar, and found that afc() was not there, 
as it is in VarImpVar<int:IntVarImp>, and I didn't know I should look 
somewhere other than the IntVar section.

> Before using afc, you have to call
> 	space.afc_decay(d)
> for some decay value to enable support for afc (if not doing that, things
> will go kaboom). This method also changes the afc-decay for all variables.
>

I assume this only has to be done with the first space I create, and not 
any subsequent clones of the space?

I tried adding the afc_decay(1U) call just after the first time a space 
is created. The space I use is of class GecodeSpace, and I get an error

void Gecode::Space::afc_decay(double) is private within this context

the code I have is essentially:

GecodeSpace* solver;
solver = new GecodeSpace();
solver->afc_decay(1U);

Do I need to do something in the definition of GecodeSpace to make 
afc_decay() public? (I guess this is again my unfamiliarity with C++)


Finally, as I mentioned in my previous message, I got the impression 
from reading the MPG (section 8.5.2, Selection using accumulated failure 
count), that you need to create a IntAFC object on an integer variable 
array in order to use AFC. Did I miss something in this section, or 
should the above usage of AFC be mentioned in the section?

Thanks and cheers,

Kish




More information about the users mailing list