211
211
" var balls: [Ball]\n " ,
212
212
" \n " ,
213
213
" /// Minimum ball distance (over all previous states) to each target.\n " ,
214
- " var minDistanceToTarget : [Float]\n " ,
214
+ " var targetDistances : [Float]\n " ,
215
215
" \n " ,
216
216
" /// Amount of time simulation has been running.\n " ,
217
217
" var t: Float\n " ,
225
225
" @differentiable\n " ,
226
226
" init(\n " ,
227
227
" balls: [Ball],\n " ,
228
- " minDistanceToTarget : [Float],\n " ,
228
+ " targetDistances : [Float],\n " ,
229
229
" t: Float,\n " ,
230
230
" targets: [Vec2],\n " ,
231
231
" walls: [Wall]\n " ,
232
232
" ) {\n " ,
233
233
" self.balls = balls\n " ,
234
- " self.minDistanceToTarget = minDistanceToTarget \n " ,
234
+ " self.targetDistances = targetDistances \n " ,
235
235
" self.t = t\n " ,
236
236
" self.targets = targets\n " ,
237
237
" self.walls = walls\n " ,
257
257
" init(balls: [Ball], targets: [Vec2], walls: [Wall]) {\n " ,
258
258
" self.init(\n " ,
259
259
" balls: balls,\n " ,
260
- " minDistanceToTarget : Array(repeating: Float.infinity, count: withoutDerivative(at: targets.count)),\n " ,
260
+ " targetDistances : Array(repeating: Float.infinity, count: withoutDerivative(at: targets.count)),\n " ,
261
261
" t: 0,\n " ,
262
262
" targets: targets,\n " ,
263
263
" walls: walls\n " ,
325
325
" let distTo2 = (updatedBalls[1].position - targets[i]).magnitude\n " ,
326
326
" var curTargetDistance = distTo1 < distTo2 ? distTo1 : distTo2\n " ,
327
327
" if curTargetDistance < 2 * Ball.ballRadius { curTargetDistance = 2 * Ball.ballRadius }\n " ,
328
- " if curTargetDistance < minDistanceToTarget [i] {\n " ,
328
+ " if curTargetDistance < targetDistances [i] {\n " ,
329
329
" newMinTargetDistance = newMinTargetDistance + [curTargetDistance]\n " ,
330
330
" } else {\n " ,
331
- " newMinTargetDistance = newMinTargetDistance + [minDistanceToTarget [i]]\n " ,
331
+ " newMinTargetDistance = newMinTargetDistance + [targetDistances [i]]\n " ,
332
332
" }\n " ,
333
333
" }\n " ,
334
334
" \n " ,
335
335
" return World(\n " ,
336
336
" balls: updatedBalls,\n " ,
337
- " minDistanceToTarget : newMinTargetDistance.withDerivative { [count = withoutDerivative(at: newMinTargetDistance.count)] (d: inout Array<Float>.DifferentiableView) -> () in\n " ,
337
+ " targetDistances : newMinTargetDistance.withDerivative { [count = withoutDerivative(at: newMinTargetDistance.count)] (d: inout Array<Float>.DifferentiableView) -> () in\n " ,
338
338
" if d.base.count == 0 {\n " ,
339
339
" d = Array.DifferentiableView(Array(repeating: 0, count: count))\n " ,
340
340
" }\n " ,
501
501
" r += animate(attributeName: \" cy\" , from: String(position.y), to: String(nextPosition.y))\n " ,
502
502
" }\n " ,
503
503
" \n " ,
504
- " for (targetIndex, (targetDistance, nextTargetDistance)) in zip(state.minDistanceToTarget , nextState.minDistanceToTarget ).enumerated() {\n " ,
504
+ " for (targetIndex, (targetDistance, nextTargetDistance)) in zip(state.targetDistances , nextState.targetDistances ).enumerated() {\n " ,
505
505
" if targetDistance > 2 && nextTargetDistance <= 2 {\n " ,
506
506
" r += \"\"\"\n " ,
507
507
" <animate\n " ,
595
595
"metadata" : {
596
596
"id" : " Ht1A90N00Nzv" ,
597
597
"colab_type" : " code" ,
598
- "outputId" : " afe4cc52-c198-4ced-9338-cfa7f70c523f " ,
598
+ "outputId" : " 9a4bfb71-72d7-42a2-c792-c247df422930 " ,
599
599
"colab" : {
600
600
"base_uri" : " https://localhost:8080/" ,
601
601
"height" : 245
605
605
" var v0 = Vector2(20, 0.01)\n " ,
606
606
" drawSimulation(ball1InitialVelocity: v0)"
607
607
],
608
- "execution_count" : 73 ,
608
+ "execution_count" : 13 ,
609
609
"outputs" : [
610
610
{
611
611
"output_type" : " display_data" ,
10562
10562
" let finalState = simulate(initialState)\n " ,
10563
10563
" \n " ,
10564
10564
" // Sum the closest approaches to the targets.\n " ,
10565
- " return finalState.minDistanceToTarget .sum()\n " ,
10565
+ " return finalState.targetDistances .sum()\n " ,
10566
10566
" }\n " ,
10567
10567
" \n " ,
10568
10568
" loss(v0)"
10630
10630
],
10631
10631
"execution_count" : 0 ,
10632
10632
"outputs" : []
10633
+ },
10634
+ {
10635
+ "cell_type" : " code" ,
10636
+ "metadata" : {
10637
+ "id" : " NjYQ033qCOKK" ,
10638
+ "colab_type" : " code" ,
10639
+ "colab" : {}
10640
+ },
10641
+ "source" : [
10642
+ " "
10643
+ ],
10644
+ "execution_count" : 0 ,
10645
+ "outputs" : []
10633
10646
}
10634
10647
]
10635
10648
}
0 commit comments