jukaukor

EllipsoidienEtaisyys.jl

Oct 14th, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. using JuMP, Ipopt
  2. # Julia-kielella epälineaarista optimointia
  3. # kahden ellipsin kehien välinen minimi -ja maksimietäisyydet
  4. # Juhani Kaukoranta 12.10.2022
  5. # Ajetaan komennoillalla EllipsitMin() ja EllipsitMax()
  6.  
  7. function EllipsoiditMin() # ellipsien kehien minimietäisyys
  8. model = Model(Ipopt.Optimizer)
  9. set_silent(model)
  10. @variable(model, x1,start=1.0)
  11. @variable(model, y1,start=2.0)
  12. @variable(model, z1,start=3.0)
  13. @variable(model, x2,start=3.0)
  14. @variable(model, y2,start=4.0)
  15. @variable(model, z2,start=5.0)
  16. @NLobjective(model, Min, sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)) # minimoidaan etäisyys
  17. @NLconstraint(model, cons1, (x1-5)^2/16+(y1-2)^2/9+(z1-1)^2/4==1)
  18. @NLconstraint(model, cons2, (x2+2)^2/4+(y2-1)^2/5+(z2-1)^2/7==1)
  19. optimize!(model)
  20. print(model)
  21. println("Kehien minimietäisyys = ", objective_value(model)) # tulostaa minimin
  22. println("(x1,y1,z1) = (",value(x1)," , ",value(y1)," , ",value(z1),")")
  23. println("(x2,y2,z2) = (",value(x2)," , ",value(y2)," , ",value(z2),")")
  24. end
  25.  
  26. function EllipsoiditMax() # ellipsien kehien maksimietäisyys
  27. model = Model(Ipopt.Optimizer)
  28. set_silent(model)
  29. @variable(model, x1,start=1.0)
  30. @variable(model, y1,start=2.0)
  31. @variable(model, z1,start=3.0)
  32. @variable(model, x2,start=3.0)
  33. @variable(model, y2,start=4.0)
  34. @variable(model, z2,start=5.0)
  35. @NLobjective(model, Max, sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)) # minimoidaan etäisyys
  36. @NLconstraint(model, cons1, (x1-5)^2/16+(y1-2)^2/9+(z1-1)^2/4==1)
  37. @NLconstraint(model, cons2, (x2+2)^2/4+(y2-1)^2/5+(z2-1)^2/7==1)
  38. optimize!(model)
  39. print(model)
  40. println("Kehien maksimimietäisyys = ", objective_value(model)) # tulostaa maksimin
  41. println("(x1,y1,z1) = (",value(x1)," , ",value(y1)," , ",value(z1),")")
  42. println("(x2,y2,z2) = (",value(x2)," , ",value(y2)," , ",value(y1),")")
  43. end
Advertisement
Add Comment
Please, Sign In to add comment