The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Fmincon: nonlinear binary problem
Replies: 10   Last Post: Apr 12, 2013 7:07 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]

Posts: 1,717
Registered: 11/8/10
Re: Fmincon: nonlinear binary problem
Posted: Apr 12, 2013 2:58 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Anna" wrote in message <kk64qb$2ig$>...
> I was just thinking that all these 3 constraints can be written as one
> x_ik+x_jk>=2*z_ijk, right?

This condition does not exclude the case that z_ijk=0 although both x_ik and x_jk are equal to 1. So z_ijk is not equal to x_ik*x_jk. It depends on your objective function if z_ijk will automatically be chosen to be 1 if x_ik=1 and x_jk = 1.

> "Torsten" wrote in message <kk60l8$l9i$>...
> > Because you substitute x_ik*x_jk = min(x_ik,x_jk) , I think you will need z_ijk:
> > z_ijk <= x_ik
> > z_ijk <= x_jk
> > z_ijk >= x_ik + x_jk - 1

> Good point Torsten. Theoretically, I would need to index z over k but from other constraints I also know that there may be at most one k for which z_ijk=1 and I don't need to know the detailed information which k it is, but only the indication whether it happens at all. Would indexing z_ij be correct in that case? It's important to me to limit the size of the variables as well.

I don't think that this is possible. Imagine there are indices k1 and k2 such that, for fixed i and j, x_ik1*x_jk1 = 1 and x_ik2*x_jk2 = 0. Then, if you only introduce z_ij, your problem becomes infeasible.
To save some variables, note that x_ik*x_jk = x_jk*x_ik. Thus z_ijk = z_jik.

> Regards,
> Anna

Best wishes

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2017. All Rights Reserved.