Проблема с балансировкой нагрузки во временной сфере несправедливость всегда 0JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с балансировкой нагрузки во временной сфере несправедливость всегда 0

Сообщение Anonymous »

Моя цель - справедливо распределить курсы для лекторов. Сбалансированная сущность - лектор , а значение нагрузки - это общая продолжительность курсов, назначенных лектору
Это вывод решателя, когда он называет пенализолизированную бигдекимал :

В этой проблеме я получаю значение несправедливости 0, даже если все курсы назначены Faizal или Ahmad. < /p>
Мои вопросы: < /p>
  • Почему LoadBalance :: ecplysIss () < /code> всегда возвращает 0? Мне нужно реализовать свою собственную функцию несправедливости? >? Если мне нужно реализовать функцию справедливости, скажем, средняя продолжительность для лектора, я предполагаю, что мне нужно, чтобы все лекторы были присутствием в LoadBalance :: Loads () , чтобы вычислять средний
Я попробовал chaining .complement () после .groupby () , но, похоже, он запрашивает класс как параметр, который я не совсем уверен, как пройти. -Верд ">@PlanningSolution
public class LecturerCourseBalancing {
@ProblemFactCollectionProperty
@ValueRangeProvider
List lecturers;

@PlanningEntityCollectionProperty
List courses;

@PlanningScore
HardSoftBigDecimalScore score;

public LecturerCourseBalancing() {}

public LecturerCourseBalancing(List lecturers, List courses) {
this.lecturers = lecturers;
this.courses = courses;
}

public List getLecturers() {
return lecturers;
}

public List getCourses() {
return courses;
}

public HardSoftBigDecimalScore getScore() {
return score;
}
}
< /code>
LecturerCourseAssignment (планирование): < /p>
@PlanningEntity
public class LecturerCourseAssignment {
@PlanningVariable
Lecturer lecturer;
Course course;

public LecturerCourseAssignment() {

}

public LecturerCourseAssignment(Course course) {
this.course = course;
}

public void setLecturer(Lecturer lecturer) {
this.lecturer = lecturer;
}

public Lecturer getLecturer() {
return lecturer;
}

public Course getCourse() {
return course;
}

@Override
public String toString() {
return "LecturerCourseAssignment [lecturer=" + lecturer + ", course=" + course + "]";
}
}

< /code>
lecturer.java (wroldfact): < /p>
public class Lecturer {
@PlanningId
String id;
String name;

public Lecturer(String id, String name) {
this.id = id;
this.name = name;
}

public String getId() {
return id;
}

public String getName() {
return name;
}

@Override
public String toString() {
return "Lecturer [id=" + id + ", name=" + name + "]";
}
}
< /code>
course.java:
public class Course {
@PlanningId
String id;

String name;
int duration;

public Course() {}

public Course(String id, String name, int duration) {
this.id = id;
this.name = name;
this.duration = duration;
}

public String getId() {
return id;
}

public int getDuration() {
return duration;
}

public String getName() {
return name;
}

@Override
public String toString() {
return "Course [id=" + id + ", name=" + name + ", duration=" + duration + "]";
}
}

< /code>
Поставщик ограничений: < /p>
public class LecturerCourseBalancingConstraintProvider implements ConstraintProvider {
@Override
public Constraint @NonNull [] defineConstraints(@NonNull ConstraintFactory constraintFactory) {
return new Constraint[] {
fairLecturerCourseAssignment(constraintFactory),
};
}

Constraint fairLecturerCourseAssignment(ConstraintFactory constraintFactory) {
return constraintFactory.forEach(LecturerCourseAssignment.class)
.groupBy(ConstraintCollectors.loadBalance(lca -> lca.getLecturer(), lca -> lca.getCourse().getDuration()))
.penalizeBigDecimal(HardSoftBigDecimalScore.ONE_SOFT, (loadBalance) -> {
System.out.println(loadBalance.loads());
System.out.println(loadBalance.unfairness());
return loadBalance.unfairness();
})
.asConstraint("fairLecturerCourseAssignment");
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... s-always-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»