पायथन 2 + PySCIPOpt , 267 बाइट्स
from pyscipopt import*
R=input()
m=Model()
V,C=m.addVar,m.addCons
a,b,c=V(),V(),V()
m.setObjective(c)
C(a*b<=c)
P=[]
for r in R:
x,y=V(),V();C(r<=x);C(x<=a-r);C(r<=y);C(y<=b-r)
for u,v,s in P:C((x-u)**2+(y-v)**2>=(r+s)**2)
P+=(x,y,r),
m.optimize()
m.printBestSol()
यह काम किस प्रकार करता है
इस प्रकार हम इस समस्या को लिखें: कम से कम ग चर से अधिक एक , ख , ग , एक्स 1 , y 1 , ..., एक्स एन , y n , जहां
- अब ≤ ग ;
- आर मैं ≤ एक्स मैं ≤ एक - r मैं और आर मैं ≤ y मैं ≤ ख - y मैं , 1 ≤ के लिए मैं ≤ n ;
- ( एक्स मैं - एक्स जे ) 2 + ( y मैं - y जे ) 2 ≥ ( आर मैं + आर जे ) 2 , 1 ≤ के लिए j < मैं ≤ n ।
जाहिर है, हम इन बाधाओं पर एक बाहरी अनुकूलन पुस्तकालय का उपयोग कर रहे हैं, लेकिन आप उन्हें किसी भी पुराने NMinimize
आशावादी के लिए नहीं खिला सकते हैं - यहां तक कि इन छोटे परीक्षण के मामलों के लिए भी गणितज्ञ स्थानीय मिनिमा पर अटक जाते हैं। यदि आप बाधाओं को करीब से देखते हैं, तो आप देखेंगे कि वे एक द्विघात-विवश द्विघात कार्यक्रम का गठन करते हैं , और एक गैर-उत्तल QCQP के लिए वैश्विक इष्टतम को खोजना NP- कठिन है। इसलिए हमें कुछ अविश्वसनीय रूप से उच्च शक्ति वाले जादू की जरूरत है। मैंने औद्योगिक-शक्ति सॉल्वर SCIP को चुना , जो कि एकमात्र वैश्विक QCQP सॉल्वर है जिसे मैं अकादमिक उपयोग के लिए मुफ्त लाइसेंस के साथ मिल सकता है। खुशी से, यह कुछ बहुत अच्छा पायथन बाइंडिंग है।
इनपुट और आउटपुट
स्टड पर त्रिज्या सूची पास करें, जैसे [5,3,1.5]
। उत्पादन शो objective value:
आयत क्षेत्र, x1
, x2
आयत आयाम, x3
आयत क्षेत्र फिर से, x4
, x5
पहले चक्र केंद्र निर्देशांक, x6
, x7
दूसरा चक्र केंद्र निर्देशांक, आदि
परीक्षण के मामलों
[5,3,1.5]
↦ 157.459666673757
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.04
Solving Nodes : 187
Primal Bound : +1.57459666673757e+02 (9 solutions)
Dual Bound : +1.57459666673757e+02
Gap : 0.00 %
objective value: 157.459666673757
x1 10 (obj:0)
x2 15.7459666673757 (obj:0)
x3 157.459666673757 (obj:1)
x4 5 (obj:0)
x5 5 (obj:0)
x6 7 (obj:0)
x7 12.7459666673757 (obj:0)
x8 1.5 (obj:0)
x9 10.4972522849871 (obj:0)
[9,4,8,2]
↦ 709.061485909243
यह ओपी के समाधान से बेहतर है। सटीक आयाम 18 से 29 + 6 .3 हैं।
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 1.07
Solving Nodes : 4650
Primal Bound : +7.09061485909243e+02 (6 solutions)
Dual Bound : +7.09061485909243e+02
Gap : 0.00 %
objective value: 709.061485909243
x1 18 (obj:0)
x2 39.3923047727357 (obj:0)
x3 709.061485909243 (obj:1)
x4 9 (obj:0)
x5 30.3923047727357 (obj:0)
x6 14 (obj:0)
x7 18.3923048064677 (obj:0)
x8 8 (obj:0)
x9 8 (obj:0)
x10 2 (obj:0)
x11 19.6154311552252 (obj:0)
[18,3,1]
↦ 1295.999999999
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.00
Solving Nodes : 13
Primal Bound : +1.29599999999900e+03 (4 solutions)
Dual Bound : +1.29599999999900e+03
Gap : 0.00 %
objective value: 1295.999999999
x1 35.9999999999722 (obj:0)
x2 36 (obj:0)
x3 1295.999999999 (obj:1)
x4 17.9999999999722 (obj:0)
x5 18 (obj:0)
x6 32.8552571627738 (obj:0)
x7 3 (obj:0)
x8 1 (obj:0)
x9 1 (obj:0)
बोनस के मामले
[1,2,3,4,5]
↦ 230.244214912998
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 401.31
Solving Nodes : 1400341
Primal Bound : +2.30244214912998e+02 (16 solutions)
Dual Bound : +2.30244214912998e+02
Gap : 0.00 %
objective value: 230.244214912998
x1 13.9282031800476 (obj:0)
x2 16.530790960676 (obj:0)
x3 230.244214912998 (obj:1)
x4 1 (obj:0)
x5 9.60188492354373 (obj:0)
x6 11.757778088743 (obj:0)
x7 3.17450418828415 (obj:0)
x8 3 (obj:0)
x9 13.530790960676 (obj:0)
x10 9.92820318004764 (obj:0)
x11 12.530790960676 (obj:0)
x12 5 (obj:0)
x13 5 (obj:0)
[3,4,5,6,7]
↦ 553.918025310597
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 90.28
Solving Nodes : 248281
Primal Bound : +5.53918025310597e+02 (18 solutions)
Dual Bound : +5.53918025310597e+02
Gap : 0.00 %
objective value: 553.918025310597
x1 21.9544511351279 (obj:0)
x2 25.2303290086403 (obj:0)
x3 553.918025310597 (obj:1)
x4 3 (obj:0)
x5 14.4852813557912 (obj:0)
x6 4.87198593295855 (obj:0)
x7 21.2303290086403 (obj:0)
x8 16.9544511351279 (obj:0)
x9 5 (obj:0)
x10 6 (obj:0)
x11 6 (obj:0)
x12 14.9544511351279 (obj:0)
x13 16.8321595389753 (obj:0)
[3,4,5,6,7,8]
↦ 777.87455544487
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 218.29
Solving Nodes : 551316
Primal Bound : +7.77874555444870e+02 (29 solutions)
Dual Bound : +7.77874555444870e+02
Gap : 0.00 %
objective value: 777.87455544487
x1 29.9626413867546 (obj:0)
x2 25.9614813640722 (obj:0)
x3 777.87455544487 (obj:1)
x4 13.7325948669477 (obj:0)
x5 15.3563780595534 (obj:0)
x6 16.0504838821134 (obj:0)
x7 21.9614813640722 (obj:0)
x8 24.9626413867546 (obj:0)
x9 20.7071098175984 (obj:0)
x10 6 (obj:0)
x11 19.9614813640722 (obj:0)
x12 7 (obj:0)
x13 7 (obj:0)
x14 21.9626413867546 (obj:0)
x15 8.05799919177801 (obj:0)