【问题标题】:I want the demand to be increased byt one only when battery energy reaches a certain value我希望只有当电池能量达到一定值时需求才增加一
【发布时间】:2020-04-13 13:28:05
【问题描述】:
globals [ demand1 stimer energy_c_evehicle1 energy_b_evehicle1 scaling_factor]
breed[endusers1 enduser1]
to setup
  clear-all
  reset-timer
  reset-ticks
  set stimer 0
  world_scaling
  create-clusters
create-enddistributor
  dec_timer
   set energy_b_evehicle1 5 * 1.56

to create-clusters
   ask patches with [pxcor <= -70 and  pycor <= 30 and pycor > 20]   [set pcolor green]
  ask patches with [pxcor = -70 and pycor = 25] [set plabel "cluster 1"]
end

to  create-enddistributor
  ask patches with [pxcor = -69 and pycor = 25] [set pcolor brown]
end

to world_scaling
  set scaling_factor (world-width / (world_scale * 1000)) ;; patches per meter
end



to create_endusers1
  create-endusers1 numcluster1
  [
    move-to one-of patches with [ pcolor = green ]
    set color white
    set shape "triangle"
    set size 2
    ]
end
to call_dist1
  foreach sort endusers1 [ ?1 ->
    ask ?1
    [

     set demand1 demand1 + 1

    ]
  ]
end

to calculate_endusers1

    every 1 [ ask endusers1[ set energy_c_evehicle1  avgspeed_evehicle * 0.147]];  each evehicle consumes
    every 1 [ set energy_b_evehicle1  energy_b_evehicle1 - energy_c_evehicle1]; energy left in battery
                                                                  ; each battery= 1.56kWh, 5 such battery needed
end
to demand_battery
 ask endusers1
  [if energy_b_evehicle1 < 1.56 [call_dist1]]
end
to dec_timer
  every 1
  [
   set stimer stimer + 1
  ]
end

to-report timer-expired?
   report ( stimer >= 24 )

end


to go

  calculate_endusers1
 demand_battery
  dec_timer

  tick

if  timer-expired? [ stop]
end

在我的模拟中,我正在建造一座太阳能发电厂,如果energy _b _evehicle1

【问题讨论】:

  • 在阅读您的代码时,我有点困惑。每个最终用户1都应该有自己的电池吗?我们的代码中没有,但您的 cmets 建议他们应该这样做。
  • 是的,每个最终用户 1 都将获得一块电池以供使用。
  • 那么,您的哪些变量指的是单个电池?我假设energy_c_evehicle1energy_b_evehicle1。还有其他人吗?

标签: netlogo turtle-graphics


【解决方案1】:

我将不得不在这里对您的模型结构做出一些假设。首先,energy_c_evehicle1energy_b_evehicle1demand1 似乎是引用每个endusers1 电池的变量。因此,它们应该被定义为endusers1-own 变量而不是全局变量。 (作为全局变量,每个enduser1 都在使用同一块电池。)

endusers1-own [
  energy_c_evehicle1
  energy_b_evehicle1
  demand1
]

energy_b_evehicle1 的初始化将从setup 移动到create_endusers1

to create_endusers1
  create-endusers1 numcluster1 [
    move-to one-of patches with [ pcolor = green ]
    set color white
    set shape "triangle"
    set size 2
    set energy_b_evehicle1 5 * 1.56
  ]
end

现在每个最终用户 1 都将使用自己的电池和需求。您可以进行这些更改,看看这会如何影响您的模型的行为。

另一个观察:在demand_battery 中,您要求每个最终用户1 到call_dist1。但是在call_dist1 中,您要求每个最终用户1 增加她的需求。因此每个 enduser1 都要求每个 enduser1 增加她的需求,所以每个 enduser1 的需求将增加 numcluster1 次。我怀疑那是你想要的。 demand_battery应该是

to demand_battery
  ask endusers1
  [if energy_b_evehicle1 < 1.56 [set demand1 demand1 + 1]]
end

然后,每个最终用户 1 将只检查自己的电池并在满足条件时增加自己的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多