Вот мои коды, написанные в Cloudsim для планирования виртуальных машин на подходящие хосты. Я расширил класс VmAllocationPolicyAbstract
. Однако, когда я запустил его, я получил следующую ошибку в консоли: «подходящие хосты не найдены ни в одном доступном центре обработки данных».
package org.cloudbus.cloudsim.allocationpolicies;
import org.cloudbus.cloudsim.hosts.Host;
import org.cloudbus.cloudsim.vms.Vm;
import java.awt.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
public class VmAllocationPolicyMrfs extends VmAllocationPolicyAbstract {
ArrayList<Vm> mylist = new ArrayList<Vm>();
private final Map<String, Host> vm_table = new HashMap<String, Host>();
Host host;
public boolean allocateHostForVm(Vm vm) {
if(this.vm_table.containsKey(vm.getUid())) {
return true;
}
boolean vm_allocated = false;
ArrayList<Vm> myvm = new ArrayList<Vm>();
double dominantcpu = 0.0;
double dominantram = 0.0;
Map<String, Double> dominantcpulist = new HashMap<String, Double>();
Map<String, Double> dominantramlist = new HashMap<String, Double>();
Map<String, Double> requestedCpu = new HashMap<String, Double>();
Map<String, Double> requestedRam = new HashMap<String, Double>();
for(int i = 0; i<=getHostList().size(); i++) {
for(Vm vm1:myvm) {
double cpurequest = vm1.getCurrentRequestedTotalMips();
double ramrequest = vm1.getCurrentRequestedRam();
if (cpurequest<ramrequest && host != null) {
dominantram = ramrequest;
dominantramlist.put(vm1.getUid(),dominantram);
vm_allocated = this.allocateHostForVm(vm1, host);
}
else if(cpurequest>ramrequest) {
dominantcpu = cpurequest;
dominantcpulist.put(vm1.getUid(), dominantcpu);
vm_allocated = this.allocateHostForVm(vm1, host);
}
}
}
return vm_allocated;
}
}
Как я могу исправить эту проблему?