- if (src_wifi_link != nullptr)
- get_maxmin_system()->expand(src_wifi_link->get_constraint(), action->get_variable(),
- 1.0 / src_wifi_link->get_host_rate(src));
- if (dst_wifi_link != nullptr)
- get_maxmin_system()->expand(dst_wifi_link->get_constraint(), action->get_variable(),
- 1.0 / dst_wifi_link->get_host_rate(dst));
+ if (src_wifi_link != nullptr) {
+ if (src_wifi_link->get_host_rate(src) > 0)
+ get_maxmin_system()->expand(src_wifi_link->get_constraint(), action->get_variable(),
+ 1.0 / src_wifi_link->get_host_rate(src));
+ else {
+ get_maxmin_system()->update_variable_penalty(action->get_variable(), 0);
+ }
+ }
+
+ if (dst_wifi_link != nullptr) {
+ if (dst_wifi_link->get_host_rate(dst) > 0)
+ get_maxmin_system()->expand(dst_wifi_link->get_constraint(), action->get_variable(),
+ 1.0 / dst_wifi_link->get_host_rate(dst));
+ else {
+ get_maxmin_system()->update_variable_penalty(action->get_variable(), 0);
+ }
+ }