package com.ruoyi.platform.vo;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@ApiModel(description = "自动超参数寻优")
public class RayVo {
    private Long id;

    @ApiModelProperty(value = "实验名称")
    private String name;

    @ApiModelProperty(value = "实验描述")
    private String description;

    @ApiModelProperty(value = "主函数代码文件")
    private String mainPy;

    @ApiModelProperty(value = "总实验次数")
    private Integer numSamples;

    @ApiModelProperty(value = "参数")
    private List<Map<String, Object>> parameters;

    @ApiModelProperty(value = "手动指定需要运行的参数")
    private List<Map<String, Object>> pointsToEvaluate;

    @ApiModelProperty(value = "保存路径")
    private String storagePath;

    @ApiModelProperty(value = "搜索算法")
    private String searchAlg;

    @ApiModelProperty(value = "调度算法")
    private String scheduler;

    @ApiModelProperty(value = "指标")
    private String metric;

    @ApiModelProperty(value = "指标最大化或最小化，min or max")
    private String mode;

    @ApiModelProperty(value = "单次试验最大时间：单位秒，调度算法为ASHA，HyperBand时传入，每次试验的最大时间单位。测试将在max_t时间单位后停止。")
    private Integer maxT;

    @ApiModelProperty(value = "计算中位数的最小试验数：调度算法为MedianStopping时传入，计算中位数的最小试验数。")
    private Integer minSamplesRequired;

    private String  resource;

    private Integer computingResourceId;

    private String createBy;

    private Date createTime;

    private String updateBy;

    private Date updateTime;

    private Integer state;

    private String runState;

    @ApiModelProperty(value = "代码")
    private Map<String, Object> codeConfig;

    private Map<String, Object> dataset;

    @ApiModelProperty(value = "模型")
    private Map<String, Object> model;

    @ApiModelProperty(value = "镜像")
    private Map<String, Object> image;
}
