| |||||||||||
Non-linear constraints over real-valued decision variables Description Non-linear constraints may be defined over discrete (finite domain) or continuous (floating point interval) variables, or combinations of both. Further explanation of this example: 'Xpress Kalis Mosel Reference Manual'
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
nlinctr.mos (!**************************************************************** CP example problems =================== file nlinctr.mos ```````````````` Definition and use of non-linear constraints. *** This model cannot be run with a Community Licence *** (c) 2008 Artelys S.A. and Fair Isaac Corporation Creation: 2005, rev. Mar. 2013 *****************************************************************!) model "Non-linear constraints" uses "kalis" parameters PREC = 1e-10 end-parameters ! Setting default precision of continuous variables setparam("KALIS_DEFAULT_PRECISION_VALUE", PREC) declarations ISET = 1..8 x: array(ISET) of cpfloatvar end-declarations ! Setting variable names forall(i in ISET) x(i).name:= "x"+i ! Setting variable bounds forall(i in ISET) do x(i) >= -100; x(i) <= 100 end-do ! Defining and posting non-linear constraints x(1) + x(2)*(x(1)+x(3)) + x(4)*(x(3)+x(5)) + x(6)*(x(5)+x(7)) - (x(8)*((1/8)-x(7))) = 0 x(2) + x(3)*(x(1)+x(5)) + x(4)*(x(2)+x(6)) + x(5)*x(7) - (x(8)*((2/8)-x(6))) = 0 x(3)*(1 + x(6)) + x(4)*(x(1)+x(7)) + x(2)*x(5) - (x(8)*((3/8)-x(5))) = 0 x(4) + x(1)*x(5) + x(2)*x(6) + x(3)*x(7) - (x(8)*((4/8)-x(4))) = 0 x(5) + x(1)*x(6) + x(2)*x(7) - (x(8)*((5/8)-x(3))) = 0 x(6) + x(1)*x(7) - (x(8)*((6/8)-x(2))) = 0 x(7) - (x(8)*((7/8)-x(1))) = 0 sum(i in ISET) x(i) = -1 ! Set the enumeration strategy cp_set_branching(split_domain(KALIS_WIDEST_DOMAIN, KALIS_MIDDLE_VALUE, x, true, 0)) ! Find one solution if cp_find_next_sol then writeln("Solution number 1" ) cp_show_sol cp_show_stats end-if end-model | |||||||||||
© Copyright 2024 Fair Isaac Corporation. |