Manytasking optimization MATP
Manytasking Jmetal代码反向解析1_MATP测试函数集
觉得有用的话,欢迎一起讨论相互学习~Follow Me
- 这是我在写Manytask optimization时的笔记,代码地址可以下载
打开文件夹如下目录,选择benchmark中的任意一个测试函数集,此时我们选择
MATP1
MATP1
package momfo.problems.benchmarks;
import java.io.IOException;
import momfo.core.Problem;
import momfo.core.ProblemSet;
import momfo.problems.base.*;
public class MATP1 {
public static ProblemSet getProblem() throws IOException {
int taskNumber=50;
ProblemSet problemSet = new ProblemSet(taskNumber);
for(int i=1;i<=taskNumber;i++)
problemSet.add(getT(i).get(0));
return problemSet;
}
public static ProblemSet getT(int taskID) throws IOException {
ProblemSet problemSet = new ProblemSet(1);
MMDTLZ prob = new MMDTLZ(2, 50, 1, -100,100);
prob.setGType("sphere");
double[][] matrix = IO.readMatrixFromFile("MData/M1/M1_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S1/S1_"+taskID+".txt");
prob.setRotationMatrix(matrix);
prob.setShiftValues(shiftValues);
((Problem)prob).setName("MATP1-"+taskID);
problemSet.add(prob);
return problemSet;
}
}
int taskNumber=50;
表示MATP1问题设置的任务个数是50,初始化problemSet作为一个容器以承载每一个被初始化后的实际MATP1问题。for(int i=1;i<=taskNumber;i++) problemSet.add(getT(i).get(0));
意味着此时需要关注的是getT
函数,从MMDTLZ prob = new MMDTLZ(2, 50, 1, -100,100); prob.setGType("sphere");
看出MATP_1是一个双目标的问题,并且决策变量个数为50,决策变量最小值为-100,最大值为100,而G函数的类型为
sphere
,而只要是双目标的函数使用的H函数都是circle
```java
// MMDTLZ
if (numberOfObjectives == 2)
hType_ = "circle";
else
hType_ = "sphere";
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191216155508697.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1NTU3MTk=,size_16,color_FFFFFF,t_70)
* **通过**
double[][] matrix = IO.readMatrixFromFile("MData/M1/M1_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S1/S1_"+taskID+".txt");
``* 可知matrix[][]其中保存有旋转函数,根据taskID具有不同的旋转角度,shiftValues则保存了偏移向量,通过不同的旋转函数和偏移向量可以保证MATP问题中的不同任务即使具有相同的帕累托前沿,但是对应的决策变量距离和位置却完全不同。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191216145252251.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM1NTU3MTk=,size_16,color_FFFFFF,t_70) ## 注意在MATP2中仅仅设置G函数的形状为
sphere和
alpha`值1。(后期通关观察得知,alpha值是用于计算cos函数的)
MATP2
public class MATP2 {
public static ProblemSet getProblem() throws IOException {
int taskNumber=50;
ProblemSet problemSet = new ProblemSet(taskNumber);
for(int i=1;i<=taskNumber;i++)
problemSet.add(getT(i).get(0));
return problemSet;
}
public static ProblemSet getT(int taskID) throws IOException {
ProblemSet problemSet = new ProblemSet(1);
MMZDT prob = new MMZDT(50, 1, -100,100);
prob.setGType("mean");
prob.setHType("concave");
double[][] matrix = IO.readMatrixFromFile("MData/M2/M2_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S2/S2_"+taskID+".txt");
prob.setRotationMatrix(matrix);
prob.setShiftValues(shiftValues);
((Problem)prob).setName("MATP2-"+taskID);
problemSet.add(prob);
return problemSet;
}
}
和MATP1问题不同的是MATP2问题设置G函数为mean
,设置H函数为concave
,最终形状为concave
并且是根据ZDT
问题改编的,而不是DTLZ
问题,表示有50个变量,并且K值为1,根据ZDT
问题的默认函数来看,ZDT
问题构造的都是双目标问题。
public MMZDT(int numberOfVariables, int k, double lg, double ug) {
numberOfObjectives_ = 2;
numberOfVariables_ = numberOfVariables;
k_ = k;
gType_ = "sphere";
f1Type_ = "linear";
hType_ = "convex";
MATP3
package momfo.problems.benchmarks;
import java.io.IOException;
import momfo.core.Problem;
import momfo.core.ProblemSet;
import momfo.problems.base.*;
public class MATP3 {
public static ProblemSet getProblem() throws IOException {
int taskNumber=50;
ProblemSet problemSet = new ProblemSet(taskNumber);
for(int i=1;i<=taskNumber;i++)
problemSet.add(getT(i).get(0));
return problemSet;
}
public static ProblemSet getT(int taskID) throws IOException {
ProblemSet problemSet = new ProblemSet(1);
MMZDT prob = new MMZDT(10, 1, -5,5);
prob.setGType("rosenbrock");
prob.setHType("concave");
double[][] matrix = IO.readMatrixFromFile("MData/M3/M3_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S3/S3_"+taskID+".txt");
prob.setRotationMatrix(matrix);
prob.setShiftValues(shiftValues);
((Problem)prob).setName("MATP3-"+taskID);
problemSet.add(prob);
return problemSet;
}
}
和MATP1以及MATP2问题不同的是MATP3问题设置G函数为rosenbrock
,设置H函数为concave
,最终形状为concave
并且是根据ZDT
问题改编的,而不是DTLZ
问题,表示有50个这样的任务,并且K值为1,根据ZDT
问题的默认函数来看,ZDT
问题构造的都是双目标问题,与MATP2问题不同的是使用10个变量,并且变量范围为[-5,5]而不是[-50,50]
MATP4
import java.io.IOException;
import momfo.core.Problem;
import momfo.core.ProblemSet;
import momfo.problems.base.*;
public class MATP4 {
public static ProblemSet getProblem() throws IOException {
int taskNumber=50;
ProblemSet problemSet = new ProblemSet(taskNumber);
for(int i=1;i<=taskNumber;i++)
problemSet.add(getT(i).get(0));
return problemSet;
}
public static ProblemSet getT(int taskID) throws IOException {
ProblemSet problemSet = new ProblemSet(1);
MMDTLZ prob = new MMDTLZ(2, 50, 1, -2,2);
prob.setGType("rastrigin");
double[][] matrix = IO.readMatrixFromFile("MData/M4/M4_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S4/S4_"+taskID+".txt");
prob.setRotationMatrix(matrix);
prob.setShiftValues(shiftValues);
((Problem)prob).setName("MATP4-"+taskID);
problemSet.add(prob);
return problemSet;
}
}
可以看出MATP4
使用的是DTLZ函数其中具有两个目标函数,具有50个决策变量,alpha值为1,上界为2下界为-2.使用的G函数为rastrigin
,使用的H函数为sphere
//MMDTLZ
if (numberOfObjectives == 2)
hType_ = "circle";
else
hType_ = "sphere";
MATP5
package momfo.problems.benchmarks;
import java.io.IOException;
import momfo.core.Problem;
import momfo.core.ProblemSet;
import momfo.problems.base.*;
public class MATP5 {
public static ProblemSet getProblem() throws IOException {
int taskNumber=50;
ProblemSet problemSet = new ProblemSet(taskNumber);
for(int i=1;i<=taskNumber;i++)
problemSet.add(getT(i).get(0));
return problemSet;
}
public static ProblemSet getT(int taskID) throws IOException {
ProblemSet problemSet = new ProblemSet(1);
MMZDT prob = new MMZDT(50, 1, -1,1);
prob.setGType("ackley");
prob.setHType("convex");
double[][] matrix = IO.readMatrixFromFile("MData/M5/M5_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S5/S5_"+taskID+".txt");
prob.setRotationMatrix(matrix);
prob.setShiftValues(shiftValues);
((Problem)prob).setName("MATP5-"+taskID);
problemSet.add(prob);
return problemSet;
}
}
决策变量个数为50,k为1,变量最小范围为-1,变量最大范围为1,G函数为ackley
,H函数为convex
MATP6
package momfo.problems.benchmarks;
import java.io.IOException;
import momfo.core.Problem;
import momfo.core.ProblemSet;
import momfo.problems.base.*;
public class MATP6 {
public static ProblemSet getProblem() throws IOException {
int taskNumber=50;
ProblemSet problemSet = new ProblemSet(taskNumber);
for(int i=1;i<=taskNumber;i++)
problemSet.add(getT(i).get(0));
return problemSet;
}
public static ProblemSet getT(int taskID) throws IOException {
ProblemSet problemSet = new ProblemSet(1);
MMDTLZ prob = new MMDTLZ(2, 50, 1, -50,50);
prob.setGType("griewank");
double[][] matrix = IO.readMatrixFromFile("MData/M6/M6_"+taskID+".txt");
double shiftValues[] = IO.readShiftValuesFromFile("SVData/S6/S6_"+taskID+".txt");
prob.setRotationMatrix(matrix);
prob.setShiftValues(shiftValues);
((Problem)prob).setName("MATP6-"+taskID);
problemSet.add(prob);
return problemSet;
}
}
目标函数2个,50个决策变量,alpha值设置为1,下边界为-50,上边界为50,G函数为griewank
,H函数为circle
MATP算例总结
float[] rgb1 = {0, 0, 0};//黑色-circle
float[] rgb2 = {(float) 0, (float) 0, (float) 139};//蓝黑-concave
float[] rgb3 = {(float) 255, (float) 0, (float) 0};//红色-concave
float[] rgb4 = {(float) 0, (float) 255, (float) 0};//绿色-circle
float[] rgb5 = {(float) 255, (float) 255, (float) 0};//黄色-convex
float[] rgb6 = {(float) 139, (float) 69, (float) 19};//巧克力色-circle
float alpha = (float) 1;
Scatter scatter1 = tools.Setpoint(TruePFT1_Matrix, rgb1, alpha, 20);
Scatter scatter2 = tools.Setpoint(TruePFT2_Matrix, rgb2, alpha, 15);
Scatter scatter3 = tools.Setpoint(TruePFT3_Matrix, rgb3, alpha, 8);
Scatter scatter4 = tools.Setpoint(TruePFT4_Matrix, rgb4, alpha, 10);
Scatter scatter5 = tools.Setpoint(TruePFT5_Matrix, rgb5, alpha, 6);
Scatter scatter6 = tools.Setpoint(TruePFT6_Matrix, rgb6, alpha, 5);
Manytasking optimization MATP的更多相关文章
- theano scan optimization
selected from Theano Doc Optimizing Scan performance Minimizing Scan Usage performan as much of the ...
- [Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
控制台输出的时候显示一串这样的信息:[Project Name] was compiled with optimization - stepping may behave oddly; variabl ...
- Mvc 之System.Web.Optimization 压缩合并如何让*.min.js 脚本不再压缩
最近项目中用到了easy ui ,但是在配置BundleConfig 的时候出现了问题,easy ui的脚本jquery.easyui.min.js 压缩后出现各种脚本错误,总是莫名其妙的 i标量错误 ...
- MySQL Range Optimization
8.2.1.3 Range Optimization MYSQL的Range Optimization的目的还是尽可能的使用索引 The range access method uses a sing ...
- 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
今天,在.net4.5,mvc4下新建了个区域,运行起来就报这个错误: 命名空间"System.Web"中不存在类型或命名空间名称"Optimization"( ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- Tomcat APR & Linux Optimization
一.简介 APR(Apache portable Run-time libraries)模式:简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和响应性能, 也是Tomcat运行高 ...
- low-rank 的相关求解方法 (CODE) Low-Rank Matrix Recovery and Completion via Convex Optimization
(CODE) Low-Rank Matrix Recovery and Completion via Convex Optimization 这个是来自http://blog.sina.com.cn/ ...
- hdu 1232, disjoint set, linked list vs. rooted tree, a minor but substantial optimization for path c 分类: hdoj 2015-07-16 17:13 116人阅读 评论(0) 收藏
three version are provided. disjoint set, linked list version with weighted-union heuristic, rooted ...
随机推荐
- 洛谷P4180 【模板】严格次小生成树[BJWC2010] 题解
虽然中途写的时候有点波折,但是最后一发A,还是有点爽. 这虽然是个模板题,但还是涉及到许多知识的= = 首先我们求出一个最小生成树,并且求出其边权和\(ans\).那么现在考虑加入其它的边,每次加入在 ...
- 推荐系统(recommender systems):均值归一化(mean normalization)
均值归一化可以让算法运行得更好. 现在考虑这样一个情况:一个用户对所有的电影都没有评分,即上图所示 的Eve用户.现在我们要学习特征向量(假设n=2) 以及用户5的向量θ(5),因为用户Eve没有对任 ...
- 装饰器vue-property-decorator
接触到了新的vue项目,使用vue+ts+vue-property-decotator来进行项目的简化,一时间语法没有看懂,所以花时间学习这个装饰器的包. 1.装饰器 @Component(optio ...
- docker 服务无法启动
重装以后仍然不行,dockerd可以运行,但是systemctl start docker.service不行,后来在编辑一个文件时,提示没有空间可以保存,结果一查,发现服务器空间基本占满了, 通过 ...
- 临时加一条关于bootstrap的菜单栏方面的
**有些生疏,记住了**aria-expanded表示展开状态.默认为undefined, 表示当前展开状态未知.其它可选值:true表示元素是展开的:false表示元素不是展开的. aria-hid ...
- vim文本编辑器——删除、复制、剪切、更改某一个字符、替换、撤销、关键字搜索
1.删除: (1)删除光标所在处的字符: 如上图所示:点击一次x键只能删除一个字符. (2)删除光标所在处后的n个字符(nx): 删除前: 输入6x: (3)删除光标所在的行(dd): 删除前: 输入 ...
- Filters in ASP.NET Core
Filters in ASP.NET Core allow code to be run before or after specific stages in the request processi ...
- 04-树6 Complete Binary Search Tree (30 分)
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...
- Linux环境下安装Redis
记录一下Linux环境下安装Redis,按顺序执行即可,这里下载的是Redis5,大家可根据自己的需求,修改版本号就好了,亲测可行. 1.下载Redis安装包cd /usr/local/wget ht ...
- java的static和this
1>static:静态修饰符 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被sta ...