Хорошо, у меня есть два бита псевдокода, которые необходимо преобразовать в код Java, за исключением того, что псевдо не очень хорошо, и я вряд ли хорош, даже когда это хорошо. В любом случае, я надеялся, что кто-то может помочь.
Вот первый бит псевдокода:
- Создайте случайное целое число p в диапазоне от 0 до n-1.
- Создайте пустую новую строку скажемx.
- Копировать из элементов 0 в p-1 из scasol в x.
- Копировать измененную версию позиции p строки scasol в x.
- Копировать из p +От 1 до n-1 от scasol до x.
- Установите для scasol значение x.
И вот код, который у меня есть для этого (я в основном сделал первыйдва шага, но я застрял после этого):
public void SmallChange()
{
Random rand = new Random();
rand.setSeed(System.currentTimeMillis());
int n = scasol.length();
int p = Math.abs(rand.nextInt() % n);
String x;
if(n<0){
}
}
Вот второй кусок кода, который я не могу преобразовать в Java (я еще ничего не сделал для этого, так как я полностью озадачен):
- Нам нужно добавить цикл For, который выполняет итерацию для указанного количества итераций.
- Нам нужно создать начальное случайное решение размера n.
- Нам нужно оценить пригодность нашего текущего решения в цикле.
- Нам нужно скопировать текущее решение (скажем, oldsol).
- МыСделайте небольшое изменение в текущем решении и оцените пригодность для другой переменной.
- Если новая пригодность хуже старой, мы копируем oldsol в наше текущее решение.
- ПослеПоскольку цикл завершен, мы возвращаем текущее решение.
Первая проблема состоит в том, чтобы завершить небольшое изменение, в то время как вторая заключается в создании алгоритма скалолазания по случайной мутации, но да, застрявший - не то слово.Я надеюсь, что кто-то может помочь, я был бы очень признателен за любую помощь, так как я пытался сделать это в течение нескольких дней!